Responder al comentario

Nov 06 13:27

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

Responder

  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><img>
  • Saltos automáticos de líneas y de párrafos.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.

Más información sobre opciones de formato

By submitting this form, you accept the Mollom privacy policy.