[英]count lines with different conditions using awk
我需要獲取1個文本文件的2種不同條件的行數。 第一個條件是第三列的值小於10,因此我可以通過以下腳本進行操作:
awk '$3<=10' DATA_File | wc -l
第二個條件是在我可以通過的同一文件中獲取行總數:
awk 'END { print FNR}' DATA_File
要么
awk '$3' DATA_File | wc -l
但是,我不知道如何將它們合並到單個字符串中的命令中,這樣我就可以將結果保存在一個單獨的文件中,其中一個字符串由“ tab”或“ space”分隔,其中“ tab”或“ space”由“ <10”,“字符串總數”,“其比率/或百分比”
例如文件是:
wer fre 11
grt o34 5
45f 123 45
我需要的輸出是:
2 3 0.66/ or 66%
我可以在python上編寫一個小型腳本來執行此操作,但是由於多種原因,bash會更加方便。
例如,您可以說:
$ awk '$3<=10 {min10++} END {print min10, FNR, (FNR?min10/FNR:0)}' file
1 3 0.333333
或者print
並輸出到諸如print ... > "new_file"
類的文件。
您還可以使用printf
提供更好的格式:
$ awk '$3<=10 {min10++} END {printf "%d %d %.2f%\n", min10, FNR, (FNR?min10/FNR:0)}' file
1 3 0.33%
(FNR?min10/FNR:0)
技巧是由Ed Morton提供的,用於防止零跳水。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.