13. Variables Implícitas (Built-in)

La mayorías de las variables awk están disponibles para que las uses para tus propios propósitos; nunca cambian excepto cuando se le asigna por programa un nuevo valor, y nunca tienen efectos sobre el programa salvo cuando tu programa las examina.

Unas pocas variables tienen un significado especial implícito (built-in). Algunas de ellas son examinadas por awk automáticamente, de forma que te ofrecen la posibilidad de decirle a awk como tiene que realizar ciertas cosas. Otras reciben un valor de forma automática por parte de awk, de forma que te pueden ofrecer información de cómo está funcionando internamente tu programa awk.

Este capítulo documenta todas las variable implícitas de gawk. La mayoría de ellas son también descritas en los capítulos donde sus areas de actividad son descritas.

Variables Implícitas (Built-in) que controlan el comportamiento de awk

Esta es una lista de variables las cuales tú puedes cambiar para controlar como realiza ciertas cosas awk.

FS

      FS es el separador de campos de la entrada (ver la sección Especificando como están separados los campos). El valor es un único carácter o una expresión regular multi-carácter que busca las separaciones entre campos en un registro de entrada.

      El valor por defecto es “ ”, una cadena consistente en un único espacio en blanco. Como excepción especial, este valor significa realmente que cualquier secuencia de espacios y tabuladores forman un único separador. Hace también que los espacios y tabuladores al principio de línea sean ignorados.

      Puedes fijar el valor de FS en la línea de comando usando la opción ‘-F’:

awk -F, 'programa' ficheros_de_entrada

IGNORECASE

      Si IGNORECASE es distinta de cero, entonces todas las búsquedas de expresiones regulares se realizan de una forma insensible a las mayúsculas/minúsculas. En particular, las expresiones regulares comparadas con ‘~’ y ‘!~’ y las funciones gsub, index, match, split y sub ignoran las diferencias entre mayúsculas y minúsculas cuando realizan sus operaciones de expresiones regulares particulares. Nota: ya que la partición en campos con el valor de la variable FS es también una operación de expresión regular, también se ve afectada por la desactivación/activación de distinción entre mayúsculas/minúsculas. Ver la sección Sensibilidad a Mayúsculas en el Matching.

      Si awk está en modo compatibilidad (ver la sección 14. Invocación de awk), entonces IGNORECASE no tiene ningún significado especial, y todas las operaciones de expresiones regulares son sensibles a la distinción entre Mayúsculas/Minúsculas.

OFMT

      Esta cadena es usada por awk para controlar la conversión de números a cadenas (ver la sección Conversiones de Cadenas y Números). Funciona siendo pasada, en efecto, como el primer argumento a la función sprintf. Su valor por defecto es “%.6g”.

OFS

      Es el separador de los campos de salida (ver la sección Separadores de la Salida). Es sacada entre cada dos campos de la salida por una sentencia print. Su valor por defecto es “ ”, una cadena de un solo espacio.

ORS

      Este es el separador de los registros de salida. Es colocada al final de cada sentencia print. Su valor por defecto es una cadena que contiene un único carácter de nueva línea, el cual podría ser también escrito como “\n” (ver la sección Separadores de la Salida)

RS

      Este es el separador de registros de awk. Su valor por defecto es una cadena que contiene un único carácter newline, lo que significa que cada registro de entrada consiste en una única línea de texto. (Ver la sección Cómo se particiona la Entrada en Registros)

SUBSEP

      SUBSEP es un separador de subíndice. Tiene por defecto el valor “\34”, y es usado para separar las partes del nombre de un array multidimensional. Por lo que si accedes a foo[12,3], internamente accede realmente a foo[“12\0343”] (Ver la sección Arrays Multi-Dimensionales).

Variables Implícitas (Built-in) que te proporcionan información

Esta es una lista de variables que son fijadas automáticamente por awk en ciertas ocasiones, así que proporcionan información a tu programa.

ARGC

