2 大型文本文件,查找不重复的行 linux 终端

2 大型文本文件,查找不重复的行 linux 终端

我正在寻找不重复的行,例如;

文本文件1:

猫 3
狗 8
老鼠 4
猪 10
...

文本文件2:

狗 8
老鼠 4
猫 78
猪 29
鸟 6
...

猫和猪只是被改变了,但现在不同了。两个文件都包含“狗 8”和“老鼠 4”,因此不同行的输出将是:

猫 78
猪 29
鸟 6

我希望找到一种可以在 Linux 终端中完成此操作的方法,例如:命令 input1.txt input2.txt diffrences.txt

答案1

如果文件排序很好,您可以做一些同样简单的事情。

diff -u file1 file2

如果文件未排序,而您想找到唯一的行,您可以执行类似的操作。

diff -u <(sort file1) <(sort file2)

鉴于您的上述文件,您将会看到这一点。

$ diff -u <(sort file1) <(sort file2)
--- /dev/fd/63  2014-09-19 15:40:20.223409721 -0700
+++ /dev/fd/62  2014-09-19 15:40:20.219409761 -0700
@@ -1,4 +1,5 @@
-cats 3
+bird 6
+cats 78
 dogs 8
 mice 4
-pigs 10
+pigs 29

有没有办法只获取“+”输出而不是所有“-”线等,

当然,只需通过 grep 将其堆叠即可。

$ diff -u <(sort file1) <(sort file2) | grep '^+'
+++ /dev/fd/62  2014-09-19 15:50:18.293474221 -0700
+bird 6
+cats 78
+pigs 29

相关内容