SED es un editor de textos no interactivo diseñado para funcionar en
Unix y ayudar con los scripts.
Editando Texto
Sed actua como un filtro, y esta orientado a lineas. La forma que tiene de
trabajar suele ser un patrón y unas ordenes que aplicar a una serie de lineas.
Patrones orientados a linea
Un ejemplo simple del funcionamiento del Sed es "Borrar las 10
primeras lineas de un documento"
sed -e '1,10d'
El -e ejecuta el comando. En este sentido es realmente muy parecido al vi.
Por ejemplo, sabiendo que $ indica fin del documento. Si queremos borrar todo
menos las primeras 10 lineas haremos:
sed -e '11,$d'
Lo que no puede hacerse es usar el sed con comandos relativos y complicados
como por ejemplo: sed -e '$-10,$d' En
este caso el sed no comprendera que intentamos hacer. Otra forma de obtener
las 10 primeras lineas es con el modificador -n y la p. La p para que imprima
esa linea, y el -n si no recuerdo mal es para que no haga eco en pantalla.
sed -n -e '1,10p'
Usando mas de un comando a la vez sed -e '1,4d
6,9d' o bien sed -e '1,4d' -e '6,9d'
Usando las expresiones regulares en los patrones
El ejemplo tipico es ese fichero larguisimo de log's en el que no sabes que
lineas borrar, pero en que quieres borrar todas las lineas que contengan la
palabra debug sed -e '/debug/d' < log que es lo mismo que si
hiceramos grep -v debug
Un ejemplo mas rebuscadillo
Ahora ya no nos basta con borrar las lineas que tienen debug, sino que
queremos borrar todas las lineas de debug que no tengan la palabra foo en esa
misma linea. Eso se suelve hacer asi:
grep 'foo' < log | grep -v debug
Pero podemos usar el sed para ello de esta forma:
sed -n -e '/debug/d' -e '/foo/p'
Ahora las lineas que tienen debug son impresas si tienen la palabra foo, asi
que no se borran. Es una explicacion muy mala, pero bueno, estas cosas, nada
como probarlas para acabar de entenderlas ¿vale?
Insertando texto
Se puede insertar texto con i y con a. El primero para insertar antes de la
linea en curso y el segundo para insertar despues de la linea en curso. Por
ejemplo 1i para insertar en la primera linea y $a para insertar al final del
documento
sed -e '10i\ Texto a insertar'
Se puede reemplazar la linea en curso con la c sed -e '10c\ Nuevo contenido
de linea 10' Sustitución de expresiones regulares sed -e 's/patron/reemplazo/[modificadores]'
Notas Finales
Ante todo gracias al autor del minitutorial ingles en que me he basado -no
recuerdo su nombre-, no soy un plagiador, solo que me cuesta mucho estructurar
un tutorial, asi que le robo la estructura de contenidos a otra gente XD.
Venga, ahora a practicar y a leerse las man's |