2016-10-07 87 views
0

如果我有類似如下的文件:用awk和grep加起來

23.00 33.44 abcd 44.44 abcd12345abcd 
33.00 22.22 qt 44.00 zlkm12345ksda 

...我想,每當我在圖案的中間遇到12345加起來的第一列第五欄,我會怎麼做呢?

回答

4

像這樣的東西?

awk '$5 ~ /12345/ { TOT = TOT + $1 } END { print TOT + 0 }' yourFile.txt 

(而不是一臺電腦,所以我的語法可能有點過。)

的第一位選擇你想要的線條和而END位只是打印什麼的累積更新總。

不需要grep(對於幾乎所有的意圖和目的,awk都是一樣好,如果不是更好),並且搜索僅限於您想要搜索的列。

+1

您可能希望在末尾添加'yourFile.txt'等。您可能希望在最後打印TOT + 0,以便如果沒有行匹配且TOT是空字符串,程序將打印0而不是任何內容。 –

+0

如何讓它打開一個文件?我知道這是非常基本的 – Identical

+0

@Identical:默認情況下awk假定第一個參數是要運行的程序,其他所有內容都是輸入文件。您可以用標誌稍微改變這種行爲,但這是默認設置。請注意,我的答案是用單引號引用整個程序 - 整個事件是第一個參數。 –