Comando SED¶
- SED (Stream Editor): Es un editor de texto en línea.
Estructura SED
sed –n ‘/PATRÓN/’p “fichero”
Opción | |
---|---|
–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