El nombre sed
significa “Stream Editor“, y es una poderosa utilidad que te permite analizar y transformar texto directamente desde la línea de comandos. Ya sea que estés trabajando con archivos de configuración, scripts o incluso texto plano, sed es tu herramienta para la manipulación rápida y eficiente de texto.
El uso principal de sed
es buscar patrones específicos de texto y reemplazarlos por otra cosa. También puede eliminar o insertar líneas y realizar otras transformaciones de texto. Es particularmente útil para la edición por lotes de archivos o para trabajar dentro de scripts de shell para automatizar varias tareas.
Si bien sed
es increíblemente versátil por sí mismo, a menudo se usa en combinación con otros comandos de Linux como awk
para el procesamiento de texto, grep para la búsqueda de patrones y cat para mostrar el contenido de los archivos. Juntas, estas herramientas forman un sólido conjunto de herramientas para el procesamiento de texto en el entorno Linux.
Sintaxis general para el comando sed:
sed [OPCIONES] [ARCHIVO]…
- Sustitución de texto
- Reemplazar texto en una línea específica de un archivo
- Reemplazar la primera coincidencia en cada línea con un nuevo texto
- Eliminar líneas coincidentes
- Buscar una palabra sin distinción de mayúsculas y minúsculas + eliminarla
- Reemplazar palabras con mayúsculas
- Reemplazar palabras con minúsculas
- Insertar líneas en blanco en un archivo
- Imprimir los números de línea del archivo
Sustitución de texto
echo "Texto" | sed 's/Palabra_Reemplazable/La_Palabra_Que_Reemplaza/'
Usa el comando sed para buscar y reemplazar cualquier parte del texto. ‘s
‘ indica una tarea de búsqueda y reemplazo.
Ejemplo:
Digamos que tienes la cadena “Me encanta CSS
” y quieres reemplazar “CSS
” por “Bibliotecas CSS
“.
echo "Me encanta CSS" | sed 's/CSS/Bibliotecas CSS/'
Me encanta Bibliotecas CSS
En este ejemplo, el comando echo muestra “Me encanta CSS”, y luego sed reemplaza “CSS
” por “Bibliotecas CSS
“. La salida final es “Me encanta Bibliotecas CSS
“.
Reemplazar texto en una línea específica de un archivo
sed '[línea] s/dificil/facil/g' [archivo]
La opción ‘g
‘ del comando sed
se usa para reemplazar todo lo que coincida con el patrón.
Ejemplo:
Digamos que tienes un archivo de texto llamado ejemplo.txt
con el siguiente contenido:
La vida es dura.
Trabajar más duro es la clave del éxito.
Cuanto más duro trabajes, más suerte tendrás.
Para reemplazar todas las apariciones de la palabra “duro
” por “fácil
” en la línea 2 de ejemplo.txt
, ejecutarías:
sed '2 s/duro/fácil/g' ejemplo.txt
Después de ejecutar el comando, la salida mostrada en la terminal sería:
La vida es dura.
Trabajar más fácil es la clave del éxito.
Cuanto más duro trabajes, más suerte tendrás.
Nota que la palabra “duro
” se reemplaza por “fácil
” solo en la línea 2.
Si quieres guardar estos cambios de vuelta en el archivo, puedes usar la opción -i
:
sed -i '2 s/duro/fácil/g' ejemplo.txt
Después de ejecutar este comando, el contenido de ejemplo.txt
se cambiará permanentemente a:
La vida es dura.
Trabajar más fácil es la clave del éxito.
Cuanto más duro trabajes, más suerte tendrás.
Reemplazar la primera coincidencia en cada línea con un nuevo texto
sed 's/duro/fácil/' [archivo]
Este comando reemplaza solo la primera coincidencia del patrón de búsqueda.
Ejemplo:
Digamos que tienes un archivo de texto llamado ejemplo.txt
con el siguiente contenido:
La vida es más duro de lo que pensamos.
Trabajar más duro es la clave del éxito.
Sin dolor, no hay ganancia. Trabaja más duro.
Puedes usar el comando sed
para reemplazar la palabra “duro
” por “fácil
” en cada línea:
sed 's/duro/fácil/' ejemplo.txt
Después de ejecutar el comando, la salida será:
La vida es más fácil de lo que pensamos.
Trabajar más fácil es la clave del éxito.
Sin dolor, no hay ganancia. Trabaja más fácil.
Eliminar líneas coincidentes
sed '/Algo/d' ejemplo.txt
Usa la opción d
del comando sed
para eliminar cualquier línea de un archivo.
Ejemplo:
Digamos que tienes un archivo llamado ejemplo.txt
con el siguiente contenido:
Hola Mundo
Algo está aquí
Otra línea
Otra línea más
Algo más
Ejecutar el comando sed '/Algo/d' ejemplo.txt
dará como salida:
Hola Mundo
Otra línea
Otra línea más
Buscar una palabra sin distinción de mayúsculas y minúsculas + eliminarla
sed '/Muestra/Id' ejemplo.txt
La opción I
del comando sed
se usa para buscar un patrón coincidente sin distinción entre mayúsculas y minúsculas. La combinación /patrón/Id
busca y elimina las líneas que contienen la palabra especificada, ignorando la diferencia entre mayúsculas y minúsculas.
Ejemplo:
Digamos que tienes un archivo llamado ejemplo.txt
con el siguiente contenido:
Esta es una línea Muestra.
Otra línea.
Otra línea Muestra más.
Línea final.
Ejecutar el comando sed '/Muestra/Id'
ejemplo.txt producirá la siguiente salida:
Otra línea.
Línea final.
En este ejemplo, se eliminan todas las líneas que contienen la palabra “Muestra” sin importar si está en mayúsculas o minúsculas.
Reemplazar palabras con mayúsculas
sed 's/(bibliotecas)/\U\1/Ig' ejemplo.txt
El comando sed
con la opción \U
se usa para convertir cualquier texto a letras mayúsculas. La opción I
permite que la búsqueda sea insensible a mayúsculas y minúsculas, y g
indica que se deben reemplazar todas las ocurrencias en cada línea.
Ejemplo:
Digamos que tienes un archivo llamado ejemplo.txt
con el siguiente contenido:
Amo las bibliotecas.
Las bibliotecas son geniales.
Puedes encontrar muchos libros en las bibliotecas.
Después de ejecutar el comando sed
, la salida será:
Amo las BIBLIOTECAS.
Las BIBLIOTECAS son geniales.
Puedes encontrar muchos libros en las BIBLIOTECAS.
Explicación del comando:
s/
: Indica el comando de sustitución.\(bibliotecas\)
: El patrón a buscar. Los paréntesis\(
y\)
agrupan el patrón para que pueda ser referenciado.\U\1
:\U
convierte el texto a mayúsculas y\1
se refiere al primer grupo de captura (en este caso, “bibliotecas”).I
: Hace que la búsqueda sea insensible a mayúsculas y minúsculas.g
: Reemplaza todas las ocurrencias en cada línea.
Reemplazar palabras con minúsculas
sed 's/(bibliotecas)/\L\1/Ig' ejemplo.txt
El comando sed
con la opción \L
se usa para convertir cualquier texto a letras minúsculas. La opción I
permite que la búsqueda sea insensible a mayúsculas y minúsculas, y g
indica que se deben reemplazar todas las ocurrencias en cada línea.
Ejemplo:
Digamos que tienes un archivo llamado ejemplo.txt
con el siguiente contenido:
Las Bibliotecas son esenciales para investigar.
las bibliotecas ayudan de muchas maneras.
¡Amo las BIBLIOTECAS!
Después de ejecutar el comando sed
, la salida será:
las bibliotecas son esenciales para investigar.
las bibliotecas ayudan de muchas maneras.
¡Amo las bibliotecas!
Explicación del comando:
s/
: Indica el comando de sustitución.\(bibliotecas\)
: El patrón a buscar. Los paréntesis\(
y\)
agrupan el patrón para que pueda ser referenciado.\L\1
:\L
convierte el texto a minúsculas y\1
se refiere al primer grupo de captura (en este caso, “bibliotecas”).I
: Hace que la búsqueda sea insensible a mayúsculas y minúsculas.g
: Reemplaza todas las ocurrencias en cada línea.
Insertar líneas en blanco en un archivo
sed G [archivo]
Usa la opción G
del comando sed para insertar líneas en blanco después de cada línea del archivo.
Ejemplo:
Digamos que tienes un archivo llamado ejemplo.txt
con el siguiente contenido:
Hola
Mundo
Esto
Es
Una
Prueba
Puedes ejecutar el siguiente comando para añadir una nueva línea al final de cada línea:
sed G ejemplo.txt
Después de ejecutar el comando, la salida será:
Hola
Mundo
Esto
Es
Una
Prueba
Imprimir los números de línea del archivo
sed '=' [archivo]
El signo =
se usa para imprimir un número de línea antes de cada línea de texto en un archivo.
Ejemplo:
Digamos que tienes un archivo llamado ejemplo.txt
con el siguiente contenido:
Hola
Mundo
Esto
Es
Una
Prueba
Puedes ejecutar el siguiente comando para imprimir los números de línea antes de cada línea:
sed '=' ejemplo.txt
1
Hola
2
Mundo
3
Esto
4
Es
5
Una
6
Prueba
Más comandos de Linux:
Operaciones de Directorios | rmdir · cd · pwd · exa · ls |
Operaciones de Archivos | cat · cp · dd · less · touch · ln · rename · more · head |
Operaciones de Sistema de Archivos | chown · mkfs · locate |
Redes | ping · curl · wget · iptables · mtr |
Búsqueda y Procesamiento de Texto | find · grep · sed · whatis · ripgrep · fd · tldr |
Información y Gestión del Sistema | env · history · top · who · htop · glances · lsof |
Gestión de Usuarios y Sesiones | screen · su · sudo · open |
¿Qué te parece?
Es bueno conocer tu opinión. Deja un comentario.