Referenciar campos sin usar constantes AWK

El número de un campo no necesita ser una constante. Cualquier expresión del lenguaje awk puede ser usado después de un ‘$’ para referirse a un campo. El valor de la expresión especifica el número de campo. Si el valor es una cadena, en lugar de un número, dicha cadena se convierte a número. 

Considere este ejemplo:

awk '{ print $NR }'

Recuerde que NR es el número de registros leídos hasta el momento: 1 para el primer registro, 2 para el segundo, etc. Así que este ejemplo imprimiría el primer campo del primer registro, el segundo campo del segundo registro, y así sucesivamente. Para el registro veinte, se imprimiría el campo número 20; es probable que el registro tenga menos de 20 campos, así que imprimiría una línea en blanco.

Aquí tienes otro ejemplo de la utilización de una expresión como número de campo:

awk '{ print $(2*2) }' Lista-BBS

El lenguaje awk debe evaluar la expresión (2*2) y usar su valor como el número del campo a imprimir. El signo ‘*’ representa multiplicación, así que la expresión 2*2 toma el valor 4. Los paréntesis son usados para que la multiplicación se realice antes que la operación ‘$’; son necesarios donde quiera que haya un operación binario en la expresión número de campo. Este ejemplo, entonces, imprime las horas de operación (el cuarto campo) para cada línea del fichero ‘Lista-BBS’.
Si el número de campo toma el valor de 0, obtienes el registro entero. Por lo que, $(2-2) tiene el mismo valor que $0. Números de campo negativos no son permitidos.

El número de campos en el registro actual se almacena en la variable implícita NF. La expresión $NF no es una característica especial: es la consecuencia directa de evaluar NF y usar su valor como número de campo.

Publicar un comentario

0 Comentarios