Stack Overflow 已经有一些关于计算字符串出现次数的精彩文章(例如“foo”),例如:使用 grep 计算大量文件中字符串的所有出现次数。但是,我一直无法找到一个稍微复杂的变体的答案。
foo:[*whatever*]*whatever else*
假设我想计算一个文件夹中有多少个“”实例;我会做:
grep -or 'foo:[(.*)]' * | wc -l
我会得到“55”(或任何计数)。但是,如果我有这样的文件怎么办:
foo:bar abcd
foo:baz efgh
not relevant line
foo:bar xyz
我想计算有多少个实例foo:bar
与多少个foo:baz
s 等?换句话说,我希望输出类似于:
bar 2
baz 1
我认为有一些方法可以链接grep
s,或者使用与 s 不同的命令wc
,但我不知道它是什么......那里的任何 shell 脚本专家有什么建议吗?
PS我意识到,如果我知道可能的子字符串集(即,如果我知道只有“foo:bar”和“foo:baz”)这会更简单,但不幸的是,有一组“可能发生的事情” "之后foo:
是未知的。