¡Has estado buscando otra forma de realizar operaciones de edición en textos? ¡No busques más! Este tutorial te tiene cubierto con ejemplos del editor de secuencias sed.
En pocas palabras, sed te permite realizar una amplia gama de ediciones en archivos y secuencias de texto de manera no interactiva. Tú tomas las decisiones de edición mientras llamas a los comandos. Y en este tutorial, aprenderás cómo utilizar los comandos de sed y optimizar eficazmente tu flujo de trabajo.
¡Sigue leyendo y potencia tus habilidades en la línea de comandos!
Prerrequisitos
Asegúrate de tener lo siguiente para seguir la demostración práctica en este tutorial:
- A command line interface (e.g., Terminal on macOS or Linux) – This tutorial uses Ubuntu Linux 20.04, but the commands should work on most popular operating systems.
- A text editor (e.g., nano, vi, or Sublime Text) – This tutorial uses Nano.
Instalación de sed en Ubuntu
sed generalmente se incluye como una utilidad estándar en la mayoría de los sistemas operativos tipo Unix, incluyendo Linux y macOS. Pero de todos modos, verificar si ya tienes sed en tu sistema estaría bien y es un procedimiento básico antes de realizar transformaciones de texto.
1. Abre tu terminal y ejecuta el siguiente comando sed
para verificar qué versión de sed está instalada en tu sistema.
Si sed está instalado, verás el número de versión de sed y alguna información sobre la compilación, como se muestra a continuación.

En caso contrario, verá el mensaje de error a continuación si sed no está instalado.
Este mensaje de error indica que el comando sed
no se encontró en la variable de entorno PATH de su sistema.

2. A continuación, ejecute el comando [apt-get update
] a continuación para actualizar e instalar sed
en su sistema.
Este comando obtiene la información más reciente del paquete de las fuentes de paquetes configuradas, incluyendo las dependencias, archivos y scripts del paquete. Ejecutar este comando es necesario para asegurarse de instalar la última versión de sed y cualquier otro paquete que pueda necesitar.

3. Por último, ejecute el siguiente comando para verificar que el comando sed
esté instalado en su sistema.
Este comando imprime la ruta completa al ejecutable de sed, que en este ejemplo es /usr/bin/sed.
Una vez que haya instalado sed y verificado que está en su PATH, puede usar el comando sed
para realizar diversas transformaciones y manipulaciones de texto.

Reemplazo de Cadenas en un Archivo de Texto
sed es un editor de secuencias popular disponible en la mayoría de los sistemas operativos tipo Unix, y una de las funciones más útiles de sed es reemplazar cadenas en un archivo de texto.
A continuación se presentan algunos escenarios, pero no se limitan a ellos, donde el reemplazo de cadenas es útil:
- Actualizando una lista de URLs para reflejar un nuevo nombre de dominio.
- Cambiando los IDs de productos en una base de datos o archivo CSV.
- Formateando datos para importar en otro sistema y muchos más.
La sintaxis básica para usar `sed` es la siguiente, donde:
Placeholder | Function |
---|---|
command | Controls sed’s behavior. |
options | Allows you to customize the behavior of the sed command |
input_file | Specifies the file or text stream that you want to edit. Typically, you can specify a single file or stream, but concatenating multiple files or streams by redirection also works. |
output_file | Specifies the file that contains the results of your sed command. The file can be new or the same as input_file, depending on how you use sed. |
Supongamos que tienes un archivo de texto llamado urls.txt
que contiene una lista de URLs y deseas actualizar todas las URLs para usar un nuevo nombre de dominio.
1. Ejecuta los comandos echo
a continuación para crear el archivo urls.txt
en el directorio actual. Estos comandos no proporcionan salida, pero escriben textos especificados en el archivo.
2. A continuación, ejecuta el comando cat
para ver el contenido del archivo urls.txt. cat urls.txt
La salida a continuación confirma las tres antiguas URLs escritas en el archivo urls.txt.

3. Ahora, ejecuta el siguiente comando para buscar y sustituir (s
) todas las ocurrencias de la cadena old-domain.com
con new-domain.com
en el archivo urls.txt
.
Verás que las URLs en tu archivo de entrada se han actualizado con el nuevo dominio, como se muestra.

Reemplazar la N-ésima ocurrencia de una cadena
Además de la funcionalidad básica de búsqueda y reemplazo, `sed` tiene comandos integrados adicionales que te permiten realizar transformaciones de texto más complejas. Un caso de esto es reemplazar la n-ésima ocurrencia de la cadena de patrón en una sola línea de texto.
Por ejemplo, deseas actualizar el segundo campo en un archivo CSV con un nuevo valor o actualizar la tercera ocurrencia de una cadena en un volcado de base de datos.
La sintaxis básica para este comando es la siguiente donde:
patrón
– es la cadena a reemplazar.reemplazo
– es la cadena a utilizar como reemplazo.n
– is the nth occurrence of the string to replace (e.g.,1
=first occurrence,2
=second occurrence…).
Para ver cómo reemplazar la n-ésima ocurrencia de una cadena, siga estos pasos:
Ejecute el siguiente comando echo
para crear una línea de texto con tres ocurrencias del patrón rápido
. El comando sed
luego reemplaza (s
) la segunda ocurrencia (2
) del patrón rápido
con la cadena rápido
.
Como puede ver a continuación, solo la segunda ocurrencia del patrón rápido ha sido reemplazada con la cadena r{á}pido, mientras que todas las demás ocurrencias permanecen sin cambios.
El comando nth
es sensible a mayúsculas y minúsculas de forma predeterminada. Como resultado, el comando solo busca la coincidencia exacta del patrón. Para ignorar la diferencia de mayúsculas y minúsculas del patrón, vaya al siguiente paso.

? Tenga en cuenta que el comando
nth
cuenta las ocurrencias del patrón de izquierda a derecha. Además, el comandonth
solo funciona en una sola línea de texto. Para realizar una sustitución en varias líneas, utilice un método diferente que se muestra en la siguiente sección.
A continuación, ejecute el siguiente comando para reemplazar la segunda (2
) ocurrencia del patrón rápido
con rápido
ignorando (i
) la diferencia de mayúsculas y minúsculas.
La opción i
resulta útil al trabajar con texto con capitalización inconsistente.
En la salida a continuación, la segunda ocurrencia de la palabra rápida (QuiCk) se reemplaza con éxito por la cadena rápido — sin importar la mayúscula o minúscula.

Reemplazar Todas las Ocurrencias de un Patrón/Cadena Coincidente
En lugar de reemplazar la enésima ocurrencia de una cadena, tal vez planeas reemplazar todas sus ocurrencias. Hacerlo ayuda de manera significativa con tu plan de actualizar masivamente cada aparición de una cadena de Copyright con el año actual, por ejemplo.
1. Crea un archivo llamado input.txt con el siguiente contenido en tu editor de texto preferido.
This is a quick test.
The quick brown fox jumps over the lazy dog.
Quick, you need to finish this task before it gets too late.
2. A continuación, ejecuta el siguiente comando para reemplazar (s
) todas las ocurrencias de la palabra rápida
con rápido
en el archivo input.txt
. Una vez reemplazados, los cambios se escriben en el archivo output.txt
.
3. Ahora, ejecuta el siguiente comando para ver el contenido del archivo output.txt
y verificar si se ha realizado el reemplazo.
Verás que todas las ocurrencias de la palabra rápida se han reemplazado por rápido, como se muestra a continuación. Similar al comando nth
, el comando g
distingue entre mayúsculas y minúsculas y reemplaza solo las coincidencias exactas.
La cadena Quick no se reemplazará, como se muestra a continuación, pero puedes usar la opción i
para realizar sustituciones sin distinción entre mayúsculas y minúsculas.

Reemplazar una Cadena de Patrón Coincidente en una Línea Específica
Quizás ya sepas en qué línea de la cadena quieres reemplazar. ¿Por qué reemplazar todas las ocurrencias si puedes reemplazar cadenas en líneas específicas? Esta característica es útil al realizar cambios en una línea particular en un archivo o secuencia, pero dejando las otras líneas intactas.
A continuación se muestra la sintaxis para reemplazar una cadena desde una línea específica, donde n
representa el número de línea.
1. Crea un archivo llamado myfile.txt con el siguiente contenido.
test1
test2
test3
2. Luego, ejecuta el siguiente comando sed
para realizar lo siguiente:
- Buscar la palabra
test2
desde la segunda línea (2
) del archivomyfile.txt
. Reemplazar (s
) la palabratest2
contest2_changed
.Escribir los cambios (>
) en un nuevo archivo llamadomyfile_changed.txt
.
This command does not provide output to the terminal since the changes are written to a new file. But you will verify the changes in the following step.
3. Por último, ejecuta el siguiente comando cat para ver el contenido del archivo myfile_changed.txt
.
Como puedes ver a continuación, la segunda línea del archivo myfile.txt ha sido reemplazada con test2_changed, mientras que todas las demás líneas permanecen sin cambios.

Exclusivamente Sacando las Líneas Cambiadas de las Cadenas
En lugar de imprimir todo el contenido de un archivo después de realizar cambios, es posible que desees imprimir exclusivamente las líneas cambiadas. ¿Cómo? Usando la bandera p
junto con la opción -n
.
A continuación se muestra la sintaxis para imprimir exclusivamente las líneas cambiadas de las cadenas donde:
- La opción
-n
le indica ased
que suprima el comportamiento predeterminado de imprimir cada línea. - La bandera
p
indica ased
que imprima la salida del comando.
Abre tu archivo myfile.txt y reemplaza el contenido con lo siguiente. Observa que la segunda línea es incorrecta ya que la palabra first
debería ser second
en su lugar.
This is the first line of my file.
This is the first line of my file.
This is the third line of my file.
Ahora, ejecuta el siguiente comando sed
para reemplazar la cadena first
con second
en la segunda línea (2
) del archivo myfile.txt
pero solo muestra las líneas modificadas (p
).
Verás la salida de la segunda línea modificada solo en tu terminal, como se muestra a continuación.

Conclusión
En este tutorial, has utilizado diferentes ejemplos de uso de sed para realizar operaciones de búsqueda y reemplazo. Además, has tocado técnicas más avanzadas, como reemplazar ocurrencias específicas y mostrar solo las líneas modificadas.
sed es una poderosa herramienta de línea de comandos que te permite realizar diversas tareas de manipulación de texto. Ya sea haciendo reemplazos globales en todo un archivo o reemplazos específicos en líneas particulares, sed hará el trabajo.
Ahora, ¿por qué no explorar más sobre expresiones regulares? Las expresiones regulares son esenciales para muchas herramientas de manipulación de texto, incluido sed. Estas expresiones ahorran tiempo y reducen el esfuerzo ejercido. ¿Cuándo? Mientras realizas búsquedas complejas y operaciones de reemplazo en grandes cantidades de texto.