我正在寻找不重复的行,例如;
文本文件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