Awk 找出两个文件之间的差异

Awk 找出两个文件之间的差异,awk,Awk,我有以下情况: file1.dat类似于: 1 2 1 3 1 4 2 1 1 2 2 1 2 3 3 4 文件2.dat类似于: 1 2 1 3 1 4 2 1 1 2 2 1 2 3 3 4 我想找出第二个文件与第一个文件之间的差异。我试过使用grep-v-f file1 file2,但我真正的文件比这两个文件大,当我尝试使用它时,shell永远不会停止工作 结果应该是: 2 3 3 4 文件被排序,并且它们具有相同数量的元素。有没有办法找到awk的解决方案?似乎需要file2中不

我有以下情况:

file1.dat类似于:

1 2
1 3
1 4
2 1
1 2
2 1
2 3
3 4
文件2.dat类似于:

1 2
1 3
1 4
2 1
1 2
2 1
2 3
3 4
我想找出第二个文件与第一个文件之间的差异。我试过使用grep-v-f file1 file2,但我真正的文件比这两个文件大,当我尝试使用它时,shell永远不会停止工作

结果应该是:

2 3
3 4

文件被排序,并且它们具有相同数量的元素。有没有办法找到awk的解决方案?

似乎需要
file2
中不在
file1
中的行:

$ awk 'FNR==NR{a[$0];next}!($0 in a)' file1 file2
2 3
3 4
但是,使用
comm
更简单:

$ comm -13 file1 file2
2 3
3 4

似乎希望
file2
中的行不在
file1
中:

$ awk 'FNR==NR{a[$0];next}!($0 in a)' file1 file2
2 3
3 4
但是,使用
comm
更简单:

$ comm -13 file1 file2
2 3
3 4

可能重复:file2.dat中的所有行在file1.dat中不存在为什么
13
不在结果中?它在文件1中,但不在文件2中。是不是有区别?可能重复:file2.dat中的所有行在file1.dat中都不存在为什么
13
不在结果中?它在文件1中,但不在文件2中。这是不同的,对吗?为什么是-13?这意味着什么?阅读
man comm
-1
以抑制文件1特有的行,阅读
-3
以抑制两者共有的行。。在file2.comm中只保留唯一的行是一个很好的建议。我用它来比较一个单独的values@ChrisSeymour . 如果我想要在两个文件中都丢失的记录,我该怎么做呢?不仅仅是文件2,不想使用diff,而是awk来获取丢失的记录以及文件名。为什么是-13?这意味着什么?阅读
man comm
-1
以抑制文件1特有的行,阅读
-3
以抑制两者共有的行。。在file2.comm中只保留唯一的行是一个很好的建议。我用它来比较一个单独的values@ChrisSeymour . 如果我想要在两个文件中都丢失的记录(不仅仅是file2,不想使用diff,而是awk)来获取丢失的记录以及文件名,我应该做什么更改。