【问题标题】:How to grep with a list of words如何使用单词列表进行grep
【发布时间】:2013-07-25 16:08:37
【问题描述】:

我有一个文件 A,里面有 100 个单词,用新行分隔。我想搜索文件 B 以查看文件 A 中是否出现任何单词。

我尝试了以下方法,但对我不起作用:

grep -F A B

【问题讨论】:

    标签: grep


    【解决方案1】:

    您需要使用选项-f:

    $ grep -f A B
    

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

    $ grep -Ff A B
    

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

    $ grep -wFf A B
    

    阅读man grep,了解所有可能的论点及其作用。

    【讨论】:

    • 如果您不想使用正则表达式,-F 是否只是一种优化?
    • 如何在目录树B中查找文件A中所有出现的单词,只列出B中所有匹配项的文件名?
    • @zealoushacker -H 也打印文件名。
    【解决方案2】:

    要在大文件中查找很长的单词列表,使用 egrep 会更高效:

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

    【讨论】:

      猜你喜欢
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      • 2013-04-23
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 2021-11-17
      相关资源
      最近更新 更多