如何使用一组单词进行 grep 搜索

101

我有一个文件A,其中包含100个单词,每个单词之间由换行符分隔。我想搜索文件B,以查看其中是否包含文件A中的任何单词。

我尝试了以下方法,但对我来说没有用:

grep -F A B
2个回答

140
您需要使用选项-f
$ grep -f A B

选项-F执行固定字符串搜索,而-f用于指定模式文件。如果文件只包含固定字符串而不是正则表达式,则可能需要两者都使用。

$ grep -Ff A B

您可能还需要-w选项,以仅匹配整个单词:

$ grep -wFf A B

阅读man grep可了解所有可能的参数及其功能描述。


4
如果您不想使用正则表达式,那么-F参数是否只是一种优化? - Simd
在目录树B中查找文件A中所有单词的出现情况,仅列出B中所有匹配项的文件名,您有何建议? - zealoushacker
@zealoushacker -H 用于打印文件名。 - Brandon Langley

3

如果要在大文件中查找很长的单词列表,使用egrep可能更有效:

remove the last \n of A
$ tr '\n' '|' < A > A_regex
$ egrep -f A_regex B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接