Pregunta 1¿Cómo se comporta sed 's/a/X/' f en cada línea?
sed — Sustitución y extracción
Practica sed: 's/a/X/' reemplaza la primera coincidencia por línea y g reemplaza todas, -n '2p' imprime una línea específica, '/two/d' elimina las líneas que coinciden y -i edita el archivo en el sitio — ilustrado y en una terminal del navegador.
Reemplazar texto — s/old/new/ y g
sed es un editor de flujo: lee la entrada línea a línea, la transforma con las reglas que le das y escribe el resultado. El uso más común es la sustitución, escrita como sed 's/old/new/'. s significa sustituir, / separa las partes y reemplaza old por new. La parte old también puede usar las expresiones regulares que aprendiste antes (^ $ . *).
Sin una g al final, s/old/new/ reemplaza solo la primera coincidencia encontrada en cada línea. Añadir g al final como en s/old/new/g reemplaza cada coincidencia en esa línea.
| Forma | Significado | Ejemplo |
|---|---|---|
s/old/new/ | Reemplaza solo la primera coincidencia por línea | sed 's/a/X/' f |
s/old/new/g | Reemplaza todas las coincidencias en la línea | sed 's/a/X/g' f |
g solo cambia la primera coincidencia en la línea; con g se reemplaza cada coincidencia en la línea.printf 'aaa\nbbb\n' > s.txt # crear el archivo material
sed 's/a/X/' s.txt # solo la primera a -> Xaa
sed 's/a/X/g' s.txt # todas las a -> XXX
Extraer y eliminar líneas — -n 'Np' y /pat/d
sed -n 'Np' imprime solo la línea N. Pones el número de línea que quieres mostrar en lugar de N (para la línea 2, 2p). Como sed imprime todas las líneas por defecto, -n desactiva esa salida automática y p (print) indica explícitamente la línea que quieres mostrar. Así, sed -n '2p' solo muestra la segunda línea.
sed '/pat/d' elimina las líneas que coinciden con pat y muestra el resto. d es delete y la parte /pat/ es la condición que selecciona las líneas a borrar. Úsalo cuando quieras descartar solo las líneas que contienen cierta palabra y ver el resto.
| Forma | Significado | Ejemplo |
|---|---|---|
-n 'Np' | Imprime solo la línea N | sed -n '2p' f |
/pat/d | Elimina las líneas que coinciden con pat | sed '/two/d' f |
-n 'Np' extrae solo la línea especificada, mientras que /pat/d muestra todo excepto las líneas que coinciden.printf 'one\ntwo\nthree\n' > lines.txt # crear el archivo material
sed -n '2p' lines.txt # solo la línea 2, two
sed '/two/d' lines.txt # one y three, sin la línea two
Editar un archivo en el sitio — sed -i
Hasta ahora sed solo ha imprimido resultados en pantalla, dejando el archivo original sin cambios. Añadir sed -i edita el archivo directamente con el resultado. Es muy útil para reemplazos masivos en archivos de configuración, pero como el contenido original no se conserva, después de reescribir usemos cat para comprobar el contenido.
| Forma | Significado | Ejemplo |
|---|---|---|
-i | Edita el archivo en el sitio | sed -i 's/a/Z/' f |
-i solo imprime en pantalla; con -i reescribe el propio archivo.sed -i no se puede deshacer
sed -i reescribe el archivo en el sitio y no conserva el contenido original. Antes de usarlo en un archivo de configuración real, la manera segura es ejecutarlo primero sin -i, comprobar el resultado en pantalla, confirmar que hace lo que quieres y solo entonces añadir -i.
printf 'apple\nbanana\n' > fruit.txt # crear el archivo material
sed -i 's/apple/cherry/' fruit.txt # editar el archivo en el sitio
cat fruit.txt # comprobar cherry y banana
Verificación de conocimientos
Responde cada pregunta una a una.
Pregunta 2¿Qué muestra ejecutar sed -n '2p' f?
Pregunta 3¿Qué hace el -i en sed -i 's/a/Z/' f?