Заменить текст многострочным шаблоном

У меня есть шаблон в файле, который включает в себя новую строку:

client_encryption_options: enabled: false 

Я хочу установить значение true . Но enabled должен быть ниже client_encryption_options .

grep не позволяет мне искать многострочные. Как я могу это достичь?

  • Подсчет количества записей в столбце 2, где столбец 1 аналогичен
  • Использование sed (или что-нибудь полезное) для замены строк относительным содержимым
  • как переименовать несколько файлов, заменив строку в имени файла? эта строка содержит "#"
  • Лишь оставлять самую длинную линию, когда первая колонка дублируется
  • Печать столбцов, начинающихся с определенной строки
  • Селективное извлечение данных
  • Bash Scripting: печать данных столбца в одной строке
  • awk удаляет строки на основе другого значения столбца
  • 2 Solutions collect form web for “Заменить текст многострочным шаблоном”

    Ну, grep также не позволит вам вносить изменения, так что утилита не работает с самого начала.

    Вместо этого используйте GNU sed :

     $ sed '/^client_encryption_options:/,+1s/enabled:.*/enabled: true/' file 

    Это найдет строку, начинающуюся со строки client_encryption_options: и применит подстановку к ней и следующую строку. Подстановка заменит enabled: строку enabled: и все последующее за ней в той же строке с enabled: true .

    Подстановка будет применена к обеим строкам, но поскольку шаблон enabled:.* Не найден в первой строке, он останется неизменным. Вторая строка будет изменена безоговорочно (независимо от текста после enabled: .

    С sed :

     sed '/client_encryption_options:/{n;s/false/true/;}' 

    n – это команда, чтобы получить следующую строку в пространстве шаблонов (после того, как вы напечатали и отбросили содержимое текущего пространства паттерна), s будет заменять .

    Interesting Posts

    Diacritics не работают в приложениях GTK +, работающих на Mac OS X Snow Leopard

    Строка поиска с использованием grep

    Неисправность регистра файловой системы OS X vlc

    Запретить запуск зашифрованного раздела на другом ПК

    difficalty для сохранения вывода traceroute в переменной оболочки?

    Использование команды sed изменяет строку на определенной строке с определенной строкой

    Чтение пространства в качестве входного файла в сценарии оболочки

    Мне интересно о безопасности CUPS. Что я могу сделать?

    Автоматическая загрузка SFTP с завитком

    PBS-эквивалент команды «верхний»: не запускать «qstat» повторно

    Как объединить два файла с различным количеством строк в оболочке?

    Комментируйте определенные строки, используя регулярное выражение и sed

    GRUB2 не отображается на мониторе HDMI

    Почему «письмо» выбрано как опция для удобного для чтения формата в команде квоты?

    выключение программы не прекращается после планирования выключения

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