1

Я ищу, чтобы найти строки, которые не являются дубликатами, например;

Текстовый файл 1:

cats 3
dogs 8
mice 4
pigs 10
...

Текстовый файл 2:

dogs 8
mice 4
cats 78
pigs 29
bird 6
...

Кошки и свиньи просто изменились, но теперь стали другими. Оба файла содержат «псы 8» и «мышей 4», поэтому вывод различных строк будет следующим:

cats 78
pigs 29
bird 6

Надеюсь, я искал способ сделать это в терминале Linux, как; команда input1.txt input2.txt diffferences.txt

1 ответ1

3

Если файлы хорошо отсортированы, вы можете сделать что-то простое, как это.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .