Sed comando de la shell de Linux

 

El shell de linux: Comando sed

 
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:

    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

Deja una respuesta