A: XXX (Done after 2 rounds)
A: YYY (Done after 1 rounds)
A: ZZZZ (Done after 4 rounds)
A: XXX (Done after 2 rounds)
A: ZZZZ (Done after 1 rounds)
A: YYY (Done after 2 rounds)
A: YYY (Done after 1 rounds)
对于上述文件,我要提取某些名称,例如XXX、YYY、ZZZZ以及每个名称的轮次数。
最后,我期望的结果是:
XXX 2 2
YYY 1 2 1
ZZZZ 4 1
我觉得我应该使用sed或awk,但不知道如何使用它们。有没有好的解决办法?谢谢。
最佳答案
awk '{ names[$2] = names[$2] " " $5; } END { for (name in names) print name " " names[name] }' file
说明:
每个输入行都传递给命令
names[$2] = names[$2] " " $5
,该命令创建一个名为names
的数组,该数组的索引不是数字——它们是在输入行中显示为第二个字段的单词:XXX
、YYY
和ZZZZ
。它们的值在每行的第5个字段中累积相应的数字。当输入文件用完时,
END
将遍历索引名称,打印每个名称,后跟它的累积数字字符串。关于bash - 使用bash脚本提取某些类型名称和相应的数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9385513/