我有一个像这样的文件:
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列(对于那些看起来像D的行),在这个例子中,128 + 10 = 138。
我用以下命令对第4列进行了总结:
cat file.txt |awk '{total+= $4} END {print total}'
发布于 2018-08-02 16:02:31
您只是省略了选择您的操作适用于哪些行的模式。
awk '$5 == "D" {total += $4} END {print total}' file.txt
在awk
中,模式应用于每一行输入,如果模式匹配,则应用该操作。如果没有模式(就像在您的尝试中那样),则将无条件地处理行。
发布于 2018-08-02 16:07:55
使用datamash
和sort
的解决方案:
cat file.txt | sort -k5 | datamash -W -g5 sum 4
sort -k5
,用于根据5
列进行排序。datamash
使用-W
指定空格为分隔符,-g5
按5th
列分组,最后使用sum 4
获取4th
列的和。它给出了这样的输出:
- 30
D 138
P 21
https://stackoverflow.com/questions/51657882
复制相似问题