在第一个grep

时间:2017-09-06 05:39:59

标签: shell grep cut

我有两个文件file1file2以及一种模式pattern

patternfile1的{​​{1}}上使用grep,我会生成以下字符串:

cut

对于这些字符串中的每一个,我都要grep file2。我怎么能这样做?

目前,我手动执行此操作,但必须存在更好的方法。我可以使用for循环来做到这一点,但我想知道是否只能将第一个String1 String2 String3 String4 String5 grep的结果用于第二个cut,无论如何都可以。

注意: 如果需要任何其他信息,请告诉我。

2 个答案:

答案 0 :(得分:3)

您可以将process substitution-f选项一起使用:

grep -Ff <(grep -o 'pattern' file1) file2

答案 1 :(得分:3)

grep具有-f选项,这使得文件具有参数,并使用文件中的每一行作为模式。因此,您可以使用两个步骤:

$ grep pattern file1 > tmp-file
$ grep -f tmp-file file2 > output

在第一步中,您从第一个文件中提取行并将它们存储在tmp文件中。然后,第二步使用这组模式从第二个文件中提取匹配的行。

您可以将这些内容组合起来,并达到@anubhava指出的解决方案。