Saltar a contenido

Comando SED

  • SED (Stream Editor): Es un editor de texto en línea.
!!! danger "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.

!!! info "Eliminar coincidencias SED" sed ‘/PATRÓN/d’ “fichero”

Elimina la primera línea:

Sustituir elementos.

!!! info "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.

!!! info "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.

!!! info "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