使用 awk 计算具有不同条件的行
count lines with different conditions using awk
我需要为 1 个文本文件获取具有 2 个不同条件的行数。
第一个条件是第三列的值小于 10,所以我可以通过以下脚本来完成:
awk '<=10' DATA_File | wc -l
第二个条件是获取同一文件中的总行数,我可以通过以下方式获取:
awk 'END { print FNR}' DATA_File
或
awk '' DATA_File | wc -l
但是,我不知道如何将这些合并到单个字符串中的命令,这样我就可以将结果保存在一个单独的文件中,其中一个字符串由 "tab" 或 [=30 分隔=]由"number of string with <10"、"total number of strings"、"their ratio/ or percentage"
组成
例如文件是:
wer fre 11
grt o34 5
45f 123 45
我需要的输出是:
2 3 0.66/ or 66%
我可以在 python 上写一个小脚本来完成,但由于多种原因 bash 会更方便。
例如你可以说:
$ awk '<=10 {min10++} END {print min10, FNR, (FNR?min10/FNR:0)}' file
1 3 0.333333
或 print
并输出到 print ... > "new_file"
.
这样的文件
您还可以使用printf
来提供更好的格式:
$ awk '<=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 提供,用于防止跳零。
我需要为 1 个文本文件获取具有 2 个不同条件的行数。 第一个条件是第三列的值小于 10,所以我可以通过以下脚本来完成:
awk '<=10' DATA_File | wc -l
第二个条件是获取同一文件中的总行数,我可以通过以下方式获取:
awk 'END { print FNR}' DATA_File
或
awk '' DATA_File | wc -l
但是,我不知道如何将这些合并到单个字符串中的命令,这样我就可以将结果保存在一个单独的文件中,其中一个字符串由 "tab" 或 [=30 分隔=]由"number of string with <10"、"total number of strings"、"their ratio/ or percentage"
组成例如文件是:
wer fre 11
grt o34 5
45f 123 45
我需要的输出是:
2 3 0.66/ or 66%
我可以在 python 上写一个小脚本来完成,但由于多种原因 bash 会更方便。
例如你可以说:
$ awk '<=10 {min10++} END {print min10, FNR, (FNR?min10/FNR:0)}' file
1 3 0.333333
或 print
并输出到 print ... > "new_file"
.
您还可以使用printf
来提供更好的格式:
$ awk '<=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 提供,用于防止跳零。