About Us Documentation

Contact Site Map
 

  

WinPak
Documentation

GAWK Manual - Built-in Variables Go to the previous, next chapter.

Built-in Variables

Most awk variables are available for you to use for your own purposes; they never change except when your program assigns values to them, and never affect anything except when your program examines them.

A few variables have special built-in meanings. Some of them awk examines automatically, so that they enable you to tell awk how to do certain things. Others are set automatically by awk, so that they carry information from the internal workings of awk to your program.

This chapter documents all the built-in variables of gawk. Most of them are also documented in the chapters where their areas of activity are described.

  • User-modified: Built-in variables that you change to control awk.
  • Auto-set: Built-in variables where awk gives you information.

Built-in Variables that Control awk

This is a list of the variables which you can change to control how awk does certain things.

  • CONVFMT This string is used by awk to control conversion of numbers to strings (see section Conversion of Strings and Numbers). It works by being passed, in effect, as the first argument to the sprintf function. Its default value is "%.6g". CONVFMT was introduced by the POSIX standard.

  • FIELDWIDTHS This is a space separated list of columns that tells gawk how to manage input with fixed, columnar boundaries. It is an experimental feature that is still evolving. Assigning to FIELDWIDTHS overrides the use of FS for field splitting. See section Reading Fixed-width Data, for more information.

    If gawk is in compatibility mode (see section Invoking awk.

  • FS FS is the input field separator (see section Specifying how Fields are Separated). The value is a single-character string or a multi-character regular expression that matches the separations between fields in an input record.

    The default value is " ", a string consisting of a single space. As a special exception, this value actually means that any sequence of spaces and tabs is a single separator. It also causes spaces and tabs at the beginning or end of a line to be ignored.

    You can set the value of FS on the command line using the -F option:

    	awk -F, 'program' input-files
    

    If gawk is using FIELDWIDTHS for field-splitting, assigning a value to FS will cause gawk to return to the normal, regexp-based, field splitting.

  • IGNORECASE If IGNORECASE is nonzero, then all regular expression matching is done in a case-independent fashion. In particular, regexp matching with ~ and !~, and the gsub index, match, split and sub functions all ignore case when doing their particular regexp operations. Note: since field splitting with the value of the FS variable is also a regular expression operation, that too is done with case ignored. See section Case-sensitivity in Matching.

    If gawk is in compatibility mode , then IGNORECASE has

  • OFMT This string is used by awk to control conversion of numbers to strings (see section Conversion of Strings and Numbers) for printing with the print statement. It works by being passed, in effect, as the first argument to the sprintf function. Its default value is "%.6g". Earlier versions of awk also used OFMT to specify the format for converting numbers to strings in general expressions; this has been taken over by CONVFMT.

  • OFS This is the output field separator (see section Output Separators). It is output between the fields output by a print statement. Its default value is " ", a string consisting of a single space.

  • ORS This is the output record separator. It is output at the end of every print statement. Its default value is a string containing a single newline character, which could be written as "\n". (See section Output Separators.)

  • RS This is awk's input record separator. Its default value is a string containing a single newline character, which means that an input record consists of a single line of text. (See section How Input is Split into Records.)

  • SUBSEP SUBSEP is the subscript separator. It has the default value of "\034", and is used to separate the parts of the name of a multi-dimensional array. Thus, if you access foo[12,3], it really accesses foo["12\0343"] (see section Multi-dimensional Arrays).
  • Built-in Variables that Convey Information

    This is a list of the variables that are set automatically by awk on certain occasions so as to provide information to your program.

  • ARGC
  • ARGV The command-line arguments available to awk programs are stored in an array called ARGV. ARGC is the number of command-line arguments present. See section Invoking awk is indexed from zero to ARGC - 1. For example:

    	awk 'BEGIN {
    	       for (i = 0; i < ARGC; i++) 
    	           print ARGV[i] 
    	     }' inventory-shipped BBS-list
    

    In this example, ARGV[0] contains "awk", ARGV[1] contains "inventory-shipped", and ARGV[2] contains "BBS-list". The value of ARGC is 3, one more than the index of the last element in ARGV since the elements are numbered from zero.

    The names ARGC and ARGV, as well the convention of indexing the array from 0 to ARGC - 1, are derived from the C language's method of accessing command line arguments.

    Notice that the awk program is not entered in ARGV. The other special command line options, with their arguments, are also not entered. But variable assignments on the command line are treated as arguments, and do show up in the ARGV array.

    Your program can alter ARGC and the elements of ARGV. Each time awk reaches the end of an input file, it uses the next element of ARGV as the name of the next input file. By storing a different string there, your program can change which files are read. You can use "-" to represent the standard input. By storing additional elements and incrementing ARGC you can cause additional files to be read.

    If you decrease the value of ARGC, that eliminates input files from the end of the list. By recording the old value of ARGC elsewhere, your program can treat the eliminated arguments as something other than file names.

    To eliminate a file from the middle of the list, store the null string ("") into ARGV in place of the file's name. As a special feature, awk ignores file names that have been replaced with the null string.

  • ARGIND The index in ARGV of the current file being processed. Every time gawk opens a new data file for processing, it sets ARGIND to the index in ARGV of the file name. Thus, the condition FILENAME == ARGV[ARGIND] is always true.

    This variable is useful in file processing; it allows you to tell how far along you are in the list of data files, and to distinguish between multiple successive instances of the same filename on the command line.

    While you can change the value of ARGIND within your awk program, gawk will automatically set it to a new value when the next file is opened.

    This variable is a gawk extension; in other awk implementations it is not special.

  • ENVIRON This is an array that contains the values of the environment. The array indices are the environment variable names; the values are the values of the particular environment variables. For example, ENVIRON["HOME"] might be /u/close. Changing this array does not affect the environment passed on to any programs that awk may spawn via redirection or the system function. (In a future version of gawk, it may do so.)

    Some operating systems may not have environment variables. On such systems, the array ENVIRON is empty.

  • ERRNO If a system error occurs either doing a redirection for getline, during a read for getline, or during a close operation, then ERRNO will contain a string describing the error.

    This variable is a gawk extension; in other awk implementations it is not special.

  • FILENAME This is the name of the file that awk is currently reading. If awk is reading from the standard input (in other words, there are no files listed on the command line), FILENAME is set to "-". FILENAME is changed each time a new file is read (see section Reading Input Files).

  • FNR FNR is the current record number in the current file. FNR is incremented each time a new record is read . It is reinitialized
  • NF NF is the number of fields in the current input record. NF is set each time a new record is read, when a new field is created, or when $0 changes (see section Examining Fields).

  • NR This is the number of input records awk has processed since the beginning of the program's execution. (see section How Input is Split into Records). NR is set each time a new record is read.

  • RLENGTH RLENGTH is the length of the substring matched by the match function (see section Built-in Functions for String Manipulation). RLENGTH is set by invoking the match function. Its value is the length of the matched string, or -1 if no match was found.

  • RSTART RSTART is the start-index in characters of the substring matched by the match function (see section Built-in Functions for String Manipulation). RSTART is set by invoking the match function. Its value is the position of the string where the matched substring starts, or 0 if no match was found.