Búsqueda de sitios web

Guía del lenguaje de programación AWK en Linux


Introducción

AWK es un lenguaje de programación utilizado para el procesamiento de textos en Linux. Está diseñado para manipular datos en archivos de texto, lo que lo convierte en una herramienta ideal para tareas de análisis y gestión de datos. Con una variedad de funciones y operadores integrados, AWK puede realizar tareas simples de búsqueda y reemplazo o transformaciones de datos complejas. Su sintaxis concisa y su versatilidad permiten una fácil manipulación de archivos de texto. AWK es una poderosa herramienta para quienes trabajan con archivos de texto en entornos Linux.

Proporcionemos una guía para principiantes sobre el lenguaje de programación AWK en Linux. Cubriremos la sintaxis básica del lenguaje, los diferentes tipos de operaciones que se pueden realizar usando AWK y cómo usar AWK para procesar archivos de texto. También proporcionaremos ejemplos de código y resultados para cada una de las operaciones cubiertas.

Instalación de AWK en el sistema operativo Linux

Una forma de instalarlo es utilizando el administrador de paquetes proporcionado por nuestra distribución de Linux. Aquí está el comando de instalación:

$ sudo apt-get install gawk

Después de la instalación, podemos verificar la versión de AWK en Linux:

$ awk --version

Si AWK está instalado, el comando mostrará el número de versión.

Variables en el lenguaje de programación AWK

AWK proporciona una serie de variables integradas que se pueden utilizar en patrones y acciones. Las variables más utilizadas son:

  • NR - representa el número de registro (línea) actual

  • NF: representa el número total de campos en el registro de entrada.

  • $0: el registro actual completo.

  • $1, $2, $3,… − El primer, segundo, tercer campo… del registro actual.

Además de estas variables integradas, AWK también permite variables definidas por el usuario. A las variables definidas por el usuario se les pueden asignar valores utilizando el operador =.

Opciones de línea de comandos de AWK

AWK normalmente se invoca desde la línea de comando usando el comando awk, que acepta varias opciones y argumentos. Aqui hay una lista de opciones de uso comun:

  • -F: especifica el separador de campos para los archivos de entrada.

  • -v : establece un valor para una variable.

  • -f: especifica el archivo de script AWK que se ejecutará.

  • -n − deshabilita la impresión automática de líneas.

  • -W - habilita advertencias.

Extraer campos de un archivo usando AWK

Supongamos que tenemos un nombre de archivo CSV 'filename.csv' con el siguiente formato:

name, age, gender
Papan, 22, Male
Priya, 27, Female

Para extraer los campos de edad y sexo, podemos usar el siguiente comando:

$ awk -F, '{ print $2, $3 }' filename.csv

Este código AWK imprimirá el segundo y tercer campo (columnas) de un archivo CSV llamado "nombre de archivo.csv", con el delimitador como una coma (',').

Aquí está la explicación:

  • 'awk': el comando utilizado para ejecutar un script AWK

  • '-F,' - Esta opción establece el separador de campo en una coma. Esto le dice a AWK que trate el archivo CSV como si tuviera comas como delimitadores entre campos.

  • “ ' { print $2, $3 }' ” − Este es el script AWK en sí. Le dice a AWK que imprima el segundo y tercer campo de cada línea del archivo, separados por un espacio.

age gender
22 Male
27 Female

Este comando establece el separador de campos en coma (-F,) e imprime el segundo y tercer campo ($2, $3) para cada línea del archivo.

Filtrar datos usando el comando AWK

Tenemos un archivo llamado "data.txt" que contiene información sobre los estudiantes como su nombre, edad y grado. Queremos filtrar solo a los estudiantes que tienen una calificación de "A".

Ejemplo

Coloque el siguiente contenido en el archivo "data.txt":

John, 18, A
Sara, 19, B
Mike, 20, A
Lisa, 18, C
Tom, 19, A

Para filtrar a los estudiantes que tienen una calificación de "A", podemos usar el siguiente comando AWK:

$ awk '$3=="A" {print}' data.txt

Producción

John, 18, A
Mike, 20, A
Tom, 19, A

Como podemos ver, sólo se han impreso las filas que tienen una calificación de "A".

Ejemplo

También podemos usar la declaración if en el comando AWK para realizar un filtrado más complejo. Por ejemplo, si queremos filtrar solo a los estudiantes mayores de 18 años y con una calificación de "A", podemos usar el siguiente comando AWK:

$ awk '$2>18 && $3=="A" {print}' data.txt

Producción

Mike, 20, A
Tom, 19, A

Como podemos ver, sólo se han impreso las filas que cumplen ambas condiciones.

Implementación de bucles mediante el comando AWK

Hay 3 bucles:

  • mientras bucle

  • bucle hacer-mientras

  • en bucle

Aquí estamos implementando únicamente el "bucle for".

Primero cree un archivo 'input.txt' y coloque el siguiente contenido:

Soumen,25
Bob,30
Papan,22
Aditya,40
Joy,35

Ahora, exploremos cómo podemos usar bucles en AWK para procesar los datos de este archivo.

Crea otro nombre de archivo 'program.awk'

El siguiente programa AWK utiliza un bucle for para imprimir cada línea del archivo:

{
   for (i = 1; i <= NF; i++) {
      printf("%s ", $i);
   }
   printf("
");
}

En este programa, el patrón está en blanco, lo que significa que la acción se aplicará a cada línea del archivo. La acción consta de un bucle for que itera sobre cada campo (columna) de la línea utilizando la variable NF (número de campos). Dentro del bucle, la función printf se utiliza para imprimir cada campo seguido de un espacio. Después del ciclo, la función printf se usa nuevamente para imprimir un carácter de nueva línea.

Para ejecutar este programa, podemos usar el siguiente comando:

$ awk -F, -f program.awk input.txt

Donde "program.awk" es el nombre de archivo del programa AWK y "-F", especifica que el separador de campo es una coma.

Soumen,25
Bob,30
Papan,22
Aditya,40
Joy,35

Podemos ver que imprime todas las líneas del archivo 'input.txt'.

Conclusión

Este artículo presenta el lenguaje de programación AWK en Linux y ofrece ejemplos prácticos de código y su correspondiente resultado. AWK es una herramienta altamente eficiente para procesar datos de texto y extraer información relevante de ellos. La guía cubre los conceptos fundamentales de programación de AWK, incluidos los bucles. Con este conocimiento, estaremos equipados para crear nuestros propios programas AWK en Linux.