Aprenda a usar las variables incorporadas de Awk - Parte 10


A medida que descubrimos la sección de características Awk , en esta parte de la serie, repasaremos el concepto de variables incorporadas en Awk. Hay dos tipos de variables que puedes usar en Awk, estas son; variables definidas por el usuario , que cubrimos en la Parte 8 y incorporadas .

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

  1. FILENAME : current input file name( do not change variable name)
  2. FR : number of the current input line (that is input line 1, 2, 3… so on, do not change variable name)
  3. NF : number of fields in current input line (do not change variable name)
  4. OFS : output field separator
  5. FS : input field separator
  6. ORS : output record separator
  7. RS : input record separator

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 utiliza la variable integrada FILENAME .

Al utilizar 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 siguiente ejemplo.

Cuando vemos el archivo domains.txt utilizando el comando cat, contiene 14 líneas con texto y líneas 2 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 usando la variable integrada FS , que define cómo Awk divide las líneas de entrada en campos.

El valor predeterminado para FS es espacio y pestaña , pero podemos cambiar el valor de FS a cualquier carácter que instruirá a Awk a dividir las líneas de entrada en consecuencia.

Hay dos métodos para hacer esto:

  1. one method is to use the FS built-in variable
  2. and the second is to invoke the -F Awk option

Considere el archivo /etc/passwd en un sistema Linux, los campos de 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 integrada 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 incorporadas de Awk que vienen con valores predefinidos. Pero también podemos cambiar estos valores, sin embargo, no se recomienda hacerlo a menos que sepa lo que está haciendo, con la comprensión adecuada.

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