Sustituir un bloque de un archivo por un texto
Sustituir palabras o frases con sed en un archivo, es fácil, lo que no es trivial es que encuentre un bloque determinado de texto y ese bloque lo sustituya por otra cosa. Pero no que te sustituya por línea sino TODO el bloque.
Aquí un ejemplo de cómo sustituir las entradas de los kernels que hay en un menu.lst del grub
#!/bin/sh sed -i.bak -n -e '1,/### BEGIN AUTOMAGIC KERNELS LIST/ p' \ -e '/### BEGIN AUTOMAGIC KERNELS LIST/ a\ Una línea \ otra línea \ \ ¿Una entrada del kernel?' \ -e '/### END DEBIAN AUTOMAGIC KERNELS LIST/,$ p' menu.lst ### Explicación de parámetros ### ## -i.bak # Hace que se sustituya en el mismo archivo (menu.lst), pero guardando una copia # del original con la extensión que se le pase a -i . En este caso ".bak" ## -e # Sirve para pasarle un trozo de código de sed al sed. # Con esto se pueden añadir varias instrucciones. ## -n # Esto hace que no se impriman todas las líneas que encuentre, así controlamos cuáles se # muestran ## p (al final de un troco de código sed) # imprime por pantalla (o por la salida estándar) el resultado de lo que se busque o # sustituya ## a\ (al final de un troco de código sed) # Añade una línea después de la línea que se le indique con la búsqueda de antes. # Si se quiere añadir más de una línea, hay que poner un '\' al final de la línea, # para que escape el salto de línea
Lenguaje:
bash
