sed: Borrar la línea que contenga un patrón y la siguiente | Algo de Linux

viernes, 15 de julio de 2016

sed: Borrar la línea que contenga un patrón y la siguiente

Cuando inserto la llamada a un script en /etc/rc.local, tengo la costumbre de añadir una línea en blanco a continuación mediante \n. Así, cuando quiero borrar la llamada al script, tengo que borrar dicha llamada y la línea siguiente.

Es muy sencillo buscar un patrón y hacer un tratamiento con la línea que contiene el patrón y otras líneas consecutivas. Por ejemplo:

Podemos usar sed con los comandos N y d en un bloque { } de la siguiente manera:
# sed -e '/patrón buscado/ { N; d; }'

Para cada línea que incluya el patrón, se ejecutará el código entre { }.
N toma la siguiente línea a la que contiene el patrón y se aplica el comando d sobre el conjunto, que borra la línea que contiene el patrón y la siguiente.

Siguiendo con el ejemplo:
# grep "/usr/local/bin/conectarwifi" /etc/rc.local && sed -i '/\/usr\/local\/bin\/conectarwifi &/ { N; d; }' /etc/rc.local
Publicado por primera vez en http://enavas.blogspot.com.es

No hay comentarios: