我有两个文件file1
和file2
以及一种模式pattern
。
在pattern
和file1
的{{1}}上使用grep,我会生成以下字符串:
cut
对于这些字符串中的每一个,我都要grep file2。我怎么能这样做?
目前,我手动执行此操作,但必须存在更好的方法。我可以使用for循环来做到这一点,但我想知道是否只能将第一个String1
String2
String3
String4
String5
和grep
的结果用于第二个cut
,无论如何都可以。
注意: 如果需要任何其他信息,请告诉我。
答案 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指出的解决方案。