Comando awk de Linux con 10 ejemplos
CLos sistemas informáticos siempre se han utilizado para analizar datos valiosos almacenados en archivos de texto simples. A su vez, los propios sistemas informáticos se gestionan mediante archivos de registro. Lo que es potencialmente común en estas dos situaciones es que contienen una gran cantidad de datos, que a menudo deben simplificarse antes de leer los datos; de lo contrario, es confuso.
Por ejemplo, si está leyendo algunos datos organizados en forma tabular, desea algunas columnas, no desea otras.
Este requisito era terrible incluso en el pasado y, en consecuencia, el Proyecto GNU tiene una herramienta increíble que ayuda a los usuarios a filtrar y extraer datos para una mejor experiencia. Esa herramienta es AWK.
Historia
AWK es en realidad un lenguaje de programación dedicado al procesamiento de texto. Se utiliza para la extracción de datos en patrones específicos. Fue desarrollado en la década de 1970 por Bell Labs, por Alfred Aho, Peter Weinberger y Brian Kernighan (las iniciales de sus apellidos dieron origen al nombre). El desarrollo de awk no se detuvo allí. Se introdujo una nueva versión en 1985, que trajo nuevos cambios al comando awk, incluida la capacidad de manejar múltiples flujos de entrada, expresiones regulares calculadas, funciones definidas por el usuario y mucho más. En resumen, la actualización lo convirtió en un lenguaje de programación más poderoso.
Awk tiene una implementación diferente. Para asegurarse de que haya una implementación adecuada que ofrezca un enfoque estándar, Paul Rubin escribió gawk en 1986. Funcionó bien con el awk más nuevo.
Aparte de eso, en 1989 System V Release, se agregaron nuevas características. Los desarrolladores también mejoraron sus esquinas oscuras, haciéndolo mejor para que los programadores y usuarios lo usen. El último cambio ocurrió en 1997 cuando awk vio el acceso a la red, proporcionando a los usuarios la capacidad de resolver problemas de forma remota.
La última reescritura realizada en 2011 cuando John Haque reescribió los aspectos internos de Gawk.
Cosas que puede hacer con AWK
A estas alturas, debería estar algo claro de lo que es capaz AWK. Es un lenguaje de secuencias de comandos de propósito general que le permite manejar el procesamiento de texto. Los usuarios avanzados también pueden usarlo para análisis e informes.
AWK no es como otros lenguajes de programación, ya que se basa en datos, en lugar de un lenguaje de programación procedimental. Eso significa que puede usarlo de manera efectiva para realizar acciones contra la entrada de texto. En resumen, puede usarlo para transformar datos, ingresarlos y también enviarlos como salida estándar.
En resumen, puede usar AWK para realizar operaciones simples como dividir cada línea de entrada en campos, escanear un archivo línea por línea, realizar una acción (es) en las líneas de coincidencia, ¡y así sucesivamente! El comando awk también es útil para informes con formato de procedimiento y transforma archivos de datos. Además, también obtiene acceso a construcciones de programación como bucles y condicionales, operaciones aritméticas y de cadena, y líneas de salida de formato.
Cómo funciona awk
En esta sección, aprenderemos cómo funciona awk. Es importante saber que awk tiene diferentes implementaciones. Para asegurarnos de que estamos en la misma página, discutiremos y usaremos la implementación de GNU, que se conoce popularmente como gawk. En la mayoría de los casos, el gawk está enlazado simbólicamente al intérprete de awk.
Para obtener una buena comprensión, primero debemos comprender los registros y los campos.
Es bien sabido que awk puede procesar flujos de texto y archivos de datos. Para procesar los datos, la entrada se divide en campos y registros. Para garantizar que awk no se sobrecargue, se procesa un registro en un momento dado hasta que se alcanza el final de la entrada. Además, los registros se dividen en secciones simples utilizando un separador de registros con caracteres. Además, cada registro se separa mediante caracteres de nueva línea. Esto significa que cada línea puede denominarse registro.
Puede elegir establecer un nuevo separador de registros utilizando la variable RS.
Luego viene el separador archivado. Como es habitual, cada registro tiene campos y se separan mediante el separador de campos. El separador de campo puede ser espacios en blanco, tabulaciones, caracteres de nueva línea y espacio. Además, se hace referencia a cada campo mediante el símbolo $, mientras que el número de campo comienza con 1. Esto significa que el primer campo se puede denotar como $ 1 mientras que el segundo campo se denota como $ 2. De esta forma, el n-ésimo campo se puede denotar como $ nf.
El programa awk
El segundo aspecto de awk es el programa awk. Si desea trabajar con awk, debe escribir un programa que permita que el comando ejecute o procese el texto. El programa awk ofrece muchas funcionalidades usando reglas y funciones definidas por el usuario. Las reglas funcionan con un par de acciones o un patrón, y las reglas se separan mediante punto y coma o una nueva línea.
En caso de que se lo esté preguntando, un programa awk se verá como a continuación.
pattern { action } pattern { action } ....
En resumen, el programa awk funciona haciendo coincidir los registros en función de patrones. Si el patrón se encuentra en el registro, lo procesará. Si no es así, se hace coincidir todo el registro para asegurarse de que algo coincida según las reglas.
- Ejemplo 1: leer scripts AWK
- Ejemplo 2: uso de varios comandos
- Ejemplo 3: uso de variable
- Ejemplo 4: preprocesamiento de AWK
- Ejemplo 5: lectura de secuencia de comandos desde archivo
- Ejemplo 6: posprocesamiento de AWK
- Ejemplo 7: variables definidas por el usuario
- Ejemplo 8: funciones integradas
- Ejemplo 9: Dar formato a la impresión
- Ejemplo 10: comandos estructurados
- Conclusión
Ejemplos de comandos awk
Ahora que tenemos una buena comprensión del comando awk y cómo funciona, es hora de que veamos algunos de los ejemplos del comando awk.
Si nunca ha usado awk antes, es posible que desee saber que awk se puede usar con opciones como las siguientes:
awk options program file
Las opciones que puede usar con awk incluyen las siguientes:
- - archivo f: se utiliza para especificar el archivo que contiene el script awk
- -F fs: se utiliza para especificar el separador de archivos.
- -v var = valor: se utiliza para declarar una variable.
Ejemplo 1: leer scripts AWK
Una de las formas más comunes de usar awk es leer scripts. Como usuario de Linux, puede crear un script awk utilizando los marcadores de comillas simples.
Para hacerlo, debe escribir el siguiente comando en la terminal.
$awk '{print "Welcome to Hello, World -- AWK tutorial"}'
En el ejemplo anterior, lo que escriba se devolverá a la pantalla. El comando continuará ejecutándose hasta que lo finalice presionando CTRL + D.
Ejemplo 2: uso de varios comandos
Otro uso común de awk es utilizar varios comandos. Como usuario, es posible que desee combinar dos comandos awk en uno para obtener el resultado deseado. En este ejemplo, generaremos una cadena y luego reemplazaremos la segunda palabra en la cadena con una nueva entrada.
$echo "Hello World" | awk '{$2 = "Universe; print $0"}'
En el ejemplo anterior, primero hicimos eco de "Hola, mundo" en la terminal. A continuación, concatenamos otro comando awk en el que reemplazamos la segunda palabra con Universe, y finalmente generamos la cadena, que es Hello Universe.
Ejemplo 3: uso de variable
Las variables le permiten almacenar información y acceder a ellas. Si ha utilizado lenguajes de programación antes, seguro que los conoce. En el caso de awk, lo usa para procesar archivos de texto. Usando las variables, puede acceder a ciertos campos de datos dentro del archivo tal como se muestra a continuación.
Para este propósito, creamos un nuevo archivo de texto, mynewfile, donde ingresamos algunas líneas aleatorias pero hermosas.
A continuación, debe ejecutar el comando, como se muestra a continuación.
awk '{print $1}' mynewfile
Como puede ver, genera esa variable en particular que muestra ese campo del archivo. Además, debería ver el error que cometí.
Ejemplo 4: preprocesamiento de AWK
Con el comando awk, puede agregar preprocesamiento. Para hacerlo, debe utilizar la palabra clave BEGIN.
Si está leyendo con atención, creamos un nuevo archivo arriba. Intentemos utilizar el preprocesamiento de awk para mostrar el contenido del archivo.
El comando para ello es el siguiente.
awk 'awk BEGIN {print "The content of the file:"} > {print $0}' , mynewfile
La captura de pantalla de ejemplo anterior no es correcta. Utilicé "Begin" en lugar de "BEGIN", por lo que no ve la ejecución de la instrucción de impresión. ¡Te dejo esto para que lo pruebes y veas cómo va tu resultado!
Ejemplo 5: lectura de secuencia de comandos desde archivo
Este es complicado. Aquí, puede usar el script awk para leer un archivo.
Creamos un nuevo script que contiene lo siguiente.
{print $1 "universe starts at " $6"}
Guardamos el archivo como un guión.
Ahora, ejecute el siguiente comando en la terminal.
$awk -F: -f newscript /etc/passwd
Fascinante, ¿verdad?
Ejemplo 6: posprocesamiento de AWK
A continuación, echamos un vistazo al posprocesamiento de AWK. Funciona de manera similar al preprocesamiento, pero esta vez, el posprocesamiento utiliza el comando END.
$ awk 'BEGIN {print "The file content starts now:"} > > {print $0} > > END {print "The File ends"}' mynewfile
Ejemplo 7: variables definidas por el usuario
También puede usar variables dentro del comando awk sin usar un número o signo de dólar.
A continuación se muestra un ejemplo.
$awk ' BEGIN{ test = "Welcome to FossLinux Awesome Linux Family" print test } '
Ejemplo 8: funciones integradas
Los comandos awk también son útiles con sus funciones integradas. Por ejemplo, puede utilizar funciones matemáticas y funciones de cadena.
$ awk 'BEGIN {x - "fossLinux"; print toupper(x)}'
$ awk 'BEGIN {x=exp(35); print x}'
Ejemplo 9: Dar formato a la impresión
También puede formatear la función printf que viene con awk. Hay muchos modificadores que puede utilizar. Por ejemplo, puede utilizar c para imprimir como una cadena; también puede usar d para un valor entero, y así sucesivamente.
$ awk 'BEGIN { x = 200 * 200 printf "The result is: %en", x }'
Ejemplo 10: comandos estructurados
También puede utilizar comandos estructurados como if, else, while o for loop. Veamos el siguiente ejemplo del comando if.
$ awk '{if ($1 > 20) print $2}' mynewfile
Conclusión
Esto nos lleva al final de nuestro tutorial de comandos awk. Entonces, ¿le resultó útil y lo va a utilizar para su trabajo? Comenta a continuación y háznoslo saber.
Deja una respuesta