Encontre um texto em um arquivo e insira um texto depois dele

Encontre um texto em um arquivo e insira um texto depois dele

Eu tenho um arquivo de texto. O arquivo de texto contém o conteúdo abaixo.

ServerName
ServerAdmin webmaster@localhost
DocumentRoot

Preciso inserir um texto www.mydomain.com, depois do ServerName. Existe algum comando para fazer isso?

Responder1

Usando sed:

sed 's/^\(ServerName\)$/\1 www.mydomain.com/' file.txt

O grupo capturado \(ServerName\)é usado no padrão de substituição como \1.

Editando o arquivo no local, com backup, assumindo o GNU,, ssedbusybox ou algumas implementações BSD de sed:

sed -i.bak 's/^\(ServerName\)$/\1 www.mydomain.com/' file.txt

O arquivo original será mantido como file.bake o arquivo modificado será file.txt.bak.

Edição no local, sem backup (GNU ssedou busyboxapenas):

sed -i 's/^\(ServerName\)$/\1 www.mydomain.com/' file.txt

(para BSDs, use sed -i '' 's/...).


Ainda mais curto, sem nenhum grupo capturado:

sed -i 's/^ServerName$/& www.mydomain.com/' file.txt

Aqui &será substituído pela partida.

Responder2

sed --in-place 's/ServerName/& www.example.com/' /path/to/apache-vhost.conf

Responder3

Usando o comando sed substituto:

sed -i 's/ServerName/ServerName www.mydomain.com/' file.txt

informação relacionada