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 CSSEn 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.txtDespué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.txtDespué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.txtDespué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.txtUsa 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ásEjecutar el comando sed '/Algo/d' ejemplo.txt dará como salida:
Hola Mundo
Otra línea
Otra línea másBuscar una palabra sin distinción de mayúsculas y minúsculas + eliminarla
sed '/Muestra/Id' ejemplo.txtLa 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.txtEl 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:\Uconvierte el texto a mayúsculas y\1se 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.txtEl 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:\Lconvierte el texto a minúsculas y\1se 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
PruebaPuedes ejecutar el siguiente comando para añadir una nueva línea al final de cada línea:
sed G ejemplo.txtDespués de ejecutar el comando, la salida será:
Hola
Mundo
Esto
Es
Una
PruebaImprimir 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
PruebaPuedes ejecutar el siguiente comando para imprimir los números de línea antes de cada línea:
sed '=' ejemplo.txt1
Hola
2
Mundo
3
Esto
4
Es
5
Una
6
PruebaMá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.