ARGV

      Los argumentos de la línea de comandos disponibles para awk son almacenados en un array llamado ARGV. ARGC es el número de argumentos de la línea de comando presentes. ARGV está indexado desde 0 a ARGC-1. Ver la sección 14. Invocación de awk. Por ejemplo:

awk '{ print ARGV[$1] }' inventario–enviado Lista–BBS

      En este ejemplo, ARGV[0] contiene “awk”, ARGV[1] contiene “inventario–enviado”, y ARGV[2] contiene “Lista–BBS”. El valor de ARGC es 3, uno más que el índice del último elemento en ARGV ya que el primer elemento es el 0.

      Dese cuenta de que el programa awk no se entra en ARGV. Las otras opciones de la línea de comando especiales, con sus argumentos, tampoco son entradas. Pero la asignación de variables en la línea de comandos son tratadas como argumentos, y se podrían ver por lo tanto en el array ARGV.

      Tu programa puede alterar ARGC y los elementos de ARGV. Cada vez que awk alcanza el final de un fichero de entrada, utiliza el siguiente elemento de ARGV como el nombre del siguiente fichero de entrada. Almacenando un cadena distinta en ARGV, se puede cambiar los ficheros que van a ser leidos por tu programa. Puedes usar “-” para representar la entrada estándar. Almacenando elementos adicionales e incrementando ARGC puedes causar que se procesen ficheros adicionales.

      Si decrementas el valor de ARGC, eso elimina ficheros de entrada del final de la lista de ficheros de entrada a procesar. Grabando el antiguo valor de ARGC en algún lugar, tu programa puede tratar los argumentos eliminados como otra cosa en lugar de cómo nombres de ficheros.

      Para eliminar un fichero de mitad de la lista, almacena la cadena nula (“”) en ARGV en lugar del nombre de fichero que quieres que no se procese. Como una característica especial, awk ignora los nombres de ficheros que han sido reemplazados por una cadena nula.

ENVIRON

      Este es un array que contiene los valores del entorno. Los índices del array son los nombres de las variables de entorno; los valores son los valores de las variables de entorno particulares. Por ejemplo, ENVIRON[“HOME”] podría ser ‘/home/dwadmin’. El cambio de los valores de este array no afecta al valor real de las variables que tengan en el sistema operativo.           

      Algunos sistemas operativos podrían no tener variables de entorno. En tales sistemas, el array ENVIRON está vacío.

FILENAME

      Este es el nombre del fichero que awk está leyendo en la actualidad. Si awk está leyendo de la entrada estándar (en otras palabras, no se han especificado ficheros en la línea de comando), FILENAME toma el valor de “-”. FILENAME se cambia cada vez que se lee desde un fichero nuevo (Ver la sección 3. Leyendo ficheros de Entrada)

FNR

      FNR es el número de registro del registro actual en el fichero actual. FNR se incrementa automáticamente cada vez que se lee un nuevo registro. (Ver la sección Entrada explícita con getline). Es reinicializado a 0 cada vez que se comienza un nuevo fichero de entrada.

NF

      NF es el número de campos del registro de entrada actual. NF recibe un nuevo valor cada vez que se lee un nuevo registro, cuando se crea un nuevo campo, o cuando $0 cambia (Ver la sección Examinando campos).

NR

      Este es el número de registros de entrada que han sido procesados desde el comienzo de la ejecución del programa. (Ver la sección Cómo se particiona la Entrada en Registros). NR se incrementa en una unidad cada vez que se lee un nuevo registro.

RLENGTH

      RLENGTH es la longitud de la subcadena encontrada por la función match (Ver la sección Funciones Implícitas (Built-in) para Manipulación de Cadenas). RLENGTH toma un valor cada vez que se llama a la función match. Su valor es la longitud de la cadena encontrada, o –1 si no se encontró ninguna cadena.

RSTART

      RSTART es el índice de comienzo de la subcadena encontrada por la función match (Ver la sección Funciones Implícitas (Built-in) para Manipulación de Cadenas). RSTART toma un valor cuando se llama a la función match. Su valor es la posición de la cadena donde la subcadena encontrada comienza, o 0 si no se encontró.

   
Índice
Manual