El shell de linux: Comando sed
Para borrar una línea hacemos lo siguiente:
sed 'nº_de_línead' fichero
Podemos indicar un número de línea concreto. Por ejemplo:
sed '1d' fichero
Podemos indicar un intervalo de líneas a borrar. Por ejemplo:
sed '3,5d' fichero
También podemos indicar que queremos borrar desde una determinada línea en adelante:
sed '3,$d' fichero
Otro ejemplo útil es borrar las líneas en blanco de un fichero:
sed '/^$/d' fichero
A la hora de borrar, también podemos especificar una cadena, de tal forma que el comando borrará todas las líneas que contengan esa cadena. Ejemplo:
cat fichero | sed '/^[ ]*$/d' > ficherodestino
Lo anterior borrará todas las líneas en blanco de fichero.
Otro de los usos interesantes es borrar los espacios al comienzo de cada línea:
sed 's/^ *//g' fichero
O borrar los espacios al final de cada línea:
sed 's/ *$//g' fichero
Otro de los usos más interesantes de sed es sustituir cadenas. Podemos sustituir una cadena por otra de la siguiente manera:
sed 's/cadena1/cadena2/' fichero
Al ejecutar el comando anterior, se sustituye la primera cadena que encuentra por la segunda. Pero, si lo que queremos es sustituir todas las cadenas que encuentre, en cada una de las líneas, añadimos el parámetro g:
sed 's/cadena1/cadena2/g' fichero
Por otra parte, también podemos hacer que sustituya la cadena1 por la cadena2 en un número de línea concreto:
sed '5 s/USUARIO/usuario/g' fichero
Con cadenas de texto normales la cosa es sencilla, pero al que más y al que menos le resulta complicado cuando lo que hay que sustituir son caracteres especiales como el tabulador: \t o el caracter de nueva línea: \n. Pero veamos como tampoco es complicado: Imaginemos que tenemos un fichero con campos en los que el separador es el tabulador y queremos sustuir este caracter separador por otro caracter separador, como por ejemplo el punto y coma (;). Lo haremos de la siguiente manera:
sed 's/\t/;/g' fichero