Tengo un archivo de texto. El archivo de texto contiene el siguiente contenido.
ServerName
ServerAdmin webmaster@localhost
DocumentRoot
Necesito insertar un texto www.mydomain.com
, después del ServerName
. ¿Hay algún comando para hacer esto?
Respuesta1
Usando sed
:
sed 's/^\(ServerName\)$/\1 www.mydomain.com/' file.txt
El grupo capturado \(ServerName\)
se utiliza en el patrón de reemplazo como \1
.
Editar el archivo en el lugar, con copia de seguridad, asumiendo las implementaciones GNU, ssed
Busybox o algunas implementaciones BSD de sed
:
sed -i.bak 's/^\(ServerName\)$/\1 www.mydomain.com/' file.txt
El archivo original se mantendrá como file.bak
y el archivo modificado será file.txt.bak
.
Edición in situ, sin respaldo (GNU ssed
o busybox
solo):
sed -i 's/^\(ServerName\)$/\1 www.mydomain.com/' file.txt
(para BSD, utilice sed -i '' 's/...
).
Aún más breve, sin ningún grupo capturado:
sed -i 's/^ServerName$/& www.mydomain.com/' file.txt
Aquí &
será reemplazado por el partido.
Respuesta2
sed --in-place 's/ServerName/& www.example.com/' /path/to/apache-vhost.conf
Respuesta3
Usando el comando sustituto sed:
sed -i 's/ServerName/ServerName www.mydomain.com/' file.txt