如果第一列出现在另一个文件中,则从文件中删除行

时间:2016-08-29 20:24:27

标签: bash unix terminal

我必须这样的文件:

File1中:

id1 junk junk junk 

id2 junk junk junk 

id3 junk junk junk 

id4 junk junk junk

文件2:

id2

id3

如何从File1中删除在File2中具有id的2行。所以输出将是

id1 junk junk junk

id4 junk junk junk

谢谢

2 个答案:

答案 0 :(得分:2)

使用awk你可以这样做:

awk 'FNR==NR{a[$1]; next} !($1 in a)' file2 file1

id1 junk junk junk
id4 junk junk junk

或使用grep -v进行流程替换:

grep -vf <(sed 's/.*/^&[[:blank:]]/' file2) file1

id1 junk junk junk
id4 junk junk junk

答案 1 :(得分:2)

您可以告诉grep从file2

中排除所有内容

grep -vf file2 file1