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

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

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

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

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

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 сохранить и закрыть

  • В Unix говорят, в чем разница между скриптом оболочки и исполняемым файлом?
  • Обработка вывода sqlite db в массив ksh с пробелами
  • Получите только размер смонтированной файловой системы
  • В чем разница между печатью и головой?
  • Игнорировать специальные символы в сравнении с сценарием оболочки
  • Уведомление слушателя, странное поведение
  • Сценарий оболочки слишком медленный для вывода в Conky
  • Я хочу сравнить два списка и распечатать вывод разности из списка 1
  • Как извлечь неизвестные аргументы в сценарии оболочки?
  • Как скопировать строки из нескольких файлов в один новый файл и сохранить имя файла?
  • bash: содержание grepping столбца, которое является динамическим
  • Почему set -e не работает внутри () ||
  • Linux и Unix - лучшая ОС в мире.