Usando o GNU sed
(o BSD sed
não adicionará novas linhas após o texto adicionado, a menos que você inclua uma nova linha literal na string adicionada):
sed -e '/\[httpd\]/a\' -e 'secure_rewrites = false;' \
-e '/\[couchdb\]/a\' -e 'delayed_commits = false;' local.ini
Se o arquivo contiver
[httpd]
[couchdb]
inicialmente, o comando sed
acima produzirá
[httpd]
secure_rewrites = false;
[couchdb]
delayed_commits = false;
Observe também que o comando a
para anexar texto deve ser escrito a\
seguido do texto anexado. O GNU sed
está perdoando a omissão do \
.
Como um script sed
(funciona em qualquer sed
):
/\[httpd\]/a\
secure_rewrites = false;
/\[couchdb\]/a\
delayed_commits = false;
Isso pode ser usado na linha de comando como uma sequência de script literal sed
com cotação única (uma nova linha deve vir após a última linha) ou armazenada separadamente e alimentada em sed
usando
$ sed -f script.sed local.ini
Com #!/usr/bin/sed -f
, como a primeira linha (assumindo que o caminho para sed
está correto), o script pode ser executado diretamente:
$ ./script.sed local.ini