sed y awk sin angustia del man
sed y awk son dos programitas Unix que mueven texto. sed edita archivos línea a línea (reemplazar, borrar, insertar). awk lee tablas y hace cuentas o filtrados por columnas. Están en cada Mac, cada Linux, cada servidor al que te conectas por SSH. No necesitan instalación. También son célebremente crípticos: la sintaxis se diseñó en 1977 y no se ha actualizado.
Este asistente construye el comando por ti. Elige una acción (substituir, borrar una línea, imprimir columnas, sumar una columna...), rellena las entradas y el comando aparece a la derecha. Debajo, una vista previa en vivo ejecuta la misma lógica en tu navegador sobre un texto de muestra editable, así que ves el resultado antes de copiar y pegar.
Cubrimos el subconjunto más útil de ambas herramientas (substituir, borrar, insertar/añadir/cambiar líneas, imprimir rangos en sed; imprimir columnas, print condicional, contar, sumar, media, filtrar, programa a medida en awk), con un recetario de 20 recetas listas: borrar líneas en blanco, comprimir espacios, sumar una columna, agrupar por columna y contar, convertir CSV a TSV y más. Pulsa cualquier receta para cargarla en el generador.
Aviso: la vista previa usa regex JavaScript, cercana al POSIX extended regex pero no idéntica al GNU sed o al BSD sed. Para sustituciones cotidianas y trabajo por columnas da la respuesta correcta. Para casos límite (lookarounds, límites de palabra conscientes del locale, rangos de dirección complejos), consulta el FAQ.
Cómo se usa
- Elige la herramienta arriba: sed para ediciones a nivel de línea (reemplazar, borrar, imprimir, insertar) y awk para columnas (imprimir una columna, sumar, filtrar por valor).
- En modo sed elige la acción (Substitute, Delete, Print only matching, Insert before line N, Append after line N, Replace line N, Print lines N to M). Aparecen abajo las entradas adecuadas.
- Escribe tu patrón y reemplazo para substitute, o un número de línea para insert / append / change. Los flags (g, i, p, Nth) son chips que activas o desactivas.
- Edita la entrada de muestra a la derecha para que coincida con la forma de tus datos reales. El panel de salida se actualiza en vivo: ves exactamente qué hace el comando antes de copiarlo.
- Activa Edición in-place si quieres modificar el archivo directamente (`-i`). Elige GNU para Linux o BSD para macOS; el asistente muestra la variante correcta (`-i` frente a `-i ""`).
- En modo awk elige un separador de campo (whitespace por defecto, coma para CSV, punto y coma, tab o un carácter a medida). Luego elige una acción: imprimir columna N, print condicional, contar coincidencias, sumar, media, filtrar o escribir un programa a medida.
- Abre el recetario del final con 20 recetas listas (10 de sed, 10 de awk). Pulsa cualquier receta para cargarla, edítala y copia el comando final.
- Copia el comando de la derecha. Pega en tu terminal con tu nombre de archivo real en vez de `file.txt`. El panel de salida es para verificación, no para datos de producción: ejecuta el comando real sobre tu archivo cuando confíes en el resultado.
Cuándo te resulta útil
Seis momentos reales en los que sed o awk te ahorran minutos (u horas):
- Reemplazar una cadena en muchos archivos de golpe. Renombraste una variable de `userId` a `accountId` en un proyecto. `sed -i 's/userId/accountId/g' src/**/*.ts` hace todo el código en un comando, más rápido que el "buscar en archivos" del IDE y funciona por SSH en un servidor.
- Limpiar un log antes de analizar. El log tiene líneas en blanco, ruido de debug y 50 columnas cuando solo necesitas 3. `awk '/ERROR/ { print $1, $5, $9 }'` se queda solo con las filas de error y solo con las columnas de timestamp, estado y mensaje. Una línea, sin librería de parseo.
- Convertir entre CSV y TSV. Una herramienta exporta CSV, otra quiere TSV. `awk -F',' '{$1=$1; print}' OFS='\t'` cambia el separador de una pasada, sin Python, sin Excel, sin archivos temporales.
- Sacar un rango de fechas de un archivo. Necesitas las líneas 1000 a 2000 de un log de 50 000. `sed -n '1000,2000p' file.log` es la respuesta instantánea y funciona en un servidor remoto sin herramientas extra.
- Sumar una columna de un informe. La contable te envió un CSV de facturas. Quieres el total. `awk -F',' '{ sum += $5 } END { print sum }' invoices.csv` suma la columna 5 en todas las filas en milisegundos.
- Renombrar archivos en una carpeta. Tienes cientos de archivos como `IMG_001.jpg` y los quieres en minúsculas y datados. Un bucle con `sed` construyendo cada nombre nuevo hace el rename sin una línea de código: solo pegamento del shell.