sed: Borrar las líneas que contengan un patrón determinado | Algo de Linux

sábado, 20 de diciembre de 2014

sed: Borrar las líneas que contengan un patrón determinado

Una de las cosas para las que utilizo mucho el comando sed es borrar las líneas de un archivo que contienen un patrón determinado. 

Por ejemplo: En nuestras instalaciones tenemos un script sinc_puppet_inst que se ejecuta al final del proceso de arranque y no me interesa que este script se ejecute en una determinada situación. 

Podría utilizar el comando sed en un script que se inicie en uno de los runlevels para evitar la ejecución eliminando la línea y añadiéndola después cuando termine el proceso que quiero realizar.
Para eliminar la línea,  podemos hacer lo siguiente:
# sed -i  '/sinc_puppet_inst/ d' /etc/rc.local
Si os dáis cuenta, lo que va entre las barras "/" es el patrón a buscar. Y "d" le indica a sed que borre las líneas que contengan el patrón.

Otro de las cosas que podemos querer borrar es bloques de texto que contengan una estructura determinada. Por ejemplo:
# sed -i '/BEGIN/,/END/ d' /boot/grub/grub.cfg
El comando anterior borraría el bloque de líneas del fichero /boot/grub/grub.cfg que comienza por la palabra BEGIN y termina con la palabra END.
Publicado por primera vez en http://enavas.blogspot.com.es

No hay comentarios: