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

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

Предположим, что у 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, но не в разделе настроек.

  • Мне нужно удалить. в моих данных
  • Почему «while .. read .. << EOL» выполняет расширение переменной, но <файл и | не?
  • Поведение POSIX привязок sed и $ regex с многострочными пространствами шаблонов
  • соответствие строки awk из 2 столбцов
  • Сравните 2 файла, если он находится между диапазоном чисел
  • Есть ли надежный инструмент командной строки для обработки CSV-файлов?
  • Как читать байты hexdump by byte в bash или awk?
  • Как извлечь данные из файла и построить имя файла из одного из значений
  • Как вставить текст в качестве альтернативы из двух файлов с общим шаблоном
  • sed code для обработки текста
  • Удалить комментарии в файле C
  • замените с начала строки на 1 из нескольких шаблонов в конец другой строки со вторым шаблоном
  • Linux и Unix - лучшая ОС в мире.