簡體   English   中英

使用awk計數具有不同條件的行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM