【问题标题】:Passing multiple strings to grep from txt file将多个字符串从 txt 文件传递​​给 grep
【发布时间】:2021-02-09 13:28:36
【问题描述】:

是否可以在 grep 命令中从文本文件中传递多个字符串(不是手动)?

例如:

我的字符串文件包含:

aa
cc
dd

还有一个搜索文件包含:

aa text1
bb text2
cc text3
dd text4

我想要这个输出:

aa text1
cc text3
dd text4

我希望 stringfile 的内容像这样在 grep 命令中传递:

cat searchfile.txt | grep (stringsfile.txt)

我有一个包含数千条记录的字符串文件,无法手动添加 grep 字符串。

【问题讨论】:

    标签: string file grep


    【解决方案1】:

    通过一次调用 grep 来完成这项工作是不可能的,但使用 awk 是微不足道且司空见惯的:

    $ awk 'NR==FNR{a[$1]; next} $1 in a' stringsFile searchFile
    aa text1
    cc text3
    dd text4
    

    【讨论】:

      【解决方案2】:
      grep -f stringsfile.txt searchfile.txt
      

      这里,grep 使用选项-f file:从文件中获取模式,每行一个。

      另请参阅:
      grep manual

      【讨论】:

      • 这会对许多可能的输入值产生误报。
      猜你喜欢
      • 1970-01-01
      • 2021-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多