使用 grep 仅获取每个文件中的第一个匹配项

meg*_*nce 5 awk grep

我有一堆标记为file1.out, file2.out, file3.out, ...,的输出文件fileN.out

所有这些文件中都有一个名为“keystring”的字符串的多个实例。然而,只有“keystring”的第一个实例对我来说才有意义。其他线路不需要。

当我这样做时, grep 'keystring' *.out 我会到达所有文件,并且它们会输出keystring.

当我这样做时grep -m1 'keystring' *.out,我只在有密钥字符串时获取实例file1.out

我想提取所有这些输出文件中密钥字符串首先出现的行。我怎样才能做到这一点?

anu*_*ava 3

您可以使用awk

awk '/keystring/ {print FILENAME ":", $0; nextfile}' *.out
Run Code Online (Sandbox Code Playgroud)

nextfile一旦打印了当前文件中的第一个匹配项,就会移至下一个文件。