Entendiendo el comando sed III
En los capítulos anteriores os presentaba el comando sed y os explicaba algunos ejemplos para comprender sobre que líneas tienen efecto los comandos aplicados. Hoy os comentaré las funciones que permite sed.
Entre las funciones más utilizadas por sed se encuentran las que permiten borrar líneas (d de delete), las de sustitución (s de substitute), imprimir líneas (p de print) o las que permiten leer líneas (r de read).
El siguiente ejemplo imprimirá por pantalla el rango de líneas que comprende desde la primera a la quinta:
sed -e 1,5p fichero_datos |
El siguiente ejemplo borrará el rango de líneas comprendido entre la tercera y la quinta y desde la décima en adelante:
sed -e '3,5d' -e '10,$d' fichero_datos |
En el anterior capítulo os comentaba el uso del carácter exclamación. Si no queremos escaparlo con el carácter ( \ )
podremos delimitar los comandos aplicados por sed por comillas simples ( ‘ ):
sed -e '/^$/!d' dias sed -e /^$/\!d dias |
Hasta ahora hemos visto, los borrados y las impresiones. Una de las funciones más típicas que nos permite sed, es la que consiste en sustitución de patrones.
sed 's/suspenso/aprobado/' |
El anterior comando sustituye la primera aparición de “suspenso” por la cadena “aprobado” en cada línea donde se encuentre “suspenso”. Si queremos que se cambien todas las apariciones de “suspenso” en todas las líneas, tendremos que usar el flag ( g ).
sed 's/suspenso/aprobado/g' |
El siguiente ejemplo, remplazará el carácter “é” por la cadena “é”, excepto en las líneas que van desde la 1 a la 3:
sed -e '1,3!s/e/´/' fichero_datos |
Si quisieramos que la sustitución solo se hiciera entre las líneas 1 y 3, deberíamos quitar la exclamación ( ! ).
Por último un ejemplo bastante interesante. Si quisieramos añadir el contenido de un fichero, cada vez que encontrasemos una combinación de caracteres, podríamos utilizar el siguiente comando:
sed '/cadena/r fichero_carga' fichero_datos |