en Este capítulo se describen varios útil AWK comandos y sus correspondientes ejemplos. Considere un archivo de texto marcas.txt que se procesará con el siguiente contenido −
1) Amit Physics 802) Rahul Maths 903) Shyam Biology 874) Kedar English 855) Hari History 89
imprimir columna o campo
puede indicar a AWK que imprima solo ciertas columnas desde el campo de entrada., El siguiente ejemplo demuestra esto –
Example
$ awk '{print $3 "\t" $4}' marks.txt
al ejecutar este código, obtiene el siguiente resultado −
Output
Physics 80Maths 90Biology 87English 85History 89
en las marcas de archivo.txt, la tercera columna contiene el nombre del sujeto y la cuarta columna contiene las marcas obtenidas en un sujeto en particular. Imprimamos estas dos columnas usando el comando awk print. En el ejemplo anterior, $3 y 4 4 representan el tercer y el cuarto campos respectivamente del registro de entrada.
imprimir todas las líneas
de forma predeterminada, AWK imprime todas las líneas que coinciden con el patrón.,
Example
$ awk '/a/ {print $0}' marks.txt
al ejecutar este código, obtiene el siguiente resultado:
Output
2) Rahul Maths 903) Shyam Biology 874) Kedar English 855) Hari History 89
en el ejemplo anterior, estamos buscando el patrón de Formulario A. Cuando una coincidencia de patrón tiene éxito, ejecuta un comando desde el bloque body. En ausencia de un bloque de cuerpo, se toma la acción predeterminada que es imprimir el registro. Por lo tanto, el siguiente comando produce el mismo resultado −
ejemplo
$ awk '/a/' marks.txt
imprimir columnas por patrón
Cuando una coincidencia de patrón tiene éxito, AWK imprime todo el registro de forma predeterminada., Pero puede indicar a AWK que imprima solo ciertos campos. Por ejemplo, el siguiente ejemplo imprime el tercer y cuarto campo cuando una coincidencia de patrón tiene éxito.
ejemplo
$ awk '/a/ {print $3 "\t" $4}' marks.txt
al ejecutar este código, obtiene el siguiente resultado:
salida
Maths 90Biology 87English 85History 89
imprimir columna en cualquier orden
Puede imprimir columnas en cualquier orden. Por ejemplo, el siguiente ejemplo imprime la cuarta columna seguida de la tercera columna.,
ejemplo
$ awk '/a/ {print $4 "\t" $3}' marks.txt
al ejecutar el código anterior, obtiene el siguiente resultado:
salida
90 Maths87 Biology85 English89 History
contando e imprimiendo el patrón coincidente
veamos un ejemplo donde puede contar e imprimir el número de líneas para las que un patrón coincidente tuvo éxito.
Example
$ awk '/a/{++cnt} END {print "Count = ", cnt}' marks.txt
al ejecutar este código, obtiene el siguiente resultado:
Output
Count = 4
en este ejemplo, incrementamos el valor de contador cuando una coincidencia de patrón tiene éxito e imprimimos este valor en el bloque final., Tenga en cuenta que, a diferencia de otros lenguajes de programación, no es necesario declarar una variable antes de usarla.
imprimir líneas con más de 18 caracteres
imprimamos solo aquellas líneas que contengan más de 18 caracteres.
ejemplo
$ awk 'length($0) > 18' marks.txt
al ejecutar este código, se obtiene el siguiente resultado:
salida
3) Shyam Biology 874) Kedar English 85
AWK proporciona una función de longitud incorporada que devuelve la longitud de la cadena. La variable stores 0 almacena toda la línea y, en ausencia de un bloque body, se realiza la acción predeterminada, es decir, la acción print., Por lo tanto, si una línea tiene más de 18 caracteres, la comparación resulta verdadera y la línea se imprime.