Поиск общих строк в двух файлах с пустыми строками

У меня есть два почти идентичных файла, одинаковое количество строк, и это код. Я пытаюсь создать файл общих строк между этими двумя файлами, а также есть пустые строки, где строки разные. Я пытался с помощью comm, и это работает хорошо, но не дает мне пустые строки, которые мне нужны на плохих строках, просто удаляет строки, а общий файл короче (количество строк).

Вот что я попробовал:

comm -1 -2 file1 file2

1 ответ

comm нужны отсортированные файлы. Итак, вы можете использовать подстановку команд следующим образом:

comm -12 <(sort file1) <(sort file2)

Если вы хотите пропустить пустые строки (пробелы), то:

comm -12 <(grep -Ev '^[ ]+$' file1 | sort) <(grep -Ev '^[ ]+$' file2 | sort)

Чтобы пропустить пустые строки с пробелами или табуляцией:

comm -12 <(grep -Ev $'^[ \t]+$' file1 | sort) <(grep -Ev $'^[ \t]+$' file2 | sort)
Другие вопросы по тегам