我正在运行一个返回一个非常大的字符串的命令。返回的字符串看起来像
“foofoofoofoo Verification已完成:6条消息.foo foo foo 验证完成:0报告消息.foofoofoofoofoofoofoo 验证完成:报告2条消息。 foo foo foo“
我希望解析此输出并获取“Verification Completed:”之后返回的所有值的总和,在本例中为8。
注意:foo可以是任何输出&验证已完成#报告的消息可在字符串输出中多次出现。
我正在寻找使用awk / grep来做到这一点。有什么建议?我不是一个巨大的unix / bash家伙。
答案 0 :(得分:3)
使用gnu awk:
awk '$1~/^[0-9]+$/{s+=$1} END{print s}' RS='Verification Completed:' file
8
编辑:在您提供的输入上:
awk '$1~/^[0-9]+$/{s+=$1} END{print s}' RS='Verification completed: ' file
54
答案 1 :(得分:2)
我的解决方案:
egrep -o "Verification Completed: \d+" | sed "s/Verification Completed: //" | paste -s -d+ - | bc