Busque un texto en un archivo e inserte un texto después

Busque un texto en un archivo e inserte un texto después

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, ssedBusybox o algunas implementaciones BSD de sed:

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

El archivo original se mantendrá como file.baky el archivo modificado será file.txt.bak.

Edición in situ, sin respaldo (GNU ssedo busyboxsolo):

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

información relacionada