Built-in Variables That Control `awk'
-------------------------------------
The following is an alphabetical list of variables that you can
change to control how `awk' does certain things. The variables that are
specific to `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 `gawk' generates a warning message.
`BINMODE' is described in more detail in Note:Using `gawk' on PC
Operating Systems.
This variable is a `gawk' extension. In other `awk'
implementations (except `mawk', Note:Other Freely Available `awk'
Implementations.), or if `gawk' is in
compatibility mode (Note:Command-Line Options.), it is
not special.
`CONVFMT'
This string controls conversion of numbers to strings (Note:Conversion of Strings and Numbers.). It works by
being passed, in effect, as the first argument to the `sprintf'
function (Note: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 `gawk' how to
split input with fixed columnar boundaries. Assigning a value to
`FIELDWIDTHS' overrides the use of `FS' for field splitting.
Note:Reading Fixed-Width Data, for more
information.
If `gawk' is in compatibility mode (*note Command-Line Options:
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 (Note: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 `gawk' extension. POSIX
`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.(1) 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 `-F'
option:
awk -F, 'PROGRAM' INPUT-FILES
If `gawk' is using `FIELDWIDTHS' for field splitting, assigning a
value to `FS' causes `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. Note:Case Sensitivity in Matching.
If `gawk' is in compatibility mode (*note Command-Line Options:
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), `gawk' behaves
as if the `--lint' command-line option is in effect. (Note: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 `gawk' extension. It is not special in other
`awk' implementations. Unlike the other special variables,
changing `LINT' does affect the production of lint warnings, even
if `gawk' is in compatibility mode. Much as the `--lint' and
`--traditional' options independently control different aspects of
`gawk''s behavior, the control of lint warnings during program
execution is independent of the flavor of `awk' being executed.
`OFMT'
This string controls conversion of numbers to strings (Note:Conversion of Strings and Numbers.) for printing with
the `print' statement. It works by being passed as the first
argument to the `sprintf' function (Note:String Manipulation
Functions.). 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 is
now done by `CONVFMT'.
`OFS'
This is the output field separator (Note: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. (Note: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. 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. (Note:How Input Is Split into
Records.)
The ability for `RS' to be a regular expression is a `gawk'
extension. In most other `awk' implementations, or if `gawk' is
in compatibility mode (Note: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"]' (*note Multidimensional Arrays:
Multi-dimensional.).
`TEXTDOMAIN #'
This variable is used for internationalization of programs at the
`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 (Note:Internationalization with `gawk'.). The
default value of `TEXTDOMAIN' is `"messages"'.
This variable is a `gawk' extension. In other `awk'
implementations, or if `gawk' is in compatibility mode (Note:Command-Line Options.), it is not special.
---------- Footnotes ----------
(1) In POSIX `awk', newline does not count as whitespace.