我有一个看起来像这样的文件:
A B C 128 D
Z F R 18 -
M W A 1 -
T B D 21 P
Z F R 11 -
L W A 10 D
我正在寻找一种汇总第4列的方法(第5列的行看起来像D)在此示例中为:128 + 10 = 138。
我设法用以下命令总结了第四列:
cat file.txt |awk '{total+= $4} END {print total}'
答案 0 :(得分:3)
您只是省略了选择动作要应用于哪行的模式。
awk '$5 == "D" {total += $4} END {print total}' file.txt
在awk
中,将模式应用于输入的每一行,如果模式匹配,则将应用操作。如果没有模式(如您的尝试),则将无条件处理该行。
答案 1 :(得分:1)
具有datamash
和sort
的解决方案:
cat file.txt | sort -k5 | datamash -W -g5 sum 4
sort -k5
用于根据5
列进行排序。datamash
使用-W
来指定空格是分隔符,-g5
使用5th
列进行分组,最后使用sum 4
来获得{{ 1}}列。它给出以下输出:
4th