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

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

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

  • как включить новый файл в патч
  • Kompare-подобный инструмент, который не нуждается в зависимостях kdelibs?
  • diff двух каталогов, но игнорировать расширения
  • Вывод различных строк при сравнении двух файлов
  • Использование diff, но игнорирование чисел
  • В Unix, как мне получить вывод из команды diff, чтобы выглядеть как справочная страница? Где я могу нажать «b» или «f», чтобы читать дальше или назад?
  • Копия Vimdiff выше / ниже
  • Редактирование Live diff-mode в vim
  • 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 
    Interesting Posts

    Как выполнить одну и ту же команду linux одновременно в нескольких вкладках / оболочках?

    Есть ли способ найти динамический публичный IP-адрес пользователя, используя cli в Debian?

    Как запустить программу при загрузке с определенным пользователем после запуска нескольких других служб?

    Как отключить поддержку мыши в терминале?

    как использовать регулярные выражения с помощью команды find для фильтрации пути?

    как заставить GRUB найти модули для многозадачных Linux LiveUSB?

    `docker logs foo | less` не доступен для поиска или прокрутки, но `docker logs foo 2> & 1 | меньше` является

    Проблемы с остановкой / ожиданием MySQL; "Невозможно соединить … через сокет"

    Сценарий или команда для замены параметров по умолчанию в файле / etc / user в AIX

    USB-накопитель WiFi не распознается BeagleBone Black

    Правило iptables для вывода порта и ip на экземпляр AWS

    Создание SBC, работающего как сетевой коммутатор, пожалуйста, помогите

    открытие ошибки kcheckpass / var / log / faillog

    расширение скобки и * расширение

    Как использовать GNOME Keyring с Python Keyring в виртуальной среде?

    Linux и Unix - лучшая ОС в мире.