Saltar a contenido

Comando SED

  • SED (Stream Editor): Es un editor de texto en línea.

Estructura SED

sed –n ‘/PATRÓN/’p “fichero”

Opción
Significado
–n No imprime el fichero por pantalla.
p Busca el patrón en el fichero y lo imprime por pantalla.
/…/ Para indicar que buscamos un patrón usamos las barras laterales. Sin barras se puede indicar una línea del fichero
d Muestra el fichero eliminando las líneas que coinciden con el patrón.
s Sustituye un patrón1 por patrón2.
g Hace que se sustituya en todas las coincidencias.
-e Permite agrupar sustituciones una tras otra.
& Hace referencia a lo sustituido por el patrón.
-i Modifica realmente el fichero.

Ejemplos.

Selecciona las líneas donde encuentra la coincidencia “ubuntu”:

sed -n '/ubuntu/'p /etc/passwd

Selecciona la línea 1 (Fíjate que al ser una línea no lleva barras):

sed -n '1'p /etc/passwd

Seleccionar de la línea 5 a la 7:

sed -n '5,7'p /etc/passwd

Seleccionar la última línea:

Muestra la última línea del fichero.

La opción -n hace que no imprima el resto del fichero y la opción "p" que imprima la selección, en este caso la última línea.

sed -n '$'p /etc/passwd

Selecciona desde que detecta el patrón hasta el final del fichero:

El $ sin barras (//) hace referencia a la última línea.

Eliminar Coincidencias.

Eliminar coincidencias SED

sed ‘/PATRÓN/d’ “fichero”

Elimina la primera línea:

Sustituir elementos.

Sustituye coincidencias SED

sed s’/Patrón1/Patrón2/’g

Ejemplo: Sustituye los patrones salva por Mr. Salva.

sed s'/salva/Mr. Salva/'g lista.txt

Ejemplo: Cuando encuentra un guión borra el resto de la línea.

Se elimina cualquier cosa (.*) que encuentre después de un guión.

La salida del ejemplo sería "HOLA".

echo "HOLA - QUÉ TAL???" | sed s'/-.*//'g

Ejemplo: Borra los comentarios.

El ".*" es una expresión regular que indica cualquier cadena de texto.

Por tanto se sustituye cualquier cadena de texto precedida de un # por una cadena vacía, de ahí las dos barras //.

sed s'/#.*//'g ejemplos.txt

Anidar varios comandos sed.

Sustituye múltiples coincidencias SED

sed –e s’/Patrón1/Patrón2/’g –e s’/Patrón1/Patrón2/’g

Ejemplo: Añade ":" tras cada letra minúscula encontrada, posteriormente al final de línea borra los últimos ":".

  • Importante que el carácter especial “&” hace referencia a lo sustituido en el patrón 1.

Cambiar el contenido de un fichero.

Sustituye coincidencias SED y actualiza el fichero

sed -i s’/Patrón1/Patrón2/’g

  • Todos estos ejemplos NO cambian el fichero en sí, solo muestran la salida de cómo quedaría.

  • Para cambiar el contenido usaremos la opción -i.

Reemplazamos en el fichero las cadenas de texto salva por Salvador.

Recordad que si no usamos la opción -i nos muestra por pantalla como quedaría el fichero, pero NO lo cambia.

sed -i s'/salva/Salvador/'g ejemplos.txt