Есть ли способ скомбинировать два файла?

У меня есть два файла с одинаковыми строками.

Файл A:

command 1{ some code lines } command 2 command 3 command 4{ some code lines } 

Файл B:

 command 5 command 3 command 1{ some code lines } 

Я хотел бы иметь окончательный файл, содержащий это:

 command 1{ some code lines } command 2 command 3 command 4{ some code lines } command 5 

Порядок строк не имеет значения. Существует ли для этого существующий инструмент (или команда)?

  • Удаление дубликатов в большом текстовом списке
  • Могут ли каталоги и файлы наследовать те же разрешения, что и родительский каталог?
  • Сортировка файлов в каталогах, названных префиксом файла
  • Одно и то же имя в другом каталоге одинаково?
  • Почему скомпилированные программы создают копию с ~?
  • Сценарий оболочки для перемещения старых файлов?
  • Как изменить только mtime каталога?
  • синхронизировать конкретный файл рекурсивно, но только в подкаталогах, присутствующих в пункте назначения
  • 3 Solutions collect form web for “Есть ли способ скомбинировать два файла?”

    Я понял, что это должен быть комментарий .

    Я не помню, есть ли один инструмент, который сделает это. Но ! Вы можете добиться точного эффекта, котаируя файлы, а затем используя sort и uniq для выполнения задания:

     cat AB | sort | uniq 

    Это сбрасывает содержимое обоих файлов вместе, затем сортирует строки и удаляет любые дубликаты.

    Результат:

     command 1 command 2 command 3 command 4 command 5 

    Я не знаю, что будет объединять файлы так, как вы показали. Большинство слияющих / различающихся инструментов работают, имея некоторый уровень контекста вокруг различных строк, чтобы инструмент знал, что 2 файла могут объединяться в разных местах.

    То, что вы показываете, не имеет реального контекста, поэтому я не вижу, как эти инструменты смогут это сделать.

    Вы могли бы сделать что-то вроде:

     sed -e 's/_/_u/g;s/%/_p/g;/{$/s/^/%/;/{$/,/}$/b' -e 's/^/%/' AB | tr '%\n' '\n%' | sort -u | tr '%\n' '\n%' | sed 's/%//g;s/_p/%/g;s/_u/_/g' 

    Если файлы не содержат символ % , вы можете упростить его:

     sed -e '/{$/s/^/%/;/{$/,/}$/b' -e 's/^/%/' AB | tr '%\n' '\n%' | sort -u | tr -d '\n' | tr % '\n' 
    Linux и Unix - лучшая ОС в мире.