Variables, Registros y Campos
Normalmente los registros son separados por caracteres de nueva línea. Se
puede definir otro carácter asignando el valor en la variable interna
RS
. Esta variable puede ser un solo carácter o bien una expresión
regular y cualquier carácter que coincida es usado como separador.
Si RS
es una cadena nula, entonces los registros son separados por
una línea en blanco. Cuando RS
es una cadena nula, el carácter de
nueva línea actúa siempre como separador de campos, en adición a
cualquier valor que tenga FS
.
Según se va leyendo cada registro, ‘‘awk’’ divide el registro en campos,
usando el valor de la variable FS
como separador de campos. En el
caso que el valor de FS
sea un espacio en blanco, los campos son
separados por uno o mas espacios y/o tabs y/o líneas nuevas.
Cada campo en el registro de entrada se puede referenciar por su
posición, S1
, S2
y así. S0
representa el registro
completo. Los campos deben referenciarse por constantes.
Imprime el quinto campo del registro de entrada.
#!awk numbers=off
n
print $n
Las variables son dinámicas. Sus valores son números de punto flotante o cadenas de texto, o ambos dependiendo como se usen.
AWK tiene también arreglos unidimensionales; arreglos multidimensionales pueden simularse.
Algunas variables son inicializadas con un valor default cuando se ejecuta un programa.
La variable NF
esta inicializada con el número total de campos en
el registro de entrada.
Referencias a campos no existentes producen cadenas nulas. Sin embargo,
asignar variables a campos no existentes incrementa el valor de
NF
, crea caulqerui campo involucrado con la cadena nula como valor
y causa que el valor de S0
sea recalculado, con los campos siendo
separados con el valor de OFS
.