¿Cómo Escribir Comandos y Scripts AWK?

El comando awk es un método muy útil para procesar o analizar archivos de texto en Linux. En particular, analiza los archivos de datos organizados por líneas (filas) y columnas. Los comandos awk simples se pueden ejecutar desde la línea de comandos. Las tareas más complejas deben escribirse como programas awk (llamados scripts awk) en un archivo. En este artículo te enseñaremos como escribir comandos y scripts AWK en Linux. No te vayas…

Conceptos básicos escribir comandos y scripts AWK

Este comando en particular proporciona un lenguaje de scripting para el procesamiento de texto con el cual podemos definir variables, utilizar cadenas y operadores aritméticos, utilizar control de flujo y ciclos y generar reportes con formato. Realmente, awk es más que un simple comando de procesamiento de patrones, pues en realidad es todo un lenguaje de análisis semántico.

El formato básico de un comando awk se ve de esta forma:

awk 'pattern {action}' input-file > output-file

Esto significa que toma cada línea del archivo de entrada; si la línea contiene el patrón, aplica la acción a la línea y escribe la línea resultante en el archivo de salida. Si se omitiera el patrón, la acción se aplicaría a todas las líneas. A continuación un ejemplo concreto:

awk '{ print $5 }' table1.txt > output1.txt

La instrucción anterior toma el elemento de la 5ta columna de cada línea y lo escribe como una línea en el archivo de salida “output.txt.” La variable ‘$4’ se refiere a la cuarta columna. Del mismo modo, se puede acceder a la primera, segunda y tercera columna, con $1, $2, $3, respectivamente. De forma predeterminada, se supone que las columnas están separadas por espacios o tabulaciones (los llamados espacios en blanco). Por lo tanto, si el archivo de entrada “table1.txt” contiene estas líneas deberá suceder:

1, Justin Timberlake, Title 545, Price $7.30
2, Taylor Swift, Title 723, Price $7.90
3, Mick Jagger, Title 610, Price $7.90
4, Lady Gaga, Title 118, Price $7.30
5, Johnny Cash, Title 482, Price $6.50
6, Elvis Presley, Title 335, Price $7.30
7, John Lennon, Title 271, Price $7.90
8, Michael Jackson, Title 373, Price $5.50

Luego ocurriría que el comando escribiría las siguientes líneas en el archivo de salida “output1.txt“:

545,
723,
610,
118,
482,
335,
271,
373,

Si el separador de columnas es distinto de espacios o pestañas, pudiera ser a través de una coma(,), puedes especificarlo en la instrucción awk de la siguiente forma:

awk -F, '{ print $3 }' table1.txt > output1.txt

Esto seleccionará el elemento de la columna 3 de cada línea si se considera que las columnas están separadas por una coma. Por lo tanto, la salida que se tomaría en este caso sería esta a continuación:

Title 545
 Title 723
 Title 610
 Title 118
 Title 482
 Title 335
 Title 271
 Title 373

Expresiones condicionales en AWK

Las listas de instrucciones dentro de los corchetes (‘) se denominan bloques. Si colocas una expresión condicional delante de un bloque, la instrucción dentro del bloque se ejecutará solo si la condición es true. De esta manera:

awk '$7=="\$7.30" { print $3 }' table1.txt

En este caso, la condición es de $7 “$7.30”, lo cual significa que el elemento de la columna 7 es igual a $7.30. Por lo tanto la barra diagonal invertida frente al signo de dólar es utilizada para evitar que el sistema interprete el $7 como una variable, y en su lugar tome el signo de dólar literalmente.

Así que esta instrucción awk imprimirá el elemento en la 3ra columna de cada línea que tiene un “$7.30” en la columna 7.

También puedes utilizar expresiones regulares como condición. A continuación un ejemplo:

awk '/30/ { print $3 }' table1.txt

La cadena entre las dos barras diagonales (‘/’) es la expresión regular. En este caso, es sólo la cadena “30.” Esto significa que si una línea contiene la cadena “30”, el sistema imprime el elemento en la 3ra columna de esa línea. Por ejemplo la salida anterior sería:

Timberlake,
Gaga,
Presley,

¿Cómo realizar cálculos en AWK?

Si los elementos que hay dentro de la tabla son números, awk puede ejecutar cálculos en ellos como en este ejemplo a continuación:

awk '{ print ($2 * $3) + $7 }'

Además de las variables que acceden a los elementos de la fila actual ($1, $2, etc.), está la variable $0 que hace referencia a la fila completa (línea), y la variable NF que contiene el número de campos incluidos.

También puedes definir las nuevas variables como en este ejemplo a continuación:

awk '{ sum=0; for (col=1; col<=NF; col++) sum += $col; print sum; }'

Esto calculará e imprimirá la suma de todos los elementos de cada fila. Las instrucciones Awk se combinan con frecuencia con comandos sed.


Artículos relacionados que te podrían resultar interesantes

tux linux

Las Mejores Distribuciones de Linux de todos los Tiempos

Linux constituye a día de hoy un sistema operativo ampliamente adoptado a nivel internacional, solamente superado en el mundo de ...
Leer Más
linux

Guía para Principiantes de Linux

Linux es el nombre que reciben una serie de sistemas operativos de UNIX que operan bajo la licencia GNU GPL, ...
Leer Más
app linux

¿Cómo Instalar Aplicaciones en Linux?

La mayoría de los usuarios comunes en el mundo de los ordenadores utilizan sistemas operativos como Microsoft Windows o MacOS ...
Leer Más
Todo sobre Lubuntu

Todo sobre Lubuntu.

Lubuntu es una distribución oficial de Ubuntu, cuyo principal objetivo es crear un sistema operativo que utilice un mínimo de ...
Leer Más
Distribucion Linux Fedora

¿Qué es la Distribución Linux Fedora?

Como sabemos existe toda una familia de distribuciones basadas en GNU/Linux. La distribución Linux Fedora es una de las más ...
Leer Más
comandos

Comando Linux Gawk, Características y Uso

El comando Linux gawk es la implementación GNU del lenguaje de programación para procesamiento de datos basado en texto de ...
Leer Más

¿Cómo Escribir Comandos y Scripts AWK?

El comando awk es un método muy útil para procesar o analizar archivos de texto en Linux. En particular, analiza ...
Leer Más
Linux security

¿Qué es la distribución Linux OpenWrt?

En los últimos años se detectaron problemas de seguridad en routers comerciales que permitían el espionaje a través de puertas ...
Leer Más
Codigo space

¿Qué es y cómo utilizar el Shell de GNU/Linux?

Unix fue la base de lo que conocemos como Linux (núcleo del sistema operativo GNU/Linux) por ende Linux cuando aún ...
Leer Más
Línea de comandos de Linux

Línea de comandos de Linux

La línea de comandos de Linux es un sistema basado en texto que introduce comandos al equipo y devuelve resultados ...
Leer Más
linux_SO

Comandos para navegar en el sistema de archivos de Linux

Conocer los principales comandospara navegar por el sistema de archivos de Linux es fundamental para todo usuario de esta familia ...
Leer Más
Linux system

Cómo Utilizar las Características del Comando PWD

Para navegar por el sistema de archivos de Linux uno de los comandos más útiles -de origen Unix- es el ...
Leer Más
Linux rojo

Sistema de Archivos de Linux: Qué es y Cómo Funciona

Los usuarios que usan distribuciones GNU/Linux debieran conocer la estructura de carpetas que conforman su sistema de archivos. Quien haya ...
Leer Más
Comando Linux

Funciones del Comando Linux “fdisk”

fdisk es un editor de particiones de línea de comandos que permite crear, editar y administrar las particiones en los ...
Leer Más
Icono Linux

Diferencia entre Linux y GNU/Linux

Existe un desconocimiento generalizado sobre la diferencia entre los términos Linux y GNU/Linux. Esto trae consigo que utilicemos normalmente el ...
Leer Más
linux cabezon

Guía de paquetes de instalación en Linux

Instalar aplicaciones en Linux en principio era extremadamente complejo, requería de habilidades que no se encuentran en el usuario común ...
Leer Más
Linux install

Métodos para instalar aplicaciones en Linux

Las personas que deciden migrar a Linux tienen como uno de los primeros y más comunes problemas el como instalar ...
Leer Más
Ubuntu GNOME v/s openSUSE v/s Fedora

Ubuntu GNOME v/s openSUSE v/s Fedora

Ubuntu GNOME, openSUSE, y Fedora son dos de las distribuciones más populares des Sistema Linux. Sin embargo muchas personas no sabrían cuál escoger en ...
Leer Más
ubuntu keys

Cómo instalar paquetes en formato .deb

Existen múltiples formas de instalar los diversos tipos de paquetes en distribuciones Linux. Las más comunes son, haciendo uso de ...
Leer Más