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

标签 linux awk diff

我尝试了 Stack Overflow 中的许多解决方案,但没有获得满意的结果。 我有 2 个文件,想从 file1 中删除 file2 中提到的条目。

文件1

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

最佳答案

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

$ 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

关于linux - 2个文件之间的差异(awk),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45272011/

相关文章:

c++ - 无法在 Linux 上运行 BRIEF_demo

c - 如何绕过awk的点缀缩写?

svn - 可以强制 svn diff 显示 svn cp'd 文件吗?

python - 我如何搜索目录并找到与正则表达式匹配的文件?

regex - Gnu sed 删除单引号

linux - 我可以在新磁盘上使用ubuntu lvm吗?

bash - 如何用另一个文件的映射值替换 csv 文件中的第 n 个字段?

awk - 如何使用 awk 跨多个列替换变量?

version-control - 是否有任何 "smart"/context-aware diff/merge 工具?

git - interdiff 做 diff 做不到的是什么?