Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 查找字符串中的所有子字符串计数_Bash_Unix_Awk - Fatal编程技术网

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

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]+$/

我正在运行一个返回非常大字符串的命令。返回的字符串如下所示

“foo验证已完成:6条报告的消息。foo foo 验证已完成:0条报告的邮件。foo 验证已完成:2条报告的消息。foo foo”

我希望解析这个输出并获得“验证完成:”之后返回的所有值的总和,在本例中为8

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

我正在考虑使用awk/grep来实现这一点。有什么建议吗?我不是一个喜欢unix/bash的人。

使用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
我的解决方案:

egrep -o "Verification Completed: \d+" | sed "s/Verification Completed: //" | paste -s -d+ - | bc

我认为这很接近,但下面是我尝试运行命令时发生的情况。我对文件做了一个“cat”,它没有工作,因为在你的问题中,你已经完成了
但你的输入数据已经完成了
(小写
c
)很好,如果支持look-behinds,它可以短一点:
grep-oP'(?