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