Búsqueda de sitios web

Aprenda a utilizar las variables integradas de Awk - Parte 10


A medida que descubrimos 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 puedes usar en Awk, estas son; Variables definidas por el usuario, que cubrimos en la Parte 8 y variables incorporadas.

Las variables incorporadas tienen valores ya definidos en Awk, pero también podemos modificar 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, línea de entrada 1, 2, 3… etc., 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 del archivo de entrada actual, puede utilizar la variable incorporada FILENAME de la siguiente manera:

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

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

Al usar 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 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 tab, pero podemos cambiar el valor de FS a cualquier carácter que le indicará 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 campos de salida, use la variable incorporada OFS, que 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 utilizar variables integradas de Awk que vienen con valores predefinidos. Pero también podemos cambiar estos valores, aunque no es recomendable hacerlo a menos que sepas lo que estás haciendo, con la comprensión adecuada.

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