Sed (Stream EDitor) es un comando de Linux que se utiliza para modificar las líneas de un fichero aplicando una serie de comandos específicos. En este artículo te enseñamos varios trucos y algunas de las opciones que hemos considerado más útiles.
¿Cómo sustituir con sed?
Sustituir "foo" por "bar" en todas las líneas:
- Solo en la 1ª ocurrencia:
sed 's/foo/bar/'
- Solo en la 3ª ocurrencia:
sed 's/foo/bar/3'
- En todas las ocurrencias:
sed 's/foo/bar/g'
- Sólo en la penúltima ocurrencia:
sed 's/\(.*\)foo\(.*foo\)/\1bar\2/'
- Sólo en la última ocurrencia:
sed 's/\(.*\)foo/\1bar/'
- Solo en las líneas que contienen “plop”:
sed '/plop/ s/foo/bar/g'
- Menos en las líneas que contienen “plop”:
sed '/plop/! s/foo/bar/g'
- Sustituir "Foo" o "foo" por “bar” en todas las líneas:
sed 's/[Ff]oo/bar/g'
- Sustituir "azul", "blanco" o “rojo” por “verde”:
sed 's/azul\|blanco\|rojo/verde/g'
¿Cómo visualizar con sed?
- La primera línea (head -1):
sed q
- Las 5 primeras líneas (head -5):
sed '5q'
sed '1,5!d'
- La última línea (tail -1):
sed -n '$p'
sed '$!d"
- Las 5 últimas líneas (tail -5):
sed -e :a -e '$q;N;6,$D;ba'
- Las 2 últimas líneas (tail -2):
sed '$!N;$!D'
- Sólo las líneas que coinciden con un patrón o expresión regular:
sed -n '/patrón/p'
sed '/regexp/!d'
- Sólo las líneas que no coinciden con un patrón o expresión regular:
sed -n '/patrón/!p'
sed '/regexp/d'
- La línea anterior a un patrón o expresión regular:
sed -n '/patrón/{g;1!p;};h'
- La línea que sigue a un patrón o expresión regular:
sed -n '/regexp/{n;p;}'
¿Cómo eliminar con sed?
Espacio y tabulación
- Al inicio de línea:
sed 's/^\s*//' # Uso del parámetro "\s"
sed 's/^[ \t]*//
- Al final de la línea:
sed 's/[ \t]*$//'
- Al inicio y al final de la línea:
sed 's/^[ \t]*//;s/[ \t]*$//'
Línea vacía
- Todas las líneas vacías:
sed '/./!d'
sed '/^$/d'
- Solo las del encabezado:
sed '/./,$!d'
sed -nr '/./,$s/(.*)/\1/p'
- Solo las del final:
sed -e :a -e '/^\n*$/ {$d;N;ba' -e '}'
Intervalo regular
- Todas la líneas pares:
sed '1~2d'
- Todas la líneas impares:
sed '2~2d'
- Todas las n líneas a partir de la línea n:
sed '3~2d' # Todas las 2 líneas a partir de la línea 3
¿Cómo unir líneas con sed?
- Unir líneas de dos en dos:
sed '$!N;s/\n//'
- Unir líneas de tres en tres:
sed '$!N;s/\n//;$!N;s/\n//;'
- Si una línea termina en un backslash (\), agregar la línea siguiente y reemplazar el final de línea (/n) por un espacio:
sed -e :a -e '/\\$/N; s/\\\n/ /; ta'
- Si un línea comienza con un signo igual (=), agregarla a la línea precedente y reemplazar el signo igual (=) por un espacio:
sed -e :a -e '$!N;s/\n=/ /;ta' -e 'P;D'
¿Cómo no tener en cuenta las mayúsculas y minúsculas?
El comando sed posee un flag que permite buscar un patrón sin tener en cuenta las mayúsculas y minúsculas, pero este se aplica únicamente al comando de sustitución (comando s). A continuación, veremos un truco que permite utilizar este flag para mostrar (o no) líneas que coinciden con un patrón dado sin tener en cuenta las mayúsculas y minúsculas. Para ello, tan solo hay que utilizar el comando de sustitución “s” asociado al [metacaracter "&"] y al flag “I”. Un ejemplo para mostrar únicamente las líneas que contienen el término “patron” sería:
sed -n 's/patron/&/Ip' fichero
Linux
- Sed 's/t/,/g'
- Comando dir en linux
- Guardar salida de comando en variable linux
- Cómo usar el comando "su" en Linux > Guide
- Telnet: uso y comandos más frecuentes
- Linux – Comandos para monitorear el sistema
- Cómo leer un archivo línea por línea
- Cómo desactivar el firewall en Ubuntu Server 18.04, 20.4...
- Cómo buscar una palabra en VI/VIM y reemplazar en Linux
- Cómo quitar la contraseña de usuario de Linux
- Cómo desactivar y reiniciar la interfaz de red en Linux
- Formatear una memoria USB en Ubuntu: Terminal, 18.04, 20.04
- Cómo ejecutar un programa automáticamente al iniciar Ubuntu
- Cómo desinstalar Ubuntu: en Dual Boot, sin dañar Windows 10
- Cómo instalar Opera en Ubuntu: desde la Terminal
- Solucionar el error GPG en Debian: apt-get update NO_PUBKEY
- Linux avahi-daemon: qué es, desactivar en Ubuntu, Debian...
- Cómo activar el usuario root en Ubuntu y cambiar contraseña
- Cambiar el idioma en Debian: teclado, ponerlo en español
- Cómo abrir la Terminal en Ubuntu: 20.04, 12.04...
- Cómo activar y configurar el WiFi en Ubuntu: 16.04, 20.04...
- Para qué sirve la variable de entorno PATH en Bash (Linux)
- Cómo escanear y ver los puertos abiertos en Ubuntu
- Cómo ver la lista de los paquetes instalados en Debian
- Sistema de archivos Linux: ver, crear, comprobar, reparar...
- Imagen ISO en Ubuntu (Linux): cómo montarla y ejecutarla
- Cómo ver el espacio libre en disco en Ubuntu por consola
- Cómo instalar Ubuntu en VirtualBox: guía paso a paso
- Las aplicaciones predeterminadas e imprescindibles de Ubuntu
- Cómo configurar y conectar wifi en Linux: Ubuntu, Debian...
- Tipos de sistema de almacenamiento RAID: 0, 1, 2, 5, 10...
- Papelera en Ubuntu: dónde está, ponerla en el escritorio
- Ubuntu: instalar, cómo funciona, conectar WiFi, programas...
- Cómo instalar Linux desde un USB externo en Windows 10
- Cómo ejecutar un script desde la consola en Linux
- Eliminar líneas con el comando 'sed' en Linux: en blanco...
- Cómo saber el número de procesadores que tienes en Linux