Aprenda a usar las variables integradas de Awk - Parte 10


A medida que descubramos la sección de características de Awk, en esta parte de la serie, analizaremos el concepto de variables integradas en Awk. Hay dos tipos de variables que puede usar en Awk, estos son; variables definidas por el usuario, que cubrimos en la Parte 8 y variables integradas.

Las variables integradas tienen valores ya definidos en Awk, pero también podemos alterar cuidadosamente esos valores, las variables integradas incluyen:

  1. FILENAME : nombre del archivo de entrada actual (no cambie el nombre de la variable)
  2. FR : número de la línea de entrada actual (es decir, la línea de entrada 1, 2, 3 ... así sucesivamente, no cambie el nombre de la variable)
  3. NF : número de campos en la línea de entrada actual (no cambie el nombre de la variable)
  4. OFS : separador de campo de salida
  5. FS : separador de campo de entrada
  6. ORS : separador de registros de salida
  7. RS : separador de registros de entrada

Procedamos a ilustrar el uso de algunas de las variables integradas de Awk anteriores:

Para leer el nombre de archivo del archivo de entrada actual, puede usar la variable incorporada FILENAME de la siguiente manera:

$ awk ' { print FILENAME } ' ~/domains.txt 

Se dará cuenta de que el nombre del archivo se imprime para cada línea de entrada, que es el comportamiento predeterminado de Awk cuando usa la variable incorporada FILENAME .

Usando NR para contar el número de líneas (registros) en un archivo de entrada, recuerde que también cuenta las líneas vacías, como veremos en el ejemplo siguiente.

Cuando vemos el archivo domains.txt usando el comando cat, contiene 14 líneas con texto y 2 líneas vacías:

$ cat ~/domains.txt
$ awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt 

Para contar el número de campos en un registro o línea, usamos la variable incorporada NR de la siguiente manera:

$ cat ~/names.txt
$ awk '{ print "Record:",NR,"has",NF,"fields" ; }' ~/names.txt

A continuación, también puede especificar un separador de campo de entrada utilizando la variable incorporada FS , que define cómo Awk divide las líneas de entrada en campos.

El valor predeterminado para FS es espacio y tabulación, pero podemos cambiar el valor de FS a cualquier carácter que indique a Awk que divida las líneas de entrada en consecuencia.

Hay dos métodos para hacer esto:

  1. un método es utilizar la variable incorporada FS
  2. y el segundo es invocar la opción -F Awk

Considere el archivo/etc/passwd en un sistema Linux, los campos en este archivo se dividen usando el carácter : , por lo que podemos especificarlo como el nuevo separador de campo de entrada cuando queremos filtrar ciertos campos como en los siguientes ejemplos:

Podemos usar la opción -F de la siguiente manera:

$ awk -F':' '{ print $1, $4 ;}' /etc/passwd

Opcionalmente, también podemos aprovechar la variable incorporada FS como se muestra a continuación:

$ awk ' BEGIN {  FS=“:” ; }  { print $1, $4  ; } ' /etc/passwd

Para especificar un separador de campo de salida, use la variable incorporada OFS , define cómo se separarán los campos de salida usando el carácter que usamos como en el siguiente ejemplo:

$ awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd

En esta Parte 10, hemos explorado la idea de usar variables integradas de Awk que vienen con valores predefinidos. Pero también podemos cambiar estos valores, aunque no se recomienda hacerlo a menos que sepa lo que está haciendo, con la comprensión adecuada.

Después de esto, avanzaremos para cubrir cómo podemos usar las variables de shell en las operaciones de comando de Awk, por lo tanto, manténgase conectado a Tecmint.