过滤包含固定数量模式出现的行

Rah*_*hul 6 grep text-processing

假设有文件

foo bar cat dog
foo foo cat bar
bar foo foo foo
Run Code Online (Sandbox Code Playgroud)

我们如何 grep 出现特定次数的行,foo例如,如果数字为1,则仅应打印示例文件中的第一行?

Kus*_*nda 6

$ grep 'foo' file | grep -v 'foo.*foo'
Run Code Online (Sandbox Code Playgroud)

首先挑出所有包含 的行foo,然后删除所有行,foo然后是foo该行某处的另一个。

如果所有行都包含至少一个foo(如您的示例),您可以跳过第一个grep.

对于“我如何grep恰好出现N次字符串?”的一般解决方案: grep对于至少有N 个匹配项的行,然后删除具有N+1 个匹配项(或更多)的行。