Поиск общих строк в двух файлах с пустыми строками
У меня есть два почти идентичных файла, одинаковое количество строк, и это код. Я пытаюсь создать файл общих строк между этими двумя файлами, а также есть пустые строки, где строки разные. Я пытался с помощью 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)