與另一篇文章相關我有... parsing a sql string for integer values with multiple delimiters, 在哪裏我可以很容易地完成與UNIX工具(ahem)相同。我發現它比預期的更雜亂。我正在尋找awk解決方案。對以下內容有何建議?awk:計算從單個字段中的值與多個分隔符的總和
這是我原來的職位,轉述:
#
我想用awk來解析從平面文件,它是管道分隔源數據。其中一個字段的格式如下。我的最終狀態是對字段中的整數進行求和,但我的問題在於查看使用awk對字段中的數值求和的方法。子格式的模式將始終在希望的整數前面加一個代字號(〜),後面加一個星號(*),除了字段中的最後一個。子字段的數量也可能會有所不同(我的示例有5個,但可能更多或更少)。 4個字符的TAG名稱並不重要。
所以這裏是一個示例:
| GADS〜55.0 * BILK〜0.0 * BOBB〜81.0 * HETT〜32.0 * IGGR〜51.0 |
從這個例子中,我想要處理的是最後一個數字219.同樣,我可以將總和部分作爲下一步;只是對獲取數字感興趣。
#
我的解決方案目前需要執行兩個awk的語句。首先使用gsub在目標字段中用'*'分隔符替換'〜',77:
awk -F'|' 'BEGIN {OFS =「|」} {gsub(「〜」,「*」,$ 77); print}'file_1> file_2
我的第二個awk語句是計算目標字段77上的數字總和,它是最後一個字段,並將其替換爲計算值。它建立在文件中其他地方不會有其他星號(*)的假設之上。我沒關係。它適用於大多數例子,但不適用於其他例子,我的直覺告訴我這不是一個可靠的答案。有任何想法嗎?我在另一篇關於SQL的建議很棒,但我無法實現它們的原因是無關緊要的。
awk -F'*''{if(NF> = 2){s = 0; for(i = 1; i < = NF; i ++)s = s + $ i;打印SUBSTR($ 1,1,長度($ 1)-4)S;}其他打印}」 file_2> file_3
[編輯]你的問題解決掉所有的內聯歷史,只是後您的當前問題包括[MCVE]以簡潔,可測試樣品的輸入和預期的輸出。 –