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

Awk 使用grep仅获取每个文件中的第一个匹配项,awk,grep,Awk,Grep,我有一堆输出文件,标签为file1.out,file2.out,file3.out,…,fileN.out 所有这些文件中都有一个名为“keystring”的字符串的多个实例。然而,只有“keystring”的第一个实例对我有意义。其他行不是必需的 当我这样做的时候 grep'keystring'*.out 我访问所有文件,它们输出keystring的每个实例 当我执行grep-m1'keystring'*.out时,我仅在file1.out具有keystring时获取实例 我想提取所有这些输出

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

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

当我这样做的时候
grep'keystring'*.out
我访问所有文件,它们输出
keystring
的每个实例

当我执行
grep-m1'keystring'*.out
时,我仅在
file1.out
具有keystring时获取实例


我想提取所有这些输出文件中最早出现keystring的行。我如何才能做到这一点?

您可以使用
awk

awk '/keystring/ {print FILENAME ":", $0; nextfile}' *.out

nextfile
将在打印当前文件的第一个匹配项后立即移动到下一个文件。

使用
find-exec
如下所示:

find-名称'*.out'-exec grep-m1'键串'{}\

另请参见: