我需要获得1个文本文件的2个不同条件的行数。 第一个条件是第三列的值小于10,所以我可以通过以下脚本来完成:
awk '$3<=10' DATA_File | wc -l
第二个条件是获取同一个文件中的总行数,我可以得到:
awk 'END { print FNR}' DATA_File
或
awk '$3' DATA_File | wc -l
然而,我不知道的是如何将这些命令合并到单个字符串中,这样我就可以将结果保存在一个单独的文件中,其中一个字符串由“tab”或“space”分隔,由“number”组成字符串的数量为&lt; 10“,”字符串总数“,”它们的比率/或百分比“
例如文件是:
wer fre 11
grt o34 5
45f 123 45
我需要的输出是:
2 3 0.66/ or 66%
我可以在python上编写一个小脚本,但是由于多种原因bash会更方便。
答案 0 :(得分:3)
例如,您可以说:
$ 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提供,用于防止潜水为零。