grep 查找某个单词,同时还提及文件中应该出现的其他单词

grep 查找某个单词,同时还提及文件中应该出现的其他单词

我在包含许多文件和子文件夹的文件夹中寻找单词“image”的出现。

常规 grep 命令(grep 和 'git grep')返回超过一千个匹配项。我该如何在 grep 命令中添加一些内容,告诉它,

“找到包含‘单词’的文件,但前提是同一文件中提到了‘记者’或‘出版商’这两个词

答案1

以下应该有效:

grep word `grep -E -l 'reporter|publisher'`

反引号中的命令grep将生成包含“reporter”或“publisher”的文件列表(-l告诉 grep 列出匹配的文件而不是提供通常的输出,-E以确保交替|有效),然后将其列为外部grep命令的参数,外部命令依次搜索“word”(-l如果您只想要匹配的文件列表,也可以添加到其中)。请注意,这不如将其写成单个正则表达式那么有效(它搜索的次数比绝对必要的次数要多),但通常比将其作为单个正则表达式更容易解释。

答案2

首先,建立一个文件列表reporter|publisher,然后使用该列表作为要搜索的文件的来源word

如果你使用确认, 你可以这样做:

ack -l 'reporter|publisher' | ack -x word

其中-x告诉第二次 ack 调用使用 stdin 上的文件列表作为要搜索的文件列表。

相关内容