sed – stream editor for filtering and transforming text

Este comando junto con awk(que uso más todavía que este) es obligatorio que aprendais a usarlos poco a poco. En concreto sed permite cosas como borrar líneas, registros o sustituir cadenas de caracteres dentro de las líneas. Típicamente se usa en tuberías, aunque es un programa totalemente autónomo.

* 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 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

De aqui podemos encontrar una aplicación particular que me ha sido útil. Es un poco confuso pero no es más que la sustitución de todos los espacios por “\ “(contrabarra+espacio). Es es muy util en bash cuando a veces pasas por parametro ficheros y por algún motivo no sirve mterlo entre comillas.

sed ‘s/\ /\\ /g’

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

Fuente:
http://enavas.blogspot.com/2008/03/el-shell-de-linux-comando-sed.html

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: