查找字符串中的所有子字符串计数

时间:2014-06-09 19:31:12

标签: bash unix awk

我正在运行一个返回一个非常大的字符串的命令。返回的字符串看起来像

  

“foofoofoofoo Verification已完成:6条消息.foo foo foo   验证完成:0报告消息.foofoofoofoofoofoofoo   验证完成:报告2条消息。 foo foo foo“

我希望解析此输出并获取“Verification Completed:”之后返回的所有值的总和,在本例中为8。

注意:foo可以是任何输出&验证已完成#报告的消息可在字符串输出中多次出现。

我正在寻找使用awk / grep来做到这一点。有什么建议?我不是一个巨大的unix / bash家伙。

2 个答案:

答案 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