Заменить шаблон в файле с шаблоном во втором файле

Я хочу заменить часть данных файла данными из другого файла.

Предположим, что у file1 есть данные, как написано ниже, и у file2 есть некоторые данные, которые я хочу хранить и заменять данные file1 из file2 из шаблона запуска: // +++ CUSTOMIZATION SETTINGS START +++ и шаблон конца: // +++ CUSTOMIZATION SETTINGS END +++ .

В file1 :

 ANJALI NISHA // +++ CUSTOMIZATION SETTINGS START +++ WE WILL BE ON LEAVE FOR TODAY // +++ CUSTOMIZATION SETTINGS END +++ PREETI MONA 

В file2 :

 MANISH MADHVI // +++ CUSTOMIZATION SETTINGS START +++ WELCOME ALL // +++ CUSTOMIZATION SETTINGS END +++ NISHA TUSHAR 

В file3 качестве вывода:

 ANJALI NISHA // +++ CUSTOMIZATION SETTINGS START +++ WELCOME ALL // +++ CUSTOMIZATION SETTINGS END +++ PREETI MONA 

One Solution collect form web for “Заменить шаблон в файле с шаблоном во втором файле”

 $ awk '/SETTINGS START/,/SETTINGS END/ {if (FNR==NR) {a=a"\n"$0}} FNR==NR{next} /SETTINGS START/{print substr(a,2)} /SETTINGS START/,/CUSTOMIZATION SETTINGS END/{next} 1' file2 file1 ANJALI NISHA // +++ CUSTOMIZATION SETTINGS START +++ WELCOME ALL // +++ CUSTOMIZATION SETTINGS END +++ PREETI MONA 

объяснение

awk неявно перебирает файлы по строкам. В этом случае мы сначала прокручиваем файл2, а затем файл1.

  • /SETTINGS START/,/SETTINGS END/ {if (FNR==NR) {a=a"\n"$0}}

    Раздел настроек из файла2 фиксируется в переменной a .

  • FNR==NR{next}

    Если мы все еще читаем файл2, пропустите остальные команды и переходим к следующей строке ввода.

  • /SETTINGS START/{print substr(a,2)}

    Если мы доберемся, мы обрабатываем файл1. Когда мы увидим начало раздела настроек, напечатайте строку, которую мы сохранили в переменной a .

  • /SETTINGS START/,/CUSTOMIZATION SETTINGS END/{next}

    Если мы находимся в разделе настроек файла1, пропустите остальные команды и перейдите к следующей строке ввода.

  • 1

    1 – критическая стенограмма awk для печати текущей строки. Мы получаем только этот оператор, если мы находимся в файле1, но не в разделе настроек.

  • Заменить строку последовательным индексом
  • Текст между двумя тегами
  • Найти последнее появление строки в нескольких файлах
  • sed count lines между шаблоном - несколько файлов
  • array выводит все испорченные?
  • Сопоставьте текущую строку до строки, которая не соответствует шаблону
  • Копировать файл при замене текста в нем
  • sed соответствует только во второй строке
  • Как прочитать файл свойств через мой скрипт?
  • Удалить комментарии в файле C
  • Преобразование таблицы csv в HTML
  • Interesting Posts

    mysqld останавливается сразу после запуска из-за поврежденных таблиц (полный диск + перезагрузка оборудования) – как его исправить?

    Идентифицировать открытый ключ SSH на сеансе оболочки удаленного конца (без агента или без идентификаторов в агенте)

    Что такое расщепление слов? Почему это важно в программировании оболочки?

    ZFS Raid или Hardware Raid в FreeNAS

    SELinux + MergerFS (плавкий предохранитель) плохо работает вместе

    Зачем генерировать отчеты DNS-сервера 127.0.0.1, когда я использую внешний DNS?

    Поиск и настройка Wi-Fi во FreeBSD 12.0

    Как реализован графический интерфейс Vim, если это программа, работающая на терминале?

    В Mac OS X Snow Leopard, как можно разрешить разрешения одного файла другому?

    Как я могу защитить свой компьютер, когда единственный способ доступа к Интернету – это скомпрометированное интернет-соединение?

    Как «экран» влияет на переменные среды?

    Терминал с кнопкой «повторить последний»

    команда таймаута и труба – порядок приоритета

    Как распечатать pi (3.14159)?

    Возможно ли использование SMTP через SSL в клиенте электронной почты Balsa?

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