Este comando también lo usamos mucho, porque nos permite, de una forma cómoda, borrar líneas, registros o sustituir cadenas de caracteres dentro de las líneas.
Para borrar una línea hacemos lo siguiente:
1 |
sed 'nº_de_línead' fichero |
Podemos indicar un número de línea concreto. Por ejemplo:
1 |
sed '1d' fichero |
Podemos indicar un intervalo de líneas a borrar. Por ejemplo:
1 |
sed '3,5d' fichero |
También podemos indicar que queremos borrar desde una determinada línea en adelante:
1 |
sed '3,$d' fichero |
Otro ejemplo útil es borrar las líneas en blanco de un fichero:
1 |
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:
1 |
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:
1 |
sed 's/^ *//g' fichero |
O borrar los espacios al final de cada línea:
1 |
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:
1 |
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:
1 |
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:
1 |
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:
1 |
sed 's/\t/;/g' fichero |