Filtrado De Registros en AWK

AWK es una herramienta muy poderosa y un potente lenguaje de programación con un modelo de datos muy interesante, en el cual se opera sobre archivos y estos archivos son consumidos línea por línea.

Nosotros utilizamos AWK principalmente para extraer columnas, reacomodarlas, o filtrarlas.

Para filtrar filas en AWK lo que necesitamos es comparar con un if Los operadores lógicos en AWK son:

Entonces podemos hacer comparaciones con una o mas columnas con ifs:

file1.csv

col1,col2,col3,col4
1,1,B,0.1594
0,2,B,1.0264
1,3,Q,2.3340
1,4,B,1.2225
0,5,B,0.5864
0,6,Q,3.1459
0,7,Q,0.6587
1,8,C,0.2155
1,9,B,0.8465
0,10,Q,1.5573
0,11,C,0.5942
1,12,Q,4.0000
0,13,B,0.0001
1,14,C,0.2245
1,15,B,3.3315
0,16,Q,2.1854
0,17,B,1.9874

Para filtrar todas las filas con col1 = 0

#!/bin/awk -f
BEGIN {FS=","; OFS=","}  # Begin section
{if ($1 == 0) print }     # Loop section
END {}                   # End section

El resultado es:

0,2,B,1.0264
0,5,B,0.5864
0,6,Q,3.1459
0,7,Q,0.6587
0,10,Q,1.5573
0,11,C,0.5942
0,13,B,0.0001
0,16,Q,2.1854
0,17,B,1.9874

Para hacer un filtrado en 2 columnas una numérica y otra de caracteres:

#!/bin/awk -f
BEGIN {FS=","; OFS=","}  # Begin section
{if (($1 == 0) && ($3 ~ /Q/))  print }     # Loop section
END {}                   # End section

Y el resultado es:

0,6,Q,3.1459
0,7,Q,0.6587
0,10,Q,1.5573
0,16,Q,2.1854

Es importante notar que si tenemos condiciones diferentes podemos ir añadiendo filtros, cada uno dentro de diferentes llaves, los filtros van a ir funcionando de manera secuencial..