Bash 查找字符串中的所有子字符串计数
我正在运行一个返回非常大字符串的命令。返回的字符串如下所示 “foo验证已完成:6条报告的消息。foo foo 验证已完成:0条报告的邮件。foo 验证已完成:2条报告的消息。foo foo” 我希望解析这个输出并获得“验证完成:”之后返回的所有值的总和,在本例中为8 注意:foo可以是任何输出&验证完成#报告的消息可以在字符串输出中多次出现 我正在考虑使用awk/grep来实现这一点。有什么建议吗?我不是一个喜欢unix/bash的人。使用gnu awk:Bash 查找字符串中的所有子字符串计数,bash,unix,awk,Bash,Unix,Awk,我正在运行一个返回非常大字符串的命令。返回的字符串如下所示 “foo验证已完成:6条报告的消息。foo foo 验证已完成:0条报告的邮件。foo 验证已完成:2条报告的消息。foo foo” 我希望解析这个输出并获得“验证完成:”之后返回的所有值的总和,在本例中为8 注意:foo可以是任何输出&验证完成#报告的消息可以在字符串输出中多次出现 我正在考虑使用awk/grep来实现这一点。有什么建议吗?我不是一个喜欢unix/bash的人。使用gnu awk: awk '$1~/^[0-9]+$/
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
我的解决方案:
egrep -o "Verification Completed: \d+" | sed "s/Verification Completed: //" | paste -s -d+ - | bc
我认为这很接近,但下面是我尝试运行命令时发生的情况。我对文件做了一个“cat”,它没有工作,因为在你的问题中,你已经完成了
但你的输入数据已经完成了(小写c
)很好,如果支持look-behinds,它可以短一点:grep-oP'(?