Estoy tratando de agregar una línea de texto a la mitad de un archivo de texto en un script bash. Específicamente, intento agregar un servidor de nombres a mi archivo /etc/resolv.conf. Tal como está, resolv.conf se ve así:¿Cómo agrego una línea de texto al medio de un archivo usando bash?
# Generated by NetworkManager
domain dhcp.example.com
search dhcp.example.com
nameserver 10.0.0.1
nameserver 10.0.0.2
nameserver 10.0.0.3
Mi objetivo es añadir nameserver 127.0.0.1
por encima de todas las demás líneas de servidores de nombres, pero por debajo de cualquier texto encima de eso. Al final quiero mi archivo resolve.conf a tener este aspecto:
# Generated by NetworkManager
domain dhcp.example.com
search dhcp.example.com
nameserver 127.0.0.1
nameserver 10.0.0.1
nameserver 10.0.0.2
nameserver 10.0.0.3
¿Cómo es esto posible a través de una escritura del golpe? ¿Esto es algo que Sed o awk pueden hacer? ¿O sería la mejor opción moverme creativamente para recrear el archivo?
Esto es grande. Lo único extraño es que agrega una línea en blanco en la parte superior del nuevo archivo. No es gran cosa, pero está causando un momento de TOC. – PHLAK
¡Oh, sí, tienes razón! El comando 'sed -n 'H; $ {x; s/^ \ n //; s/nameserver. * \ N/nameserver 127.0.0.1 \ n & /; p;}' resolv.conf', sin embargo, resuelve esto problema. Agregué 's/^ \ n //' al comando, por lo que eliminará la nueva línea al comienzo del contenido del espacio del patrón. – brandizzi
¡Impresionante, gracias! – PHLAK