【问题标题】:grep'ing the files output from a previous grepgrep'ing 先前 grep 的文件输出
【发布时间】:2012-09-17 19:26:39
【问题描述】:

我不知道这是否可能,或者 grep 是错误的工具,还是什么,但我想做的是:

grep -rsI "some_string" *.c 

然后将找到结果的文件列表导入第二个 grep:

grep -rsI "second_string" <list of files from first grep>

我知道我可以通过以下方式将确切的行传递给第二个 grep:

grep -rsI "some_string" *.c | grep "second_string"

但这不是我正在寻找的不是,我不想只搜索以前命中的行,而是搜索这些行所在的整个文件。这甚至可能吗?有什么想法吗?

【问题讨论】:

    标签: linux grep pipe


    【解决方案1】:
    grep -rsIl "some_string" *.c | xargs grep -sI "second_string"
    

    【讨论】:

    • 有一个好方法可以将它放入 bash shell 中吗?类似:alias grep2='grep -rsIl $1 * | xargs grep $2' 但工作?
    • grep2() { grep -rsIl "$1" *.c | xargs grep "$2"; }
    【解决方案2】:

    使用-l 选项列出匹配的文件,然后使用xargs 命令对这些文件应用grep

    grep -l -rsI "some_string" *.c | xargs grep "second_string"
    

    【讨论】:

      猜你喜欢
      • 2023-02-20
      • 1970-01-01
      • 1970-01-01
      • 2013-03-12
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      • 1970-01-01
      • 2011-04-23
      相关资源
      最近更新 更多