Go to the first, previous, next, last section, table of contents.


Built-in Variables That Control @command{awk}

The following is an alphabetical list of variables that you can change to control how @command{awk} does certain things. The variables that are specific to @command{gawk} are marked with a pound sign (`#').

BINMODE #
On non-POSIX systems, this variable specifies use of "binary" mode for all I/O. Numeric values of one, two, or three, specify that input files, output files, or all files, respectively, should use binary I/O. Alternatively, string values of "r" or "w" specify that input files and output files, respectively, should use binary I/O. A string value of "rw" or "wr" indicates that all files should use binary I/O. Any other string value is equivalent to "rw", but @command{gawk} generates a warning message. BINMODE is described in more detail in @ref{PC Using, ,Using @command{gawk} on PC Operating Systems}. This variable is a @command{gawk} extension. In other @command{awk} implementations (except @command{mawk}, @pxref{Other Versions, , Other Freely Available @command{awk} Implementations}), or if @command{gawk} is in compatibility mode (see section Command-Line Options), it is not special.
CONVFMT
This string controls 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 (see section String Manipulation Functions). Its default value is "%.6g". CONVFMT was introduced by the POSIX standard.
FIELDWIDTHS #
This is a space-separated list of columns that tells @command{gawk} how to split input with fixed columnar boundaries. Assigning a value to FIELDWIDTHS overrides the use of FS for field splitting. See section Reading Fixed-Width Data, for more information. If @command{gawk} is in compatibility mode (see section Command-Line Options), then FIELDWIDTHS has no special meaning, and field-splitting operations occur based exclusively on the value of FS.
FS
This 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. If the value is the null string (""), then each character in the record becomes a separate field. (This behavior is a @command{gawk} extension. POSIX @command{awk} does not specify the behavior when FS is the null string.) The default value is " ", a string consisting of a single space. As a special exception, this value means that any sequence of spaces, tabs, and/or newlines is a single separator.(24), newline does not count as whitespace.} It also causes spaces, tabs, and newlines at the beginning and end of a record to be ignored. You can set the value of FS on the command line using the @option{-F} option:
awk -F, 'program' input-files
If @command{gawk} is using FIELDWIDTHS for field splitting, assigning a value to FS causes @command{gawk} to return to the normal, FS-based field splitting. An easy way to do this is to simply say `FS = FS', perhaps with an explanatory comment.
IGNORECASE #
If IGNORECASE is nonzero or non-null, then all string comparisons and all regular expression matching are case-independent. Thus, regexp matching with `~' and `!~', as well as the gensub, gsub, index, match, split, and sub functions, record termination with RS, and field splitting with FS, all ignore case when doing their particular regexp operations. However, the value of IGNORECASE does not affect array subscripting. See section Case Sensitivity in Matching. If @command{gawk} is in compatibility mode (see section Command-Line Options), then IGNORECASE has no special meaning. Thus, string and regexp operations are always case-sensitive.
LINT #
When this variable is true (nonzero or non-null), @command{gawk} behaves as if the @option{--lint} command-line option is in effect. (see section Command-Line Options). With a value of "fatal", lint warnings become fatal errors. Any other true value prints non-fatal warnings. Assigning a false value to LINT turns off the lint warnings. This variable is a @command{gawk} extension. It is not special in other @command{awk} implementations. Unlike the other special variables, changing LINT does affect the production of lint warnings, even if @command{gawk} is in compatibility mode. Much as the @option{--lint} and @option{--traditional} options independently control different aspects of @command{gawk}'s behavior, the control of lint warnings during program execution is independent of the flavor of @command{awk} being executed.
OFMT
This string controls conversion of numbers to strings (see section Conversion of Strings and Numbers) for printing with the print statement. It works by being passed as the first argument to the sprintf function (see section String Manipulation Functions). Its default value is "%.6g". Earlier versions of @command{awk} also used OFMT to specify the format for converting numbers to strings in general expressions; this is now done by CONVFMT.
OFS
This is the output field separator (see section Output Separators). It is output between the fields printed 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 "\n", the newline character. (See section Output Separators.)
RS
This is @command{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. It can also be the null string, in which case records are separated by runs of blank lines. If it is a regexp, records are separated by matches of the regexp in the input text. (See section How Input Is Split into Records.) The ability for RS to be a regular expression is a @command{gawk} extension. In most other @command{awk} implementations, or if @command{gawk} is in compatibility mode (see section Command-Line Options), just the first character of RS's value is used.
SUBSEP
This is the subscript separator. It has the default value of "\034" and is used to separate the parts of the indices of a multidimensional array. Thus, the expression foo["A", "B"] really accesses foo["A\034B"] (see section Multidimensional Arrays).
TEXTDOMAIN #
This variable is used for internationalization of programs at the @command{awk} level. It sets the default text domain for specially marked string constants in the source text, as well as for the dcgettext and bindtextdomain functions (@pxref{Internationalization, ,Internationalization with @command{gawk}}). The default value of TEXTDOMAIN is "messages". This variable is a @command{gawk} extension. In other @command{awk} implementations, or if @command{gawk} is in compatibility mode (see section Command-Line Options), it is not special.


Go to the first, previous, next, last section, table of contents.