Awk es la utilidad más popular que se desarrolla con el fin de extraer datos, procesar textos y, además, crear informes formateados. Es mucho más similar a sed pero más poderoso que sed ya que sed tiene limitaciones en el procesamiento de texto. AWK no tiene un significado específico para su nombre, ya que utiliza la primera letra de sus desarrolladores Alfred Aho, Peter J. Weinberger y Brian Kernighan.
En este artículo, aprenderemos 10 asombrosos comandos awk que debes conocer. Creé y agregué el siguiente conjunto de datos en student.txt como ejemplo. El conjunto de datos tiene 4 columnas donde el primer campo contiene el primer nombre, el segundo campo contiene el segundo nombre, el tercer campo contiene la edad y el último contiene la clase.
Impresión de campo específico usando variable
Awk tiene muchas variables preconstruidas que tienen su respectivo propósito. Usando este comando podemos imprimir todos los datos de campo específicos usando $x donde x se refiere a la posición de numeración del campo.
$ awk '{print $1, $2}' student.txt
COMENZAR Variable
La variable BEGIN se usa para agregar un encabezado o título a los datos resultantes, ya que ejecutó el script antes de procesar los datos. Ayuda en la indexación al formatear las tablas de datos. En el siguiente ejemplo, imprimí un texto como indexación y luego imprimí todos los nombres de los estudiantes.
$ awk 'BEGIN {print "Students : "} {print $1}' student.txt
FIN Variable
END es justo lo contrario de BEGIN ya que ejecuta el script después del procesamiento de datos. Se puede utilizar para el informe final del conjunto de datos. En el siguiente ejemplo, imprimí toda la edad del estudiante y luego imprimí algunos mensajes finales.
$ awk '{print $3} END { print "These are student age " } ' student.txt
Separador de archivos
El espacio y el tabulador son separadores predeterminados del comando awk; sin embargo, podemos separar el texto en función de otros separadores como coma, barra oblicua, etc. Para lograr esto, debemos agregar el indicador -F al comando y el separador proporcionado entre comillas simples. .
$ awk -F':' '{print $1}' /etc/passwd
Ejecutar secuencia de comandos desde un archivo
También podemos ejecutar el script awk desde el archivo, lo que nos brinda la tendencia de crear informes de manera eficiente. Para esto, debe crear el archivo, luego escribir el script y ejecutarlo con el comando awk. Para la demostración, puede crear un archivo con el nombre demo_script y copiar y pegar el siguiente script.
$ vi demo_script { sum+=$3 } END { print("Sum of all student age is", sum) }
El comando awk proporciona un indicador -f para ejecutar el script desde el archivo.
$ awk -f demo_script student.txt
Uso de secuencias de comandos múltiples
Podemos ejecutar múltiples scripts usando el punto y coma. En el siguiente ejemplo, imprimí un texto y luego canalicé la salida, con awk e imprimí el resultado modificado.
$ echo "Hello, Dr. John" | awk '{$3="George"; print $0}'
Cuenta el número de líneas
Podemos asignar el número al informe utilizando la variable NR, que es una variable integrada de awk que imprime automáticamente el número de línea en el informe.
$ awk '{print NR "\t" $0}' student.txt
Número de recuento de campos
A veces, mientras preparábamos los datos, olvidamos agregar datos en la columna específica, lo que puede generar irregularidades en el informe. Podemos contar campos usando la variable NF, lo que nos facilita la revisión y organización de los informes.
$ awk '{print NR".",$0 "\n Count=" NF}' student.txt
Si Condición
Podemos usar la condición if para preparar un informe condicional. En el siguiente ejemplo, imprimimos todos los estudiantes cuya edad es menor de 16 años
$ awk ' BEGIN{ print "Student whose age are under 16 are:" } { if($3<16){ print $1 } }' student.txt
Para Bucle
En el siguiente ejemplo, usamos for loop para imprimir 5 números aleatorios en sucesión. Para generar números aleatorios, utilizaremos la función rand(), que es una función integrada en el sistema. Esta función generará un número aleatorio en decimal, por lo que debemos multiplicar 100 para obtener números aleatorios del 1 al 100.
$ awk 'BEGIN { for (i = 1; i <= 5; i++){ print int(100 * rand()) } }'
Conclusión
En este artículo, aprendimos sobre los 10 asombrosos comandos y scripts de awk. Espero que te guste este artículo.