2011-02-25 257 views
13

我想通過awk統計表格中的所有記錄,但是NR打印記錄了所有記錄的不是總數的記錄。我甚至嘗試:使用awk來計算記錄數量

NF==4,count++{print count} 

但它不能正常工作 我怎麼能做到這一點通過AWK?

回答

26

請在下次顯示您的文件樣本以及您想要如何處理它(顯示所需的輸出)。只是猜你想要什麼,

awk 'NF==4{count++} END {print count}' file 

記錄總數由NR表示。

awk 'END{print NR}' file1 file2 

當前記錄總數由FNR表示。

awk 'END{print FNR}' file 
+1

+1你的最後命令打印的記錄數在一組的最後一個文件的文件(或只有一個文件的文件)。我會使用'NR',因此結果不會令人困惑。如果你想每個文件計數:'awk'FILENAME!= prevfn {print prevfn,prevc} {prevfn = FILENAME; prevc = FNR} END {print prevfn,prevc}'文件*' – 2011-02-25 11:38:14

11

我想你是指總的行數。一般來說,你應該使用wc -l <filename>。 如果你想這樣做,用awk,使用

awk '{print NR}' | tail -1 

如果你只是想用awk,做

awk 'BEGIN{i=0}{i++;}END{print i}' <filename> 
+0

'wc -l [file]'顯示換行符的數量,而不是行數。它會報告一個比實際行數小一點的數字。 @kurumi是對的。 – 2017-06-15 11:56:16