AWK - Una introducción y tutorial

AWK - Una introducción y tutorial

Cuando se trabaja con Linux, una de las herramientas más potentes disponibles para el procesamiento de texto es el comando AWK. Es una herramienta de línea de comandos versátil que se puede utilizar para una amplia gama de tareas, incluida la búsqueda, el filtrado y la manipulación de datos de texto.

En este artículo, cubriremos los conceptos básicos de AWK, incluida su sintaxis, cómo usarla en la línea de comandos y algunos ejemplos básicos de cómo se puede usar para procesar datos de texto.

Que es AWK?

AWK es un lenguaje de programación diseñado para el procesamiento de texto y la extracción de datos. Fue desarrollado en Bell Labs en la década de 1970 y ahora es una característica estándar de la mayoría de los sistemas operativos basados ​​en UNIX, incluido Linux.

AWK es particularmente útil para procesar archivos de texto, ya que le permite buscar, filtrar y manipular datos basados ​​en patrones o condiciones específicos. Funciona leyendo datos de un archivo o entrada estándar, aplicando un conjunto de reglas o comandos a esos datos, y luego imprimiendo los resultados.

Sintaxis AWK

La sintaxis básica de un comando AWK es la siguiente:

archivo AWK 'Patrón Action'
1archivo AWK 'Patrón Action'

Aquí, el patrón especifica las condiciones que deben cumplirse para la acción que se realizará, y el archivo especifica el archivo en el que debe operar el comando. Si no se especifica ningún archivo, AWK leerá datos de la entrada estándar (i.mi., el teclado).

El patrón puede ser una expresión regular o un rango de valores, y la acción puede ser cualquier comando AWK válido, incluidas declaraciones de impresión, variables y bucles.

Declaraciones AWK One-Liner

Una de las mejores cosas de AWK es que se puede usar para escribir frases, comandos cortos y poderosos que se pueden ejecutar directamente desde la línea de comandos.

Aquí hay algunos ejemplos de frases AWK que puede usar para realizar tareas de procesamiento de texto comunes:

  • Imprima la primera columna de un archivo CSV:
    AWK -F "," 'imprimir $ 1'.CSV  
  • Imprima columnas específicas de un archivo CSV:
    Awk -f "," 'imprimir $ 1, $ 3'.CSV  

    Este comando utiliza la opción -f para especificar que el archivo está separado por comas y luego imprime la primera y tercera columnas del archivo.

  • Cuente el número de líneas en un archivo:
    AWK 'End imprimir nr' archivo.TXT  
  • Imprima todas las líneas que coinciden con un patrón específico ::
    AWK '/ Pattern/ print' archivo.TXT  
  • Cuente el número de ocurrencias de un patrón en un archivo:
    AWK '/ Pattern/ Count ++ End Pint Count' Archivo.TXT  
  • Imprima la última línea de un archivo:
    archivo AWK 'End print'.TXT  
  • Imprima el valor promedio de una columna en un archivo:
    AWK 'Sum+= $ 2 End PRINT SUM/NR' Archivo.TXT  
  • Imprima el promedio de la segunda columna en un archivo:
    AWK 'Sum += $ 2 End PRINT SUM/NR' Archivo.TXT  
  • Imprima las líneas en orden inverso:
    AWK 'a [i ++] = $ 0 end for (j = i-1; j> = 0;) imprima un archivo [j--]'.TXT  
  • Imprima el contenido de un archivo:
    archivo AWK 'print'.TXT  

    Este comando simplemente lee el contenido del archivo.txt e imprime cada línea en la pantalla.

  • Busque líneas que contengan un patrón específico:
    Awk '/ error/ print' archivo.registro  

    Este comando busca líneas que contengan la palabra "error" y las imprima en la pantalla.

Puede que le guste: Operaciones aritméticas AWK: una guía para principiantes para los métodos de cálculo básicos

AWK para la administración del sistema

Ahora veamos algunos ejemplos prácticos de cómo AWK se puede utilizar para las tareas de administración del sistema.

Analizando archivos de registro

Los archivos de registro son una herramienta esencial para que los administradores del sistema supervisen el rendimiento del sistema y diagnostican problemas. Sin embargo, pueden ser difíciles de leer y analizar, especialmente cuando contienen grandes cantidades de datos.

AWK se puede usar para analizar archivos de registro y extraer información relevante. Por ejemplo, el siguiente comando extraerá todas las direcciones IP de un archivo de registro de acceso de Apache:

Awk 'imprimir $ 1' acceso.registro
1Awk 'imprimir $ 1' acceso.registro

Este comando imprimirá la primera columna del archivo de registro de acceso, que contiene la dirección IP del cliente.

Monitoreo de recursos del sistema

AWK también se puede utilizar para monitorear los recursos del sistema, como la CPU y el uso de la memoria. Por ejemplo, el siguiente comando mostrará los 5 procesos principales que consumen la mayor cantidad de CPU:

ps aux | Awk 'imprimir $ 2, $ 3, $ 11' | sort -k2rn | cabeza -n5
1ps aux | Awk 'imprimir $ 2, $ 3, $ 11' | sort -k2rn | cabeza -n5

Este comando utilizará PS para enumerar todos los procesos en ejecución, luego use AWK para extraer la ID de proceso, el uso de la CPU y el nombre del proceso. El comando de clasificación se usa para ordenar la salida mediante el uso de la CPU, y el comando Head se usa para mostrar solo los 5 resultados principales.

Generación de informes

Los administradores del sistema a menudo necesitan generar informes sobre varios aspectos del rendimiento y el uso del sistema. AWK se puede usar para extraer y resumir datos de archivos de registro, archivos de sistema y otras fuentes.

Por ejemplo, el siguiente comando generará un informe sobre el uso del disco de todos los sistemas de archivos montados:

DF -H | Awk 'imprimir $ 1, $ 5'
1DF -H | Awk 'imprimir $ 1, $ 5'

Este comando utilizará DF para enumerar todos los sistemas de archivos montados, luego use AWK para extraer el nombre del sistema de archivos y el porcentaje de espacio de disco utilizado.

Modificación de archivos de configuración

Los archivos de configuración son una parte esencial de la administración del sistema, y ​​a menudo deben modificarse para optimizar el rendimiento del sistema o solucionar problemas. AWK se puede usar para modificar los archivos de configuración en su lugar, sin la necesidad de edición manual.

Por ejemplo, el siguiente comando reemplazará todas las ocurrencias de "localhost" con "ejemplo.com ”en el archivo de configuración de Apache:

AWK 'gsub (/localhost/", ejemplo.com "); imprimir '/etc/apache2/apache2.conf> /tmp /apache2.confusión
1AWK 'gsub (/localhost/", ejemplo.com "); imprimir '/etc/apache2/apache2.conf> /tmp /apache2.confusión

Este comando usará AWK para buscar la cadena "localhost" en el archivo de configuración de Apache y reemplazarlo con "Ejemplo.com ". El archivo de configuración modificado se escribe en un archivo temporal.

Conclusión

AWK es una herramienta poderosa para el procesamiento de texto y la extracción de datos en Linux. Es relativamente fácil de aprender y proporciona una amplia gama de capacidades que se pueden usar para manipular y transformar datos de texto.

En este artículo, cubrimos los conceptos básicos de AWK, incluida su sintaxis, cómo usarla en la línea de comandos y algunos ejemplos básicos de cómo se puede usar para procesar datos de texto. También cubrimos AWK One-Finers, que son comandos poderosos que pueden usarse para realizar tareas de procesamiento de texto comunes con un esfuerzo mínimo.

Con este conocimiento, puede comenzar a explorar características más avanzadas de AWK, incluidas expresiones regulares, variables y funciones. Al dominar AWK, puede convertirse en un usuario de Linux más eficiente y efectivo, capaz de procesar grandes cantidades de datos de texto con facilidad.