比较2个文件并仅显示部分匹配的行

时间:2015-08-19 20:46:11

标签: linux bash command-line

文件#1示例:

one two three 
four five six 
seven eight nine
eleven 

文件#2示例:

 two
 five
 nine.not
 eleven

我想在文件#1上找到任何行,其中包含文件#2上的任何单词,示例输出:

one two three
four five six 
eleven

我试图看看是否有办法在linux命令行中执行此操作,但尚未成功。任何想法?

由于

2 个答案:

答案 0 :(得分:4)

你可以尝试:

grep -f file2 file1

-f选项从file2获取模式(每行一个)

修改

@Barmar评论

grep -F -w -f file2 file1

使用-w选项时,未选择eleveneleven之类的行

答案 1 :(得分:1)

您可以使用此awk命令:

awk 'FNR==NR{a[$1]; next} {for (i in a) if (index($0, i)) print}' file2 file1
one two three
four five six
eleven