Подібно до diff
параметрів, ви можете використовувати comm
команду з підстановками процесів і sort
( comm
вимагає, щоб файли, над якими вона працює, були відсортовані). Це дозволить вам зосередитись лише на звичайних рядках, просто на рядках, що знаходяться в одному або іншому файлі, використовуючи -1
для придушення рядків лише у першому файлі, -2
придушення рядків лише у другому файлі або -3
придушення рядків в обох, так що перегляньте всі рядки, що знаходяться лише в першому файлі, а не в другому, який ви могли зробити
comm -23 <(sort file1) <(sort file2)
Звичайно, якщо ви хочете, що ви можете також розглянути можливість використання grep
подібних
grep -vFxf file2 file1
який буде розглядати рядки file2
як шаблони і друкувати лише рядки з file1, які не відповідають ( -v
) при обробці рядків з ( -f
), file2
як фіксованих рядків ( -F
), які повинні відповідати всьому рядку ( -x
).
grep
Рішення має перевагу , не потребуючи для сортування файлів, але він перевіряє тільки для рядків в одному з файлів, які не в іншому, а не в обох напрямках одночасно.
comm
потрібні відсортовані файли. (Так, ви згадуєте про це побічно, але легко не помітити те, як ви це висловили). Крім того,comm
для цього сценарію набагато ефективніше, ніжdiff
.grep
Рішення може легко запустити з пам'яті , якщоfile2
велика (експоненціальне роздуття при перетворенні НКА в ДКА), у нас було питання про це не так давно.