Introducción a Sed
sed
(editor de flujo) es una herramienta poderosa para analizar y transformar texto. A menudo se utiliza para realizar ediciones automatizadas en archivos o flujos de salida. Comencemos con algunas operaciones básicas de sed
.
Primero, crea un nuevo archivo para trabajar:
echo -e "Hello, world\nThis is a test\nHello, labex\nWorld of Linux" > sed_test.txt
Esto crea un archivo llamado sed_test.txt
en tu directorio actual con cuatro líneas de texto.
Ahora, usemos sed
para reemplazar texto:
sed 's/Hello/Hi/' sed_test.txt
Este comando reemplaza la primera ocurrencia de "Hello" con "Hi" en cada línea. Por defecto, sed
solo reemplaza la primera coincidencia en cada línea.
Nota: En este ejemplo, dado que "Hello" aparece solo una vez por línea, parece que todas las instancias se reemplazan incluso sin la bandera g
.
Para entender mejor el efecto de la bandera g
, modifiquemos sed_test.txt
para que haya múltiples ocurrencias de "Hello" en la misma línea:
echo -e "Hello, world. Hello everyone\nThis is a test\nHello, labex says Hello\nWorld of Linux" > sed_test.txt
Ahora, el contenido de sed_test.txt
es:
Hello, world. Hello everyone
This is a test
Hello, labex says Hello
World of Linux
Ejecuta el comando de reemplazo nuevamente sin la bandera g
:
sed 's/Hello/Hi/' sed_test.txt
La salida será:
Hi, world. Hello everyone
This is a test
Hi, labex says Hello
World of Linux
Puedes ver que solo se reemplaza la primera "Hello" en cada línea.
Ahora, realiza un reemplazo global utilizando la bandera g
:
sed 's/Hello/Hi/g' sed_test.txt
La salida será:
Hi, world. Hi everyone
This is a test
Hi, labex says Hi
World of Linux
Esta vez, se reemplazan todas las ocurrencias de "Hello" en cada línea con "Hi".
Explicación:
sed 's/Hello/Hi/'
: Reemplaza la primera coincidencia de "Hello" en cada línea.
sed 's/Hello/Hi/g'
: Reemplaza todas las coincidencias de "Hello" en cada línea.
- La bandera
g
significa "global", lo que indica que la sustitución se debe realizar para cada ocurrencia en la línea.
Ten en cuenta que estos comandos no modifican el archivo en sí; solo imprimen el texto modificado en la terminal. Para editar el archivo directamente, utiliza la opción -i
:
sed -i 's/Hello/Hi/g' sed_test.txt
Ahora, verifica el contenido del archivo para ver los cambios:
cat sed_test.txt