使用bash脚本提取某些类型名称和相应的数字

use*_*398 2 bash awk sed extract

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)
Run Code Online (Sandbox Code Playgroud)

对于上述文件,我想提取某些名称,例如XXX,YYY,ZZZZ以及每个名称的轮数.

在最后,我期望的结果是这样的:

XXX 2 2
YYY 1 2 1
ZZZZ 4 1
Run Code Online (Sandbox Code Playgroud)

我觉得我应该使用sed或awk,但不知道如何使用它们.有没有人有好的解决方案?非常感谢.

Ada*_*iss 5

awk '{ names[$2] = names[$2] " " $5; } END { for (name in names) print name " " names[name] }' file
Run Code Online (Sandbox Code Playgroud)

说明:

每个输入线被传递到命令names[$2] = names[$2] " " $5,它创建了一个名为的数组names,其指数是不是数字-它们出现在你的输入线的第二场的话:XXX,YYY,和ZZZZ.它们的值在每行的第5个字段中累积相应的数字.

当输入文件耗尽时,END迭代索引名称,打印每个名称,后跟其累计数字串.