比较两个文件,如果找到匹配项,则删除一行

时间:2014-02-18 17:31:50

标签: shell unix awk

我想比较两个文件。

如果file2的值与file1的前两列匹配,则需要从file1删除整行,并将结果打印到output,如下所示。

以下包含file1

的值
1,aplle,melle,cyborg
2,bplle,less,vgm
3,minipl,vicy,bgm
4,tag,mob,calic
6,Centurion,sa,hh

以下包含file2

的值
2,bplle
4,tag
5,Centurion

output必须包含以下内容:

1,aplle,melle,cyborg
3,minipl,vicy,bgm
6,Centurion,sa,hh

是否可以实现此awk

2 个答案:

答案 0 :(得分:1)

这个awk应该可以工作:

awk -F, 'FNR==NR{a[$1,$2];next} !(($1,$2) in a)' file2 file1
1,aplle,melle,cyborg
3,minipl,vicy,bgm
6,Centurion,sa,hh

答案 1 :(得分:0)

这也可以:grep -Fwvf file2 file1

  

-F
  将PATTERN解释为固定字符串列表,

     

-w
  只选择那些包含构成整个单词的匹配的行。

     

-v
  反转匹配感,选择不匹配的行。

     

-f文件
  从FILE获取模式,每行一个。