Как мне узнать строки файла, которых нет в другом файле?

У меня есть два файла A и B.

Я хочу выяснить, какие строки файла B отсутствуют в файле A.

Как мне это сделать? Строки могут быть в любой позиции в файле A

4
задан 20 December 2013 в 02:35

3 ответа

Просто

grep -vxf A B

Если вам нужен также номер строки не совпадающих строк:

grep -nvxf A B

Если B имеет несколько не совпадающих одинаковых строк, и вы хотите только распечатать одинаковые строки один раз, затем

grep -vxf A B | sort | uniq  
0
ответ дан 20 December 2013 в 02:35

вы можете использовать команду sdiff. Использование: sdiff file1.txt file2.txt

Вы можете иметь строки в любом месте.

Каковы необычные линии, они будут обозначены символом >. Посмотрите на изображение ниже. Пример:

enter image description here

0
ответ дан 20 December 2013 в 02:35
  • 1
    Кто-то downvoted мой ответ, но didn' t говорят почему. Я желаю, чтобы они прокомментировали бы, таким образом, у меня мог быть шанс обратиться к беспокойству. – Doug Smythies 14 July 2015 в 21:34

Вы говорите, что линии могут быть в любой позиции, но если позиция не важна для вас (просто хотите узнать различия), используйте comm:

   Compare sorted files FILE1 and FILE2 line by line.

   With  no  options,  produce  three-column  output.  Column one contains
   lines unique to FILE1, column two contains lines unique to  FILE2,  and
   column three contains lines common to both files.

Это требует, чтобы файлы были отсортированы, к счастью, sort может помочь с этим. Вы можете sort A > A.sorted отсортировать его, сделать что-то похожее с B, а затем:

comm -1 -3 A.sorted B.sorted

это выведет «строки, уникальные для FILE2», в данном случае это B.sorted.

Вы также можете выполнить внутреннюю сортировку, набрать команду немного сложнее, но вы бы сохранили несколько шагов:

comm -1 -3 <(sort A) <(sort B)
0
ответ дан 20 December 2013 в 02:35

Другие вопросы по тегам:

Похожие вопросы: