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,, ssed
busybox 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.bak
e o arquivo modificado será file.txt.bak
.
Edição no local, sem backup (GNU ssed
ou busybox
apenas):
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