diff, где строки в основном одни и те же, но не в порядке?

Я хочу разбить два набора правил mod_rewrite. Набор строк примерно на 90% идентичен, но порядок настолько отличается, что diff в основном говорит, что они совершенно разные.

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

2 Solutions collect form web for “diff, где строки в основном одни и те же, но не в порядке?”

sort можно использовать для получения файлов в одном порядке, чтобы diff мог их сравнить и определить различия. Если у вас есть подстановка процесса, вы можете использовать это и не создавать новые отсортированные файлы.

 diff <(sort file1) <(sort file2) 

Создал сценарий для этого, который сохраняет последовательность строк в целости . Вот аннотированная версия важных строк:

 # Strip all context lines diff_lines="$(grep '^[><+-] ' | sed 's/^+/>/;s/^-/</')" || exit 0 # For each line, count the number of lines with the same content in the # "left" and "right" diffs. If the numbers are not the same, then the line # was either not moved or it's not obvious where it was moved, so the line # is printed. while IFS= read -r line do contents="${line:2}" count_removes="$(grep -cFxe "< $contents" <<< "$diff_lines" || true)" count_adds="$(grep -cFxe "> $contents" <<< "$diff_lines" || true)" if [[ "$count_removes" -eq "$count_adds" ]] then # Line has been moved; skip it. continue fi echo "$line" done <<< "$diff_lines" if [ "${line+defined}" = defined ] then printf "$line" fi 
  • Проверка выполнения последней команды diff
  • diff два больших файла CSV (каждый 90 ГБ) и вывод на другой csv
  • Сравнение двух файлов в unix и awk
  • Ошибка с if : Слишком много аргументов
  • diff -r только для определенных типов файлов
  • diff потребляет огромное количество памяти и процессора
  • Упаковка каталога и его содержимого в виде патча diff?
  • Инструмент для сравнения визуальных каталогов
  • В Unix, как мне получить вывод из команды diff, чтобы выглядеть как справочная страница? Где я могу нажать «b» или «f», чтобы читать дальше или назад?
  • Как узнать, является ли текстовый файл подмножеством другого
  • Что означает «патч неожиданно заканчивается в середине линии»?
  • Как сравнить два архива tar (включая содержимое файла, новые / удаленные файлы, символические ссылки)?
  • Linux и Unix - лучшая ОС в мире.