2个文件之间的差异(awk)

时间:2017-07-24 03:05:35

标签: linux awk diff

我尝试了Stack Overflow的一些解决方案,但没有取得好成绩。 我有2个文件,想要删除file1中提到的file2条目。

File1中

1,email1@domain.com,9
9,email9@domain.com,1
8,email8@domain.com,6
2,email2@domain.com,1
15,email15@domain.com,3
6,email6@domain.com,1

文件2

email1414@domain.com
email9@domain.com
email15@domain.com
email1919@domain.com

结果

1,email1@domain.com,9
8,email8@domain.com,6
2,email2@domain.com,1
6,email6@domain.com,1
你能帮帮我吗? 我尝试失败了:

awk -F',' 'NR==FNR{c[$1]++;next};c[$2] > 0' file2 file1

3 个答案:

答案 0 :(得分:3)

因为如果没有误报的可能性,这可能是最简单的

$ grep -vf file2 file1      

1,email1@domain.com,9   
8,email8@domain.com,6 
2,email2@domain.com,1 
6,email6@domain.com,1   

更好的想法是更改为固定字符串(而不是模式匹配)

$ grep -vfF file2 file1

答案 1 :(得分:1)

这是我的awk文件:

result = JSON.parse(result);

根据您的示例,它会打印file2中不在file2中的所有行。

答案 2 :(得分:1)

尝试关注问题并告诉我这是否对您有所帮助。

解决方案1:

awk 'FNR==NR{a[$0];next} ($2 in a){next} 1' File2 FS="," File1

解决方案第二:

awk 'FNR==NR{a[$0];next} !($2 in a)' File2 FS="," File1