Bash: 仅当第一列相同时快速查找第二列两个文件的差异
Bash: Quickly find diff of two files of second column only if the first column is the same
我有两个大文件,每个大约 7GB。只有当两个文件的第一列的编号相同时,我才想找出第二个文件的区别。这两个文件已排序,但可以有不同的行数。
第一个文件如下所示:(1.txt)
5 5
6 6
7 7
8 8
9 9
第二个文件如下所示:(2.txt):
3 3
4 4
5 5
6 6
7 4
8 4
9 9
输出应如下所示:
7 4
8 4
现在我有这个单线,但我不确定它是否可以更快:
mawk 'NR==FNR{a[]=; next} ( in a) && a[]!=' 1.txt 2.txt
如果文件按连接键排序,最简单(也是最快)的是
$ join file1 file2 | awk '!={print ,}'
7 4
8 4
我有两个大文件,每个大约 7GB。只有当两个文件的第一列的编号相同时,我才想找出第二个文件的区别。这两个文件已排序,但可以有不同的行数。
第一个文件如下所示:(1.txt)
5 5
6 6
7 7
8 8
9 9
第二个文件如下所示:(2.txt):
3 3
4 4
5 5
6 6
7 4
8 4
9 9
输出应如下所示:
7 4
8 4
现在我有这个单线,但我不确定它是否可以更快:
mawk 'NR==FNR{a[]=; next} ( in a) && a[]!=' 1.txt 2.txt
如果文件按连接键排序,最简单(也是最快)的是
$ join file1 file2 | awk '!={print ,}'
7 4
8 4