20 Ejemplos de awk

En este artículo se presentan 20 ejemplos de awk para ayudarte a mejorar tus habilidades de programación. Awk es un lenguaje de programación de línea de comandos que se utiliza para procesar archivos de texto y extraer información de ellos. Con awk, puedes filtrar, buscar, reemplazar y manipular datos con facilidad. Los ejemplos que se presentan aquí te ayudarán a comprender mejor la sintaxis de awk y a utilizar sus funcionalidades para resolver distintos problemas.
Búsquedas dentro de un archivo
Ejemplo 1: Filtrar un archivo por palabra clave
Si deseas buscar una palabra clave en un archivo específico, puedes utilizar awk de la siguiente manera:
awk '/palabraclave/' archivo.txt
Esto devuelve todas las líneas que contienen la palabra clave "palabraclave". Si quieres buscar palabras claves específicas, puedes usar este comando:
awk '/palabraclave1|palabraclave2/' archivo.txt
Este comando devuelve todas las líneas que contienen "palabraclave1" o "palabraclave2".
Ejemplo 2: Contar ocurrencias de palabra clave
Si deseas contar el número de veces que se repite una palabra clave en un archivo, puedes utilizar el siguiente comando:
awk '/palabraclave/ {++contador} END {print contador}' archivo.txt
Esto devuelve el número de ocurrencias de la palabra clave "palabraclave" en el archivo.
Ejemplo 3: Buscar texto específico en una columna de un archivo CSV
Si tienes un archivo CSV y deseas buscar un texto específico en una columna en particular, puedes utilizar awk con el siguiente comando:
awk -F, '$2~/texto/ {print $0}' archivo.csv
Esto busca el texto en la segunda columna del archivo CSV y devuelve todas las filas que contienen ese texto.
Reemplazo de texto en un archivo
Ejemplo 4: Reemplazar un texto en un archivo
Si deseas reemplazar un texto en un archivo, puedes utilizar awk con el siguiente comando:
awk '{sub(/textoViejo/, "textoNuevo"); print}' archivo.txt
Esto encuentra la primera ocurrencia de "textoViejo" y lo reemplaza con "textoNuevo" en cada línea del archivo.
Ejemplo 5: Reemplazar texto en un archivo solo en filas que cumplen una condición
Si deseas reemplazar texto en un archivo solo en filas que cumplen una condición específica, puedes utilizar el siguiente comando:
awk '/condicion/ {gsub(/textoViejo/, "textoNuevo"); print} !/condicion/ {print}' archivo.txt
Esto busca las líneas que cumplen la condición y reemplaza todas las ocurrencias de "textoViejo" con "textoNuevo". Luego, imprime todas las líneas del archivo, incluyendo las que no cumplen la condición.
Ejemplo 6: Reemplazar texto en un archivo solo en una columna específica
Si deseas reemplazar texto en un archivo solo en una columna específica, puedes utilizar el siguiente comando:
awk -F, '{gsub(/textoViejo/, "textoNuevo", $2); print}' archivo.csv
Esto busca todas las ocurrencias de "textoViejo" en la segunda columna del archivo CSV y las reemplaza con "textoNuevo".
Filtrado y procesamiento de datos
Ejemplo 7: Sumar una columna de números en un archivo CSV
Si deseas sumar una columna de números en un archivo CSV, puedes utilizar el siguiente comando:
awk -F, '{suma += $2} END {print suma}' archivo.csv
Esto suma todos los valores en la segunda columna del archivo CSV y devuelve la suma total.
Ejemplo 8: Mostrar solo los campos que cumplen una condición
Si deseas mostrar solo los campos que cumplen una condición específica, puedes usar el siguiente comando:
awk '$2>10 {print $0}' archivo.txt
Esto muestra todas las filas del archivo en las que el segundo campo es mayor que 10.
Ejemplo 9: Imprimir solo filas distintas en un archivo
Si deseas imprimir solo las filas distintas en un archivo, puedes utilizar el siguiente comando:
awk '!a[$0]++' archivo.txt
Esto imprime solo las filas únicas en el archivo.
Ejemplo 10: Calcular la longitud de un campo en un archivo CSV
Si deseas calcular la longitud de un campo en un archivo CSV, puedes utilizar el siguiente comando:
awk -F, '{print length($2)}' archivo.csv
Esto imprime la longitud del segundo campo en cada fila del archivo.
Manipulación de la estructura del archivo
Ejemplo 11: Agregar un encabezado a un archivo CSV
Si deseas agregar un encabezado a un archivo CSV, puedes utilizar awk con el siguiente comando:
awk 'BEGIN {print "campo1, campo2, campo3"} {print}' archivo.csv
Esto agrega un encabezado al archivo CSV.
Ejemplo 12: Eliminar encabezado de un archivo CSV
Si deseas eliminar el encabezado de un archivo CSV, puedes utilizar el siguiente comando:
awk 'NR>1 {print}' archivo.csv
Esto elimina la primera línea del archivo CSV, que se considera el encabezado.
Ejemplo 13: Concatenar dos o más archivos
Si deseas concatenar dos o más archivos, puedes usar el siguiente comando:
awk 'FNR==1 && NR!=1{next;}{print}' *.txt > resultado.txt
Esto concatena todos los archivos .txt en el directorio actual y los guarda en un archivo llamado resultado.txt.
Manipulación avanzada de datos
Ejemplo 14: Ordenar filas por campo específico
Si deseas ordenar las filas de un archivo por un campo específico, puedes utilizar el siguiente comando:
awk -F, '{print $2","$1}' archivo.csv | sort
Esto imprime las filas del archivo CSV ordenadas por el segundo campo y luego por el primer campo.
Ejemplo 15: Duplicar filas en un archivo CSV
Si deseas duplicar filas en un archivo CSV, puedes utilizar el siguiente comando:
awk '{print; print}' archivo.csv
Esto imprime cada fila dos veces en el archivo CSV.
Ejemplo 16: Combinar datos de dos archivos en uno solo
Si deseas combinar los datos de dos archivos en uno solo, puedes utilizar el siguiente comando:
awk 'FNR==NR {a[$1]=$2; next} {print $0","a[$1]}' archivo1.csv archivo2.csv
Esto combina las filas de ambos archivos en uno solo, utilizando el campo común entre ambos archivos.
Conclusión
En este artículo has aprendido 20 ejemplos de awk para trabajar con archivos de texto. Desde filtrar y reemplazar texto hasta el procesamiento y manipulación avanzada de datos, awk es una herramienta útil para programadores que trabajen con archivos de texto en su trabajo diario. Inténtalo tú mismo y descubre cómo la potencia de awk puede ayudarte en tu trabajo.
Preguntas frecuentes
¿Qué es awk?
Awk es un lenguaje de programación de línea de comandos que se utiliza para procesar archivos de texto y extraer información de ellos.
¿Qué significa NR en awk?
NR es una variable especial en awk que hace referencia al número de registro actual (es decir, la línea actual) en el archivo.
¿Qué significa FNR en awk?
FNR es una variable especial en awk que hace referencia al número de registro actual dentro del archivo actual. Esta variable es útil cuando estás trabajando con múltiples archivos.
¿Cómo se pueden utilizar múltiples delimitadores en awk?
Puedes utilizar múltiples delimitadores en awk utilizando la opción -F y separando los delimitadores con una barra vertical. Por ejemplo:
awk -F'[,:]' '{print $1,$3}' archivo.txt
Esto utiliza como delimitadores la coma y los dos puntos y devuelve los campos 1 y 3 de cada línea del archivo.
[nekopost slugs="numero-de-linea-grep-en-la-salida,salida-de-bash-por-error,echo-sin-nuevo-personaje-de-linea-bash,variables-de-exportacion-en-bash,ejemplo-de-fuente-de-bash,search-bash-linux-file,use-multiples-delimeters-en-awk,ajustar-el-tamano-del-panel-tmux,incrementar-una-variable-en-bash"]

Deja una respuesta