Добавить строку в файл конфигурации из сценария bash?

Я пытаюсь найти, чтобы найти строку в файле конфигурации, а затем вывести две строки, чтобы вставить строку кода. Я пытался сделать это в awk / sed, но застрял на возврате каретки. Я не привязан к awk / sed, но ищет чистый способ добиться этого.

<Location /> Order allow,deny </Location> 

Затем добавьте строку в этот блок:

 <Location /> Order allow,deny Allow all </Location> 

  • Команда nvm недоступна в скрипте bash
  • Скрипт для печати последнего входа в Unix
  • Повторное использование выхода grep
  • Выходной сигнал в ловушке, вызвавший вызванную ловушку?
  • Как спать до определенной даты и времени?
  • Возврат значения из функции bash
  • Как безопасно загружать файлы в сценарии оболочки?
  • Использование sed в сценарии оболочки с многострочными переменными
  • 4 Solutions collect form web for “Добавить строку в файл конфигурации из сценария bash?”

    awk можно использовать для этого. Следующий скрипт будет добавлять текст после обнаружения <Location /> .

     awk '/\<Location \/\>/{ start=1 } {if(start) ++start; if(start==4) print " Allow all"} 1' infile 

    Для следующего входного файла:

     stuff <Location /> Order allow,deny </Location> more stuff 

    Этот скрипт создает:

     stuff <Location /> Order allow,deny Allow all </Location> more stuff 

    Если вы хотите заменить несколько разделов таким образом, тот же скрипт можно легко адаптировать:

     awk '/\<Location \/\>/{ start=1 } {if(start) ++start; if(start==4){print " Allow all"; start=0}} 1' infile 
     sed '/Order allow,deny/ aAllow all' < yourFile 

    Это выведет измененный файл в стандартный вывод . Если вы хотите изменить его на месте, то ( sed (1) ):

    -i [SUFFIX], –in-place [= SUFFIX]

      edit files in place (makes backup if SUFFIX supplied) 

    Объяснение:

     For each line that matches `/Order allow,deny/`: Execute command 'a' (append) with 'Allow all' as parameter 

    http://grymoire.com/Unix/sed.html – отличный ресурс, чтобы узнать больше о sed .

    Если вы просто слепо хотите добавить оператор Allow all после любого Order allow,deny то следующее sed будет работать

     sed -i 's/Order\ allow,deny/Order\ allow,deny\nAllow\ all/' <inputfilename> 

    Вы можете использовать Vim в режиме Ex:

     ex -sc '/Order allow,deny/a|Allow all' -cx file 
    1. добавить текст и новую строку

    2. x сохранить и закрыть

    Interesting Posts

    Почему это назначение переменной не работает при использовании tee?

    Напишите в FIFO только в том случае, если он существует

    Автоматическое монтирование местоположения в файлах GNOME (Nautilus) при перетаскивании

    Как преодолеть ограничение libc ограничения 3-х серверов имен?

    Отправляется ли процесс отказа от сигналов, отличных от SIGHUP?

    просмотр printf после трубы (или подоболочки?)

    Какие службы могут быть отключены на Fedora 14?

    SSH легко копирует файл в локальную систему

    Использовать установщик Synaptic Package по умолчанию

    Is / sbin / sulogin безопасен?

    Как я могу получить скорость чтения / записи на жестком диске с использованием данных / proc / diskstats?

    Запуск Cinnamon / X из командной строки —> Нет звука, программный рендеринг

    Используя Linux, как я могу найти образ, сохраненный в base64 локально?

    инструменты для окраски вывода командной строки «dict»?

    Свободное дисковое пространство не правильно?

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