如何管理grep的输出作为另一个grep的搜索模式?
举个例子:
grep <Search_term> <file1> | xargs grep <file2>
我希望第一个grep的输出作为第二个grep的搜索项.上面的命令将第一个grep的输出视为第二个grep的文件名.我尝试使用-e第二个grep 的选项,但它也不起作用.
Nat*_*man 14
你需要使用xargs的-i开关:
grep ... | xargs -ifoo grep foo file_in_which_to_search
这将采用-i(foo在这种情况下)之后的选项,并将命令中的每个匹配项替换为第一个输出grep.
这与:
grep `grep ...` file_in_which_to_search
Pau*_*lin 12
尝试
grep ... | fgrep -f - file1 file2 ...
如果使用Bash,那么你可以使用反引号:
> grep -e "`grep ... ...`" files
的-e标志和双引号在那里,以确保从初始任何输出grep与一个连字符开始不然后解释为一个选项,以第二grep.
请注意,双引号技巧(也确保将grep的输出视为单个参数)仅适用于Bash.它似乎不适用于(t)csh.
另请注意,反引号是将一个程序的输出转换为另一个程序的参数列表的标准方法.并非所有程序都以(f)grep的方式从stdin读取参数的方便方法.
我想在当前目录中的文件名(使用 find 找到)中有特定模式的文件(使用 grep)中搜索文本。我使用了以下命令:
 grep -i "pattern1" $(find . -name "pattern2")
这里模式2是在文件名中的模式,模式1是模式搜索中的文件匹配模式2。
编辑:不是严格的管道,但仍然相关且非常有用......