aboutsummaryrefslogtreecommitdiffstats
path: root/doc/gawk.info
diff options
context:
space:
mode:
Diffstat (limited to 'doc/gawk.info')
-rw-r--r--doc/gawk.info2049
1 files changed, 1155 insertions, 894 deletions
diff --git a/doc/gawk.info b/doc/gawk.info
index 0fa9bdee..b60ecf82 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -10,8 +10,8 @@ START-INFO-DIR-ENTRY
END-INFO-DIR-ENTRY
Copyright (C) 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012, 2013 Free
-Software Foundation, Inc.
+2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012, 2013, 2014
+Free Software Foundation, Inc.
This is Edition 4.1 of `GAWK: Effective AWK Programming: A User's
@@ -42,8 +42,8 @@ This file documents `awk', a program that you can use to select
particular records in a file and perform operations upon them.
Copyright (C) 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012, 2013 Free
-Software Foundation, Inc.
+2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012, 2013, 2014
+Free Software Foundation, Inc.
This is Edition 4.1 of `GAWK: Effective AWK Programming: A User's
@@ -193,10 +193,11 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
field.
* Command Line Field Separator:: Setting `FS' from the
command-line.
+* Full Line Fields:: Making the full line be a single field.
* Field Splitting Summary:: Some final points and a summary table.
* Constant Size:: Reading constant width data.
* Splitting By Content:: Defining Fields By Content
-* Multiple Line:: Reading multi-line records.
+* Multiple Line:: Reading multiline records.
* Getline:: Reading files under explicit program
control using the `getline'
function.
@@ -347,9 +348,9 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
`awk'.
* Uninitialized Subscripts:: Using Uninitialized variables as
subscripts.
-* Multi-dimensional:: Emulating multidimensional arrays in
+* Multidimensional:: Emulating multidimensional arrays in
`awk'.
-* Multi-scanning:: Scanning multidimensional arrays.
+* Multiscanning:: Scanning multidimensional arrays.
* Arrays of Arrays:: True multidimensional arrays.
* Built-in:: Summarizes the built-in functions.
* Calling Built-in:: How to call built-in functions.
@@ -401,6 +402,8 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
* Join Function:: A function to join an array into a
string.
* Getlocaltime Function:: A function to get formatted times.
+* Readfile Function:: A function to read an entire file at
+ once.
* Data File Management:: Functions for managing command-line
data files.
* Filetrans Function:: A function for handling data file
@@ -612,9 +615,12 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
* VMS Installation:: Installing `gawk' on VMS.
* VMS Compilation:: How to compile `gawk' under
VMS.
+* VMS Dynamic Extensions:: Compiling `gawk' dynamic
+ extensions on VMS.
* VMS Installation Details:: How to install `gawk' under
VMS.
* VMS Running:: How to run `gawk' under VMS.
+* VMS GNV:: The VMS GNV Project.
* VMS Old Gawk:: An old version comes with some VMS
systems.
* Bugs:: Reporting Problems and Bugs.
@@ -1079,11 +1085,11 @@ by first pressing and holding the `CONTROL' key, next pressing the `d'
key and finally releasing both keys.
Dark Corners
-............
+------------
Dark corners are basically fractal -- no matter how much you
- illuminate, there's always a smaller but darker one.
- Brian Kernighan
+ illuminate, there's always a smaller but darker one. -- Brian
+ Kernighan
Until the POSIX standard (and `GAWK: Effective AWK Programming'),
many features of `awk' were either poorly documented or not documented
@@ -1819,7 +1825,7 @@ information). Using this information, create your own `BBS-list' and
If you are using the stand-alone version of Info, see *note Extract
Program::, for an `awk' program that extracts these data files from
-`gawk.texi', the Texinfo source file for this Info file.
+`gawk.texi', the (generated) Texinfo source file for this Info file.

File: gawk.info, Node: Very Simple, Next: Two Rules, Prev: Sample Data Files, Up: Getting Started
@@ -2849,10 +2855,6 @@ used by regular users.
the `gawk' developers for testing and tuning. They are subject to
change. The variables are:
-`AVG_CHAIN_MAX'
- The average number of items `gawk' will maintain on a hash chain
- for managing arrays.
-
`AWK_HASH'
If this variable exists with a value of `gst', `gawk' will switch
to using the hash function from GNU Smalltalk for managing arrays.
@@ -2864,6 +2866,13 @@ change. The variables are:
debugging problems on filesystems on non-POSIX operating systems
where I/O is performed in records, not in blocks.
+`GAWK_MSG_SRC'
+ If this variable exists, `gawk' includes the source file name and
+ line number from which warning and/or fatal messages are
+ generated. Its purpose is to help isolate the source of a
+ message, since there can be multiple places which produce the same
+ warning or error message.
+
`GAWK_NO_DFA'
If this variable exists, `gawk' does not use the DFA regexp matcher
for "does it match" kinds of tests. This can cause `gawk' to be
@@ -2876,6 +2885,14 @@ change. The variables are:
This specifies the amount by which `gawk' should grow its internal
evaluation stack, when needed.
+`INT_CHAIN_MAX'
+ The average number of items `gawk' will maintain on a hash chain
+ for managing arrays indexed by integers.
+
+`STR_CHAIN_MAX'
+ The average number of items `gawk' will maintain on a hash chain
+ for managing arrays indexed by strings.
+
`TIDYMEM'
If this variable exists, `gawk' uses the `mtrace()' library calls
from GNU LIBC to help track down possible memory leaks.
@@ -3052,8 +3069,7 @@ File: gawk.info, Node: Undocumented, Prev: Obsolete, Up: Invoking Gawk
2.10 Undocumented Options and Features
======================================
- Use the Source, Luke!
- Obi-Wan
+ Use the Source, Luke! -- Obi-Wan
This minor node intentionally left blank.
@@ -3876,7 +3892,7 @@ have to be named on the `awk' command line (*note Getline::).
* Field Separators:: The field separator and how to change it.
* Constant Size:: Reading constant width data.
* Splitting By Content:: Defining Fields By Content
-* Multiple Line:: Reading multi-line records.
+* Multiple Line:: Reading multiline records.
* Getline:: Reading files under explicit program control
using the `getline' function.
* Read Timeout:: Reading input with a timeout.
@@ -4369,6 +4385,7 @@ File: gawk.info, Node: Field Separators, Next: Constant Size, Prev: Changing
* Regexp Field Splitting:: Using regexps as the field separator.
* Single Character Fields:: Making each character a separate field.
* Command Line Field Separator:: Setting `FS' from the command-line.
+* Full Line Fields:: Making the full line be a single field.
* Field Splitting Summary:: Some final points and a summary table.
The "field separator", which is either a single character or a
@@ -4550,7 +4567,7 @@ Options::), if `FS' is the null string, then `gawk' also behaves this
way.

-File: gawk.info, Node: Command Line Field Separator, Next: Field Splitting Summary, Prev: Single Character Fields, Up: Field Separators
+File: gawk.info, Node: Command Line Field Separator, Next: Full Line Fields, Prev: Single Character Fields, Up: Field Separators
4.5.4 Setting `FS' from the Command Line
----------------------------------------
@@ -4637,9 +4654,27 @@ the entries for users who have no password:
awk -F: '$2 == ""' /etc/passwd

-File: gawk.info, Node: Field Splitting Summary, Prev: Command Line Field Separator, Up: Field Separators
+File: gawk.info, Node: Full Line Fields, Next: Field Splitting Summary, Prev: Command Line Field Separator, Up: Field Separators
+
+4.5.5 Making The Full Line Be A Single Field
+--------------------------------------------
+
+Occasionally, it's useful to treat the whole input line as a single
+field. This can be done easily and portably simply by setting `FS' to
+`"\n"' (a newline).(1)
+
+ awk -F'\n' 'PROGRAM' FILES ...
+
+When you do this, `$1' is the same as `$0'.
+
+ ---------- Footnotes ----------
+
+ (1) Thanks to Andrew Schorr for this tip.
+
+
+File: gawk.info, Node: Field Splitting Summary, Prev: Full Line Fields, Up: Field Separators
-4.5.5 Field-Splitting Summary
+4.5.6 Field-Splitting Summary
-----------------------------
It is important to remember that when you assign a string constant as
@@ -5291,8 +5326,7 @@ File: gawk.info, Node: Getline/Pipe, Next: Getline/Variable/Pipe, Prev: Getli
---------------------------------
Omniscience has much to recommend it. Failing that, attention to
- details would be useful.
- Brian Kernighan
+ details would be useful. -- Brian Kernighan
The output of a command can also be piped into `getline', using
`COMMAND | getline'. In this case, the string COMMAND is run as a
@@ -7095,7 +7129,7 @@ controlled by the `awk' built-in variable `CONVFMT' (*note Built-in
Variables::). Numbers are converted using the `sprintf()' function
with `CONVFMT' as the format specifier (*note String Functions::).
- `CONVFMT''s default value is `"%.6g"', which prints a value with at
+ `CONVFMT''s default value is `"%.6g"', which creates a value with at
most six significant digits. For some applications, you might want to
change it to specify more precision. On most modern machines, 17
digits is usually enough to capture a floating-point number's value
@@ -7302,8 +7336,7 @@ File: gawk.info, Node: Concatenation, Next: Assignment Ops, Prev: Arithmetic
6.2.2 String Concatenation
--------------------------
- It seemed like a good idea at the time.
- Brian Kernighan
+ It seemed like a good idea at the time. -- Brian Kernighan
There is only one string operation: concatenation. It does not have
a specific operator to represent it. Instead, concatenation is
@@ -7609,8 +7642,7 @@ is a summary of increment and decrement expressions:
Operator Evaluation Order
Doctor, doctor! It hurts when I do this!
- So don't do that!
- Groucho Marx
+ So don't do that! -- Groucho Marx
What happens for something like the following?
@@ -7691,8 +7723,8 @@ File: gawk.info, Node: Typing and Comparison, Next: Boolean Ops, Prev: Truth
6.3.2 Variable Typing and Comparison Expressions
------------------------------------------------
- The Guide is definitive. Reality is frequently inaccurate.
- The Hitchhiker's Guide to the Galaxy
+ The Guide is definitive. Reality is frequently inaccurate. -- The
+ Hitchhiker's Guide to the Galaxy
Unlike other programming languages, `awk' variables do not have a
fixed type. Instead, they can be either a number or a string, depending
@@ -9495,7 +9527,7 @@ specific to `gawk' are marked with a pound sign (`#').
`FS'
This is the input field separator (*note Field Separators::). The
- value is a single-character string or a multi-character regular
+ value is a single-character string or a multicharacter 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
@@ -9597,7 +9629,7 @@ specific to `gawk' are marked with a pound sign (`#').
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 Multi-dimensional::).
+ really accesses `foo["A\034B"]' (*note Multidimensional::).
`TEXTDOMAIN #'
This variable is used for internationalization of programs at the
@@ -9685,12 +9717,12 @@ with a pound sign (`#').
environment passed on to any programs that `awk' may spawn via
redirection or the `system()' function.
- However, beginning with {No value for `PVERSION'} 4.2, if not in
- POSIX compatibility mode, `gawk' does update its own environment
- when `ENVIRON' is changed, thus changing the environment seen by
- programs that it creates. You should therefore be especially
- careful if you modify `ENVIRON["PATH"]"', which is the search path
- for finding executable programs.
+ However, beginning with version 4.2, if not in POSIX compatibility
+ mode, `gawk' does update its own environment when `ENVIRON' is
+ changed, thus changing the environment seen by programs that it
+ creates. You should therefore be especially careful if you modify
+ `ENVIRON["PATH"]"', which is the search path for finding
+ executable programs.
Some operating systems may not have environment variables. On
such systems, the `ENVIRON' array is empty (except for
@@ -10097,7 +10129,7 @@ cannot have a variable and an array with the same name in the same
* Numeric Array Subscripts:: How to use numbers as subscripts in
`awk'.
* Uninitialized Subscripts:: Using Uninitialized variables as subscripts.
-* Multi-dimensional:: Emulating multidimensional arrays in
+* Multidimensional:: Emulating multidimensional arrays in
`awk'.
* Arrays of Arrays:: True multidimensional arrays.
@@ -10129,8 +10161,7 @@ File: gawk.info, Node: Array Intro, Next: Reference to Elements, Up: Array Ba
----------------------------
Doing linear scans over an associative array is like trying to
- club someone to death with a loaded Uzi.
- Larry Wall
+ club someone to death with a loaded Uzi. -- Larry Wall
The `awk' language provides one-dimensional arrays for storing
groups of related strings or numbers. Every `awk' array must have a
@@ -10440,42 +10471,45 @@ available:
default `awk' behavior.
`"@ind_str_asc"'
- Order by indices compared as strings; this is the most basic sort.
- (Internally, array indices are always strings, so with `a[2*5] = 1'
- the index is `"10"' rather than numeric 10.)
+ Order by indices in ascending order compared as strings; this is
+ the most basic sort. (Internally, array indices are always
+ strings, so with `a[2*5] = 1' the index is `"10"' rather than
+ numeric 10.)
`"@ind_num_asc"'
- Order by indices but force them to be treated as numbers in the
- process. Any index with a non-numeric value will end up
- positioned as if it were zero.
+ Order by indices in ascending order but force them to be treated
+ as numbers in the process. Any index with a non-numeric value
+ will end up positioned as if it were zero.
`"@val_type_asc"'
- Order by element values rather than indices. Ordering is by the
- type assigned to the element (*note Typing and Comparison::). All
- numeric values come before all string values, which in turn come
- before all subarrays. (Subarrays have not been described yet;
- *note Arrays of Arrays::).
+ Order by element values in ascending order (rather than by
+ indices). Ordering is by the type assigned to the element (*note
+ Typing and Comparison::). All numeric values come before all
+ string values, which in turn come before all subarrays.
+ (Subarrays have not been described yet; *note Arrays of Arrays::.)
`"@val_str_asc"'
- Order by element values rather than by indices. Scalar values are
- compared as strings. Subarrays, if present, come out last.
+ Order by element values in ascending order (rather than by
+ indices). Scalar values are compared as strings. Subarrays, if
+ present, come out last.
`"@val_num_asc"'
- Order by element values rather than by indices. Scalar values are
- compared as numbers. Subarrays, if present, come out last. When
- numeric values are equal, the string values are used to provide an
- ordering: this guarantees consistent results across different
- versions of the C `qsort()' function,(1) which `gawk' uses
- internally to perform the sorting.
+ Order by element values in ascending order (rather than by
+ indices). Scalar values are compared as numbers. Subarrays, if
+ present, come out last. When numeric values are equal, the string
+ values are used to provide an ordering: this guarantees consistent
+ results across different versions of the C `qsort()' function,(1)
+ which `gawk' uses internally to perform the sorting.
`"@ind_str_desc"'
- Reverse order from the most basic sort.
+ String indices ordered from high to low.
`"@ind_num_desc"'
Numeric indices ordered from high to low.
`"@val_type_desc"'
- Element values, based on type, in descending order.
+ Element values, based on type, ordered from high to low.
+ Subarrays, if present, come out first.
`"@val_str_desc"'
Element values, treated as strings, ordered from high to low.
@@ -10678,7 +10712,7 @@ knowledge of the actual rules since they can sometimes have a subtle
effect on your programs.

-File: gawk.info, Node: Uninitialized Subscripts, Next: Multi-dimensional, Prev: Numeric Array Subscripts, Up: Arrays
+File: gawk.info, Node: Uninitialized Subscripts, Next: Multidimensional, Prev: Numeric Array Subscripts, Up: Arrays
8.4 Using Uninitialized Variables as Subscripts
===============================================
@@ -10726,14 +10760,14 @@ string as a subscript if `--lint' is provided on the command line
(*note Options::).

-File: gawk.info, Node: Multi-dimensional, Next: Arrays of Arrays, Prev: Uninitialized Subscripts, Up: Arrays
+File: gawk.info, Node: Multidimensional, Next: Arrays of Arrays, Prev: Uninitialized Subscripts, Up: Arrays
8.5 Multidimensional Arrays
===========================
* Menu:
-* Multi-scanning:: Scanning multidimensional arrays.
+* Multiscanning:: Scanning multidimensional arrays.
A multidimensional array is an array in which an element is
identified by a sequence of indices instead of a single index. For
@@ -10812,7 +10846,7 @@ the program produces the following output:
3 2 1 6

-File: gawk.info, Node: Multi-scanning, Up: Multi-dimensional
+File: gawk.info, Node: Multiscanning, Up: Multidimensional
8.5.1 Scanning Multidimensional Arrays
--------------------------------------
@@ -10852,7 +10886,7 @@ The result is to set `separate[1]' to `"1"' and `separate[2]' to
recovered.

-File: gawk.info, Node: Arrays of Arrays, Prev: Multi-dimensional, Up: Arrays
+File: gawk.info, Node: Arrays of Arrays, Prev: Multidimensional, Up: Arrays
8.6 Arrays of Arrays
====================
@@ -11188,13 +11222,15 @@ File: gawk.info, Node: String Functions, Next: I/O Functions, Prev: Numeric F
-----------------------------------
The functions in this minor node look at or change the text of one or
-more strings. `gawk' understands locales (*note Locales::), and does
-all string processing in terms of _characters_, not _bytes_. This
-distinction is particularly important to understand for locales where
-one character may be represented by multiple bytes. Thus, for example,
-`length()' returns the number of characters in a string, and not the
-number of bytes used to represent those characters, Similarly,
-`index()' works with character indices, and not byte indices.
+more strings.
+
+ `gawk' understands locales (*note Locales::), and does all string
+processing in terms of _characters_, not _bytes_. This distinction is
+particularly important to understand for locales where one character
+may be represented by multiple bytes. Thus, for example, `length()'
+returns the number of characters in a string, and not the number of
+bytes used to represent those characters. Similarly, `index()' works
+with character indices, and not byte indices.
In the following list, optional parameters are enclosed in square
brackets ([ ]). Several functions perform string substitution; the
@@ -11210,26 +11246,26 @@ pound sign (`#'):
`gensub()'.
`asort(SOURCE [, DEST [, HOW ] ]) #'
- Return the number of elements in the array SOURCE. `gawk' sorts
- the contents of SOURCE and replaces the indices of the sorted
- values of SOURCE with sequential integers starting with one. If
- the optional array DEST is specified, then SOURCE is duplicated
- into DEST. DEST is then sorted, leaving the indices of SOURCE
- unchanged. The optional third argument HOW is a string which
- controls the rule for comparing values, and the sort direction. A
- single space is required between the comparison mode, `string' or
- `number', and the direction specification, `ascending' or
- `descending'. You can omit direction and/or mode in which case it
- will default to `ascending' and `string', respectively. An empty
- string "" is the same as the default `"ascending string"' for the
- value of HOW. If the `source' array contains subarrays as values,
- they will come out last(first) in the `dest' array for
- `ascending'(`descending') order specification. The value of
- `IGNORECASE' affects the sorting. The third argument can also be
- a user-defined function name in which case the value returned by
- the function is used to order the array elements before
- constructing the result array. *Note Array Sorting Functions::,
- for more information.
+`asorti(SOURCE [, DEST [, HOW ] ]) #'
+ These two functions are similar in behavior, so they are described
+ together.
+
+ NOTE: The following description ignores the third argument,
+ HOW, since it requires understanding features that we have
+ not discussed yet. Thus, the discussion here is a deliberate
+ simplification. (We do provide all the details later on:
+ *Note Array Sorting Functions::, for the full story.)
+
+ Both functions return the number of elements in the array SOURCE.
+ For `asort()', `gawk' sorts the values of SOURCE and replaces the
+ indices of the sorted values of SOURCE with sequential integers
+ starting with one. If the optional array DEST is specified, then
+ SOURCE is duplicated into DEST. DEST is then sorted, leaving the
+ indices of SOURCE unchanged.
+
+ When comparing strings, `IGNORECASE' affects the sorting. If the
+ SOURCE array contains subarrays as values (*note Arrays of
+ Arrays::), they will come last, after all scalar values.
For example, if the contents of `a' are as follows:
@@ -11247,23 +11283,16 @@ pound sign (`#'):
a[2] = "de"
a[3] = "sac"
- In order to reverse the direction of the sorted results in the
- above example, `asort()' can be called with three arguments as
- follows:
+ The `asorti()' function works similarly to `asort()', however, the
+ _indices_ are sorted, instead of the values. Thus, in the previous
+ example, starting with the same initial set of indices and values
+ in `a', calling `asorti(a)' would yield:
- asort(a, a, "descending")
+ a[1] = "first"
+ a[2] = "last"
+ a[3] = "middle"
- The `asort()' function is described in more detail in *note Array
- Sorting Functions::. `asort()' is a `gawk' extension; it is not
- available in compatibility mode (*note Options::).
-
-`asorti(SOURCE [, DEST [, HOW ] ]) #'
- Return the number of elements in the array SOURCE. It works
- similarly to `asort()', however, the _indices_ are sorted, instead
- of the values. (Here too, `IGNORECASE' affects the sorting.)
-
- The `asorti()' function is described in more detail in *note Array
- Sorting Functions::. `asorti()' is a `gawk' extension; it is not
+ `asort()' and `asorti()' are `gawk' extensions; they are not
available in compatibility mode (*note Options::).
`gensub(REGEXP, REPLACEMENT, HOW [, TARGET]) #'
@@ -12426,7 +12455,7 @@ File: gawk.info, Node: Bitwise Functions, Next: Type Functions, Prev: Time Fu
9.1.6 Bit-Manipulation Functions
--------------------------------
- I can explain it for you, but I can't understand it for you.
+ I can explain it for you, but I can't understand it for you. --
Anonymous
Many languages provide the ability to perform "bitwise" operations
@@ -13496,7 +13525,7 @@ algorithms and program tasks in a single place. It simplifies
programming, making program development more manageable, and making
programs more readable.
- In their seminal 1976 book, `Software Tools'(1), Brian Kernighan and
+ In their seminal 1976 book, `Software Tools',(1) Brian Kernighan and
P.J. Plauger wrote:
Good Programming is not learned from generalities, but by seeing
@@ -13672,6 +13701,7 @@ programming use.
vice versa.
* Join Function:: A function to join an array into a string.
* Getlocaltime Function:: A function to get formatted times.
+* Readfile Function:: A function to read an entire file at once.

File: gawk.info, Node: Strtonum Function, Next: Assert Function, Up: General Functions
@@ -14064,7 +14094,7 @@ concatenation. The lack of an explicit operator for concatenation
makes string operations more difficult than they really need to be.

-File: gawk.info, Node: Getlocaltime Function, Prev: Join Function, Up: General Functions
+File: gawk.info, Node: Getlocaltime Function, Next: Readfile Function, Prev: Join Function, Up: General Functions
10.2.7 Managing the Time of Day
-------------------------------
@@ -14146,6 +14176,66 @@ the `getlocaltime()' function would have allowed the user to supply an
optional timestamp value to use instead of the current time.

+File: gawk.info, Node: Readfile Function, Prev: Getlocaltime Function, Up: General Functions
+
+10.2.8 Reading A Whole File At Once
+-----------------------------------
+
+Often, it is convenient to have the entire contents of a file available
+in memory as a single string. A straightforward but naive way to do
+that might be as follows:
+
+ function readfile(file, tmp, contents)
+ {
+ if ((getline tmp < file) < 0)
+ return
+
+ contents = tmp
+ while (getline tmp < file) > 0)
+ contents = contents RT tmp
+
+ close(file)
+ return contents
+ }
+
+ This function reads from `file' one record at a time, building up
+the full contents of the file in the local variable `contents'. It
+works, but is not necessarily efficient.
+
+ The following function, based on a suggestion by Denis Shirokov,
+reads the entire contents of the named file in one shot:
+
+ # readfile.awk --- read an entire file at once
+
+ function readfile(file, tmp, save_rs)
+ {
+ save_rs = RS
+ RS = "^$"
+ getline tmp < file
+ close(file)
+ RS = save_rs
+
+ return tmp
+ }
+
+ It works by setting `RS' to `^$', a regular expression that will
+never match if the file has contents. `gawk' reads data from the file
+into `tmp' attempting to match `RS'. The match fails after each read,
+but fails quickly, such that `gawk' fills `tmp' with the entire
+contents of the file. (*Note Records::, for information on `RT' and
+`RS'.)
+
+ In the case that `file' is empty, the return value is the null
+string. Thus calling code may use something like:
+
+ contents = readfile("/some/path")
+ if (length(contents) == 0)
+ # file was empty ...
+
+ This tests the result to see if it is empty or not. An equivalent
+test would be `contents == ""'.
+
+
File: gawk.info, Node: Data File Management, Next: Getopt Function, Prev: General Functions, Up: Library Functions
10.3 Data File Management
@@ -14552,7 +14642,7 @@ characters (*note String Functions::).(1)
# <c> a character representing the current option
# Private Data:
- # _opti -- index in multi-flag option, e.g., -abc
+ # _opti -- index in multiflag option, e.g., -abc
The function starts out with comments presenting a list of the
global variables it uses, what the return values are, what they mean,
@@ -16575,8 +16665,8 @@ File: gawk.info, Node: Alarm Program, Next: Translate Program, Prev: Dupword
11.3.2 An Alarm Clock Program
-----------------------------
- Nothing cures insomnia like a ringing alarm clock.
- Arnold Robbins
+ Nothing cures insomnia like a ringing alarm clock. -- Arnold
+ Robbins
The following program is a simple "alarm clock" program. You give
it a time of day and an optional message. At the specified time, it
@@ -16820,10 +16910,10 @@ program.
---------- Footnotes ----------
- (1) On some older systems, `tr' may require that the lists be
-written as range expressions enclosed in square brackets (`[a-z]') and
-quoted, to prevent the shell from attempting a file name expansion.
-This is not a feature.
+ (1) On some older systems, including Solaris, `tr' may require that
+the lists be written as range expressions enclosed in square brackets
+(`[a-z]') and quoted, to prevent the shell from attempting a file name
+expansion. This is not a feature.
(2) This program was written before `gawk' acquired the ability to
split each character in a string into separate array elements.
@@ -17133,11 +17223,11 @@ are simply removed. `extract.awk' uses the `join()' library function
(*note Join Function::).
The example programs in the online Texinfo source for `GAWK:
-Effective AWK Programming' (`gawk.texi') have all been bracketed inside
-`file' and `endfile' lines. The `gawk' distribution uses a copy of
-`extract.awk' to extract the sample programs and install many of them
-in a standard directory where `gawk' can find them. The Texinfo file
-looks something like this:
+Effective AWK Programming' (`gawktexi.in') have all been bracketed
+inside `file' and `endfile' lines. The `gawk' distribution uses a copy
+of `extract.awk' to extract the sample programs and install many of
+them in a standard directory where `gawk' can find them. The Texinfo
+file looks something like this:
...
This program has a @code{BEGIN} rule,
@@ -17889,8 +17979,8 @@ File: gawk.info, Node: Advanced Features, Next: Internationalization, Prev: S
******************************
Write documentation as if whoever reads it is a violent psychopath
- who knows where you live.
- Steve English, as quoted by Peter Langston
+ who knows where you live. -- Steve English, as quoted by Peter
+ Langston
This major node discusses advanced features in `gawk'. It's a bit
of a "grab bag" of items that are otherwise unrelated to each other.
@@ -18166,7 +18256,7 @@ seemingly ordered data:
function cmp_randomize(i1, v1, i2, v2)
{
- # random order
+ # random order (caution: this may never terminate!)
return (2 - 4 * rand())
}
@@ -18180,7 +18270,7 @@ elements with otherwise equal values is to include the indices in the
comparison rules. Note that doing this may make the loop traversal
less efficient, so consider it only if necessary. The following
comparison functions force a deterministic order, and are based on the
-fact that the indices of two elements are never equal:
+fact that the (string) indices of two elements are never equal:
function cmp_numeric(i1, v1, i2, v2)
{
@@ -18239,9 +18329,9 @@ functions (*note String Functions::) for sorting arrays. For example:
After the call to `asort()', the array `data' is indexed from 1 to
some number N, the total number of elements in `data'. (This count is
`asort()''s return value.) `data[1]' <= `data[2]' <= `data[3]', and so
-on. The comparison is based on the type of the elements (*note Typing
-and Comparison::). All numeric values come before all string values,
-which in turn come before all subarrays.
+on. The default comparison is based on the type of the elements (*note
+Typing and Comparison::). All numeric values come before all string
+values, which in turn come before all subarrays.
An important side effect of calling `asort()' is that _the array's
original indices are irrevocably lost_. As this isn't always
@@ -18256,21 +18346,11 @@ desirable, `asort()' accepts a second argument:
and then sorts `dest', destroying its indices. However, the `source'
array is not affected.
- `asort()' accepts a third string argument to control comparison of
-array elements. As with `PROCINFO["sorted_in"]', this argument may be
-one of the predefined names that `gawk' provides (*note Controlling
-Scanning::), or the name of a user-defined function (*note Controlling
-Array Traversal::).
-
- NOTE: In all cases, the sorted element values consist of the
- original array's element values. The ability to control
- comparison merely affects the way in which they are sorted.
-
Often, what's needed is to sort on the values of the _indices_
instead of the values of the elements. To do that, use the `asorti()'
-function. The interface is identical to that of `asort()', except that
-the index values are used for sorting, and become the values of the
-result array:
+function. The interface and behavior are identical to that of
+`asort()', except that the index values are used for sorting, and
+become the values of the result array:
{ source[$0] = some_func($0) }
@@ -18285,32 +18365,41 @@ result array:
}
}
- Similar to `asort()', in all cases, the sorted element values
-consist of the original array's indices. The ability to control
-comparison merely affects the way in which they are sorted.
-
- Sorting the array by replacing the indices provides maximal
-flexibility. To traverse the elements in decreasing order, use a loop
-that goes from N down to 1, either over the elements or over the
-indices.(1)
-
- Copying array indices and elements isn't expensive in terms of
-memory. Internally, `gawk' maintains "reference counts" to data. For
-example, when `asort()' copies the first array to the second one, there
-is only one copy of the original array elements' data, even though both
-arrays use the values.
+ So far, so good. Now it starts to get interesting. Both `asort()'
+and `asorti()' accept a third string argument to control comparison of
+array elements. In *note String Functions::, we ignored this third
+argument; however, the time has now come to describe how this argument
+affects these two functions.
+
+ Basically, the third argument specifies how the array is to be
+sorted. There are two possibilities. As with `PROCINFO["sorted_in"]',
+this argument may be one of the predefined names that `gawk' provides
+(*note Controlling Scanning::), or it may be the name of a user-defined
+function (*note Controlling Array Traversal::).
+
+ In the latter case, _the function can compare elements in any way it
+chooses_, taking into account just the indices, just the values, or
+both. This is extremely powerful.
+
+ Once the array is sorted, `asort()' takes the _values_ in their
+final order, and uses them to fill in the result array, whereas
+`asorti()' takes the _indices_ in their final order, and uses them to
+fill in the result array.
+
+ NOTE: Copying array indices and elements isn't expensive in terms
+ of memory. Internally, `gawk' maintains "reference counts" to
+ data. For example, when `asort()' copies the first array to the
+ second one, there is only one copy of the original array elements'
+ data, even though both arrays use the values.
Because `IGNORECASE' affects string comparisons, the value of
`IGNORECASE' also affects sorting for both `asort()' and `asorti()'.
Note also that the locale's sorting order does _not_ come into play;
-comparisons are based on character values only.(2) Caveat Emptor.
+comparisons are based on character values only.(1) Caveat Emptor.
---------- Footnotes ----------
- (1) You may also use one of the predefined sorting names that sorts
-in decreasing order.
-
- (2) This is true because locale-based comparison occurs only when in
+ (1) This is true because locale-based comparison occurs only when in
POSIX compatibility mode, and since `asort()' and `asorti()' are `gawk'
extensions, they are not available in that case.
@@ -20387,8 +20476,7 @@ File: gawk.info, Node: Arbitrary Precision Arithmetic, Next: Dynamic Extension
authority; they tend to believe that all digits of a printed
answer are significant. Disillusioned computer users have just the
opposite approach; they are constantly afraid that their answers
- are almost meaningless.
- Donald Knuth(1)
+ are almost meaningless.(1) -- Donald Knuth
This major node discusses issues that you may encounter when
performing arithmetic. It begins by discussing some of the general
@@ -20517,7 +20605,7 @@ automatic conversion (via `CONVFMT') and from printing (via `OFMT').
what the default string representations show.
`CONVFMT''s default value is `"%.6g"', which yields a value with at
-least six significant digits. For some applications, you might want to
+most six significant digits. For some applications, you might want to
change it to specify more precision. On most modern machines, most of
the time, 17 digits is enough to capture a floating-point number's
value exactly.(1)
@@ -21269,9 +21357,7 @@ File: gawk.info, Node: Changing Precision, Next: Exact Arithmetic, Prev: Floa
them to full membership of the high-precision club, or do we treat
them and all their associates as second-class citizens? Sometimes
the first course is proper, sometimes the second, and it takes
- careful analysis to tell which.
-
- Dirk Laurie(1)
+ careful analysis to tell which.(1) -- Dirk Laurie
`gawk' does not implicitly modify the precision of any previously
computed results when the working precision is changed with an
@@ -21779,12 +21865,11 @@ File: gawk.info, Node: General Data Types, Next: Requesting Values, Prev: Ext
16.4.2 General Purpose Data Types
---------------------------------
- I have a true love/hate relationship with unions.
- Arnold Robbins
+ I have a true love/hate relationship with unions. -- Arnold
+ Robbins
That's the thing about unions: the compiler will arrange things so
- they can accommodate both love and hate.
- Chet Ramey
+ they can accommodate both love and hate. -- Chet Ramey
The extension API defines a number of simple types and structures
for general purpose use. Additional, more specialized, data structures
@@ -23567,8 +23652,7 @@ File: gawk.info, Node: Extension Example, Next: Extension Samples, Prev: Find
16.6 Example: Some File Functions
=================================
- No matter where you go, there you are.
- Buckaroo Bonzai
+ No matter where you go, there you are. -- Buckaroo Bonzai
Two useful functions that are not in `awk' are `chdir()' (so that an
`awk' program can change its directory) and `stat()' (so that an `awk'
@@ -24258,7 +24342,7 @@ follows: The usage is:
The `fts()' function provides a hook to the C library `fts()'
routines for traversing file hierarchies. Instead of returning data
-about one file at a time in a stream, it fills in a multi-dimensional
+about one file at a time in a stream, it fills in a multidimensional
array with data about each file and directory encountered in the
requested hierarchies.
@@ -24353,7 +24437,7 @@ Otherwise it returns -1.
lack of a comparison function, since `gawk' already provides
powerful array sorting facilities. While an `fts_read()'-like
interface could have been provided, this felt less natural than
- simply creating a multi-dimensional array to represent the file
+ simply creating a multidimensional array to represent the file
hierarchy and its information.
See `test/fts.awk' in the `gawk' distribution for an example.
@@ -24740,11 +24824,13 @@ provides a number of `gawk' extensions, including one for processing
XML files. This is the evolution of the original `xgawk' (XML `gawk')
project.
- As of this writing, there are four extensions:
+ As of this writing, there are five extensions:
* XML parser extension, using the Expat
(http://expat.sourceforge.net) XML parsing library.
+ * PDF extension.
+
* PostgreSQL extension.
* GD graphics library extension.
@@ -24891,7 +24977,7 @@ the changes, with cross-references to further details:
* Multiple `BEGIN' and `END' rules (*note BEGIN/END::).
- * Multidimensional arrays (*note Multi-dimensional::).
+ * Multidimensional arrays (*note Multidimensional::).

File: gawk.info, Node: SVR4, Next: POSIX, Prev: V7/SVR3.1, Up: Language History
@@ -25154,6 +25240,8 @@ the current version of `gawk'.
- Prestandard VAX C compiler for VAX/VMS
+ - GCC for VAX and Alpha has not been tested for a while.
+

@@ -25299,8 +25387,7 @@ File: gawk.info, Node: Contributors, Prev: Ranges and Locales, Up: Language H
A.8 Major Contributors to `gawk'
================================
- Always give credit where credit is due.
- Anonymous
+ Always give credit where credit is due. -- Anonymous
This minor node names the major contributors to `gawk' and/or this
Info file, in approximate chronological order:
@@ -25402,6 +25489,9 @@ Info file, in approximate chronological order:
- The modifications to convert `gawk' into a byte-code
interpreter, including the debugger.
+ - The addition of true multidimensional arrays. *note Arrays
+ of Arrays::.
+
- The additional modifications for support of arbitrary
precision arithmetic.
@@ -25412,6 +25502,9 @@ Info file, in approximate chronological order:
- Improved array internals for arrays indexed by integers.
+ - The improved array sorting features were driven by John
+ together with Pat Rankin.
+
* Efraim Yawitz contributed the original text for *note Debugger::.
* The development of the extension API first released with `gawk'
@@ -25534,6 +25627,13 @@ to different non-Unix operating systems:
Various `.c', `.y', and `.h' files
The actual `gawk' source code.
+`ABOUT-NLS'
+ Information about GNU `gettext' and translations.
+
+`AUTHORS'
+ A file with some information about the authorship of `gawk'. It
+ exists only to satisfy the pedants at the Free Software Foundation.
+
`README'
`README_d/README.*'
Descriptive files: `README' for `gawk' under Unix and the rest for
@@ -25559,16 +25659,6 @@ Various `.c', `.y', and `.h' files
`COPYING'
The GNU General Public License.
-`FUTURES'
- A brief list of features and changes being contemplated for future
- releases, with some indication of the time frame for the feature,
- based on its difficulty.
-
-`LIMITATIONS'
- A list of those factors that limit `gawk''s performance. Most of
- these depend on the hardware or operating system software and are
- not limits in `gawk' itself.
-
`POSIX.STD'
A description of behaviors in the POSIX standard for `awk' which
are left undefined, or where `gawk' may not comply fully, as well
@@ -25600,11 +25690,18 @@ Various `.c', `.y', and `.h' files
The `troff' source for a manual page describing `gawk'. This is
distributed for the convenience of Unix users.
-`doc/gawk.texi'
+`doc/gawktexi.in'
+`doc/sidebar.awk'
The Texinfo source file for this Info file. It should be
- processed with TeX (via `texi2dvi' or `texi2pdf') to produce a
- printed document, and with `makeinfo' to produce an Info or HTML
- file.
+ processed by `doc/sidebar.awk' before processing with `texi2dvi'
+ or `texi2pdf' to produce a printed document, and with `makeinfo'
+ to produce an Info or HTML file. The `Makefile' takes care of
+ this processing and produces printable output via `texi2dvi' or
+ `texi2pdf'.
+
+`doc/gawk.texi'
+ The file produced after processing `gawktexi.in' with
+ `sidebar.awk'.
`doc/gawk.info'
The generated Info file for this Info file.
@@ -25634,15 +25731,21 @@ Various `.c', `.y', and `.h' files
`Makefile.in'
`aclocal.m4'
+`bisonfix.awk'
+`config.guess'
`configh.in'
`configure.ac'
`configure'
`custom.h'
+`depcomp'
+`install-sh'
`missing_d/*'
+`mkinstalldirs'
`m4/*'
- These files and subdirectories are used when configuring `gawk'
- for various Unix systems. They are explained in *note Unix
- Installation::.
+ These files and subdirectories are used when configuring and
+ compiling `gawk' for various Unix systems. Most of them are
+ explained in *note Unix Installation::. The rest are there to
+ support the main infrastructure.
`po/*'
The `po' library contains message translations.
@@ -25663,6 +25766,11 @@ Various `.c', `.y', and `.h' files
of the programs in this Info file are available in appropriate
subdirectories of `awklib/eg'.
+`extension/*'
+ The source code, manual pages, and infrastructure files for the
+ sample extensions included with `gawk'. *Note Dynamic
+ Extensions::, for more information.
+
`posix/*'
Files needed for building `gawk' on POSIX-compliant systems.
@@ -25762,6 +25870,12 @@ B.2.2 Additional Configuration Options
There are several additional options you may use on the `configure'
command line when compiling `gawk' from scratch, including:
+`--disable-extensions'
+ Disable configuring and building the sample extensions in the
+ `extension' directory. This is useful for cross-compiling. The
+ default action is to dynamically check if the extensions can be
+ configured and compiled.
+
`--disable-lint'
Disable all lint checking within `gawk'. The `--lint' and
`--lint-old' options (*note Options::) are accepted, but silently
@@ -26164,51 +26278,119 @@ older designation "VMS" is used throughout to refer to OpenVMS.
* Menu:
* VMS Compilation:: How to compile `gawk' under VMS.
+* VMS Dynamic Extensions:: Compiling `gawk' dynamic extensions on
+ VMS.
* VMS Installation Details:: How to install `gawk' under VMS.
* VMS Running:: How to run `gawk' under VMS.
+* VMS GNV:: The VMS GNV Project.
* VMS Old Gawk:: An old version comes with some VMS systems.

-File: gawk.info, Node: VMS Compilation, Next: VMS Installation Details, Up: VMS Installation
+File: gawk.info, Node: VMS Compilation, Next: VMS Dynamic Extensions, Up: VMS Installation
B.3.2.1 Compiling `gawk' on VMS
...............................
To compile `gawk' under VMS, there is a `DCL' command procedure that
issues all the necessary `CC' and `LINK' commands. There is also a
-`Makefile' for use with the `MMS' utility. From the source directory,
-use either:
+`Makefile' for use with the `MMS' and `MMK' utilities. From the source
+directory, use either:
- $ @[.VMS]VMSBUILD.COM
+ $ @[.vms]vmsbuild.com
or:
- $ MMS/DESCRIPTION=[.VMS]DESCRIP.MMS GAWK
+ $ MMS/DESCRIPTION=[.vms]descrip.mms gawk
+
+or:
+
+ $ MMK/DESCRIPTION=[.vms]descrip.mms gawk
+
+ `MMK' is an open source, free, near-clone of `MMS' and can better
+handle `ODS-5' volumes with upper- and lowercase filenames. `MMK' is
+available from `https://github.com/endlesssoftware/mmk'.
+
+ With `ODS-5' volumes and extended parsing enabled, the case of the
+target parameter may need to be exact.
Older versions of `gawk' could be built with VAX C or GNU C on
VAX/VMS, as well as with DEC C, but that is no longer supported. DEC C
(also briefly known as "Compaq C" and now known as "HP C," but referred
-to here as "DEC C") is required. Both `VMSBUILD.COM' and `DESCRIP.MMS'
+to here as "DEC C") is required. Both `vmsbuild.com' and `descrip.mms'
contain some obsolete support for the older compilers but are set up to
use DEC C by default.
- `gawk' has been tested under Alpha/VMS 7.3-1 using Compaq C V6.4,
-and on Alpha/VMS 7.3, Alpha/VMS 7.3-2, and IA64/VMS 8.3.(1)
+ `gawk' has been tested under VAX/VMS 7.3 and Alpha/VMS 7.3-1 using
+Compaq C V6.4, and Alpha/VMS 7.3, Alpha/VMS 7.3-2, and IA64/VMS 8.3.
+The most recent builds used HP C V7.3 on Alpha VMS 8.3 and both Alpha
+and IA64 VMS 8.4 used HP C 7.3.(1)
+
+ Work is currently being done for a procedure to build `gawk' and
+create a PCSI kit for compatible with the GNV product.
---------- Footnotes ----------
(1) The IA64 architecture is also known as "Itanium."

-File: gawk.info, Node: VMS Installation Details, Next: VMS Running, Prev: VMS Compilation, Up: VMS Installation
+File: gawk.info, Node: VMS Dynamic Extensions, Next: VMS Installation Details, Prev: VMS Compilation, Up: VMS Installation
+
+B.3.2.2 Compiling `gawk' Dynamic Extensions on VMS
+..................................................
+
+The extensions that have been ported to VMS can be built using one of
+the following commands.
+
+ $ MMS/DESCRIPTION=[.vms]descrip.mms extensions
+
+or:
+
+ $ MMK/DESCRIPTION=[.vms]descrip.mms extensions
+
+ `gawk' uses `AWKLIBPATH' as either an environment variable or a
+logical name to find the dynamic extensions.
+
+ Dynamic extensions need to be compiled with the same compiler
+options for floating point, pointer size, and symbol name handling as
+were used to compile `gawk' itself. Alpha and Itanium should use IEEE
+floating point. The pointer size is 32 bits, and the symbol name
+handling should be exact case with CRC shortening for symbols longer
+than 32 bits.
+
+ For Alpha and Itanium:
+
+ /name=(as_is,short)
+ /float=ieee/ieee_mode=denorm_results
+
+ For VAX:
+
+ /name=(as_is,short)
+
+ Compile time macros need to be defined before the first VMS-supplied
+header file is included.
+
+ #if (__CRTL_VER >= 70200000) && !defined (__VAX)
+ #define _LARGEFILE 1
+ #endif
+
+ #ifndef __VAX
+ #ifdef __CRTL_VER
+ #if __CRTL_VER >= 80200000
+ #define _USE_STD_STAT 1
+ #endif
+ #endif
+ #endif
+
+
+File: gawk.info, Node: VMS Installation Details, Next: VMS Running, Prev: VMS Dynamic Extensions, Up: VMS Installation
-B.3.2.2 Installing `gawk' on VMS
+B.3.2.3 Installing `gawk' on VMS
................................
-To install `gawk', all you need is a "foreign" command, which is a
-`DCL' symbol whose value begins with a dollar sign. For example:
+To use `gawk', all you need is a "foreign" command, which is a `DCL'
+symbol whose value begins with a dollar sign. For example:
- $ GAWK :== $disk1:[gnubin]GAWK
+ $ GAWK :== $disk1:[gnubin]gawk
Substitute the actual location of `gawk.exe' for `$disk1:[gnubin]'. The
symbol should be placed in the `login.com' of any user who wants to run
@@ -26216,9 +26398,14 @@ symbol should be placed in the `login.com' of any user who wants to run
Alternatively, the symbol may be placed in the system-wide
`sylogin.com' procedure, which allows all users to run `gawk'.
+ If your `gawk' was installed by a PCSI kit into the `GNV$GNU:'
+directory tree, the program will be known as
+`GNV$GNU:[bin]gnv$gawk.exe' and the help file will be
+`GNV$GNU:[vms_help]gawk.hlp'.
+
Optionally, the help entry can be loaded into a VMS help library:
- $ LIBRARY/HELP SYS$HELP:HELPLIB [.VMS]GAWK.HLP
+ $ LIBRARY/HELP sys$help:helplib [.vms]gawk.hlp
(You may want to substitute a site-specific help library rather than
the standard VMS library `HELPLIB'.) After loading the help text, the
@@ -26240,9 +26427,9 @@ If `AWK_LIBRARY' has no definition, a default value of `SYS$LIBRARY:'
is used for it.

-File: gawk.info, Node: VMS Running, Next: VMS Old Gawk, Prev: VMS Installation Details, Up: VMS Installation
+File: gawk.info, Node: VMS Running, Next: VMS GNV, Prev: VMS Installation Details, Up: VMS Installation
-B.3.2.3 Running `gawk' on VMS
+B.3.2.4 Running `gawk' on VMS
.............................
Command-line parsing and quoting conventions are significantly different
@@ -26268,6 +26455,35 @@ If any other dash-type options (or multiple parameters such as data
files to process) are present, there is no ambiguity and `--' can be
omitted.
+ The `exit' value is a Unix-style value and is encoded to a VMS exit
+status value when the program exits.
+
+ The VMS severity bits will be set based on the `exit' value. A
+failure is indicated by 1 and VMS sets the `ERROR' status. A fatal
+error is indicated by 2 and VMS will set the `FATAL' status. All other
+values will have the `SUCCESS' status. The exit value is encoded to
+comply with VMS coding standards and will have the `C_FACILITY_NO' of
+`0x350000' with the constant `0xA000' added to the number shifted over
+by 3 bits to make room for the severity codes.
+
+ To extract the actual `gawk' exit code from the VMS status use:
+
+ unix_status = (vms_status .and. &x7f8) / 8
+
+A C program that uses `exec()' to call `gawk' will get the original
+Unix-style exit value.
+
+ Older versions of `gawk' treated a Unix exit code 0 as 1, a failure
+as 2, a fatal error as 4, and passed all the other numbers through.
+This violated the VMS exit status coding requirements.
+
+ VAX/VMS floating point uses unbiased rounding. *Note Round
+Function::.
+
+ VMS reports time values in GMT unless one of the `SYS$TIMEZONE_RULE'
+or `TZ' logical names is set. Older versions of VMS, such as VAX/VMS
+7.3 do not set these logical names.
+
The default search path, when looking for `awk' program files
specified by the `-f' option, is `"SYS$DISK:[],AWK_LIBRARY:"'. The
logical name `AWKPATH' can be used to override this default. The format
@@ -26276,9 +26492,25 @@ When defining it, the value should be quoted so that it retains a single
translation and not a multitranslation `RMS' searchlist.

-File: gawk.info, Node: VMS Old Gawk, Prev: VMS Running, Up: VMS Installation
+File: gawk.info, Node: VMS GNV, Next: VMS Old Gawk, Prev: VMS Running, Up: VMS Installation
+
+B.3.2.5 The VMS GNV Project
+...........................
+
+The VMS GNV package provides a build environment similar to POSIX with
+ports of a collection of open source tools. The `gawk' found in the GNV
+base kit is an older port. Currently the GNV project is being
+reorganized to supply individual PCSI packages for each component. See
+`https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/'.
-B.3.2.4 Some VMS Systems Have An Old Version of `gawk'
+ The normal build procedure for `gawk' produces a program that is
+suitable for use with GNV. At this time work is being done to create
+the procedures for building a PCSI kit to replace the older `gawk' port.
+
+
+File: gawk.info, Node: VMS Old Gawk, Prev: VMS GNV, Up: VMS Installation
+
+B.3.2.6 Some VMS Systems Have An Old Version of `gawk'
......................................................
Some versions of VMS have an old version of `gawk'. To access it,
@@ -26295,8 +26527,8 @@ File: gawk.info, Node: Bugs, Next: Other Versions, Prev: Non-Unix Installatio
B.4 Reporting Problems and Bugs
===============================
- There is nothing more dangerous than a bored archeologist.
- The Hitchhiker's Guide to the Galaxy
+ There is nothing more dangerous than a bored archeologist. -- The
+ Hitchhiker's Guide to the Galaxy
If you have problems with `gawk' or think that you have found a bug,
please report it to the developers; we cannot promise to do anything
@@ -26362,7 +26594,8 @@ considered authoritative if it conflicts with this Info file.
MS-DOS with DJGPP Scott Deifik, <scottd.mail@sbcglobal.net>.
MS-Windows with MINGW Eli Zaretskii, <eliz@gnu.org>.
OS/2 Andreas Buening, <andreas.buening@nexgo.de>.
-VMS Pat Rankin, <r.pat.rankin@gmail.com>
+VMS Pat Rankin, <r.pat.rankin@gmail.com>, and John
+ Malmberg, <wb8tyw@gmail.com>.
z/OS (OS/390) Dave Pitts, <dpitts@cozx.com>.
If your bug is also reproducible under Unix, please send a copy of
@@ -26375,8 +26608,8 @@ B.5 Other Freely Available `awk' Implementations
================================================
It's kind of fun to put comments like this in your awk code.
- `// Do C++ comments work? answer: yes! of course'
- Michael Brennan
+ `// Do C++ comments work? answer: yes! of course' -- Michael
+ Brennan
There are a number of other freely available `awk' implementations.
This minor node briefly describes where to get them:
@@ -26467,12 +26700,18 @@ Busybox Awk
The OpenSolaris POSIX `awk'
The version of `awk' in `/usr/xpg4/bin' on Solaris is more-or-less
POSIX-compliant. It is based on the `awk' from Mortice Kern
- Systems for PCs. The source code can be downloaded from the
- OpenSolaris web site (http://www.opensolaris.org). This author
- was able to make it compile and work under GNU/Linux with 1-2
- hours of work. Making it more generally portable (using GNU
- Autoconf and/or Automake) would take more work, and this has not
- been done, at least to our knowledge.
+ Systems for PCs. This author was able to make it compile and work
+ under GNU/Linux with 1-2 hours of work. Making it more generally
+ portable (using GNU Autoconf and/or Automake) would take more
+ work, and this has not been done, at least to our knowledge.
+
+ The source code used to be available from the OpenSolaris web site.
+ However, that project was ended and the web site shut down.
+ Fortunately, the Illumos project
+ (http://wiki.illumos.org/display/illumos/illumos+Home) makes this
+ implementation available. You can view the files one at a time
+ from
+ `https://github.com/joyent/illumos-joyent/blob/master/usr/src/cmd/awk_xpg4'.
`jawk'
This is an interpreter for `awk' written in Java. It claims to be
@@ -26502,6 +26741,11 @@ QSE Awk
`http://www.quiktrim.org/QTawk.html' for more information,
including the manual and a download link.
+Other Versions
+ See also the Wikipedia article
+ (http://en.wikipedia.org/wiki/Awk_language#Versions_and_implementations),
+ for information on additional versions.
+

File: gawk.info, Node: Notes, Next: Basic Concepts, Prev: Installation, Up: Top
@@ -26968,10 +27212,9 @@ C.3 Probable Future Extensions
==============================
AWK is a language similar to PERL, only considerably more elegant.
- Arnold Robbins
+ -- Arnold Robbins
- Hey!
- Larry Wall
+ Hey! -- Larry Wall
The `TODO' file in the `gawk' Git repository lists possible future
enhancements. Some of these relate to the source code, and others to
@@ -27105,7 +27348,7 @@ Some goals for the new API were:
fashion for C code.
- The ability to create arrays (including `gawk''s true
- multi-dimensional arrays).
+ multidimensional arrays).
Some additional important goals were:
@@ -29379,10 +29622,12 @@ Index
* --characters-as-bytes option: Options. (line 82)
* --copyright option: Options. (line 102)
* --debug option: Options. (line 122)
-* --disable-lint configuration option: Additional Configuration Options.
+* --disable-extensions configuration option: Additional Configuration Options.
(line 9)
+* --disable-lint configuration option: Additional Configuration Options.
+ (line 15)
* --disable-nls configuration option: Additional Configuration Options.
- (line 24)
+ (line 30)
* --dump-variables option <1>: Library Names. (line 45)
* --dump-variables option: Options. (line 107)
* --exec option: Options. (line 139)
@@ -29420,7 +29665,7 @@ Index
* --use-lc-numeric option: Options. (line 215)
* --version option: Options. (line 293)
* --with-whiny-user-strftime configuration option: Additional Configuration Options.
- (line 29)
+ (line 35)
* -b option: Options. (line 82)
* -C option: Options. (line 102)
* -D option: Options. (line 122)
@@ -29589,7 +29834,7 @@ Index
(line 23)
* advanced features, specifying field content: Splitting By Content.
(line 9)
-* Aho, Alfred <1>: Contributors. (line 12)
+* Aho, Alfred <1>: Contributors. (line 11)
* Aho, Alfred: History. (line 17)
* alarm clock example program: Alarm Program. (line 9)
* alarm.awk program: Alarm Program. (line 29)
@@ -29628,7 +29873,7 @@ Index
* arrays: Arrays. (line 6)
* arrays, as parameters to functions: Pass By Value/Reference.
(line 47)
-* arrays, associative: Array Intro. (line 50)
+* arrays, associative: Array Intro. (line 49)
* arrays, associative, library functions and: Library Names. (line 57)
* arrays, deleting entire contents: Delete. (line 39)
* arrays, elements, assigning: Assigning Elements. (line 6)
@@ -29636,34 +29881,38 @@ Index
* arrays, elements, order of: Scanning an Array. (line 48)
* arrays, elements, referencing: Reference to Elements.
(line 6)
-* arrays, elements, retrieving number of: String Functions. (line 29)
+* arrays, elements, retrieving number of: String Functions. (line 32)
* arrays, for statement and: Scanning an Array. (line 20)
-* arrays, IGNORECASE variable and: Array Intro. (line 92)
-* arrays, indexing: Array Intro. (line 50)
+* arrays, IGNORECASE variable and: Array Intro. (line 91)
+* arrays, indexing: Array Intro. (line 49)
* arrays, merging into strings: Join Function. (line 6)
-* arrays, multidimensional: Multi-dimensional. (line 10)
-* arrays, multidimensional, scanning: Multi-scanning. (line 11)
+* arrays, multidimensional: Multidimensional. (line 10)
+* arrays, multidimensional, scanning: Multiscanning. (line 11)
* arrays, names of: Arrays. (line 18)
* arrays, scanning: Scanning an Array. (line 6)
* arrays, sorting: Array Sorting Functions.
(line 6)
* arrays, sorting, IGNORECASE variable and: Array Sorting Functions.
- (line 81)
-* arrays, sparse: Array Intro. (line 71)
+ (line 83)
+* arrays, sparse: Array Intro. (line 70)
* arrays, subscripts: Numeric Array Subscripts.
(line 6)
* arrays, subscripts, uninitialized variables as: Uninitialized Subscripts.
(line 6)
* artificial intelligence, gawk and: Distribution contents.
- (line 55)
+ (line 52)
* ASCII <1>: Glossary. (line 141)
* ASCII: Ordinal Functions. (line 45)
* asort() function (gawk) <1>: Array Sorting Functions.
(line 6)
-* asort() function (gawk): String Functions. (line 29)
+* asort() function (gawk): String Functions. (line 32)
* asort() function (gawk), arrays, sorting: Array Sorting Functions.
(line 6)
-* asorti() function (gawk): String Functions. (line 77)
+* asorti() function (gawk) <1>: Array Sorting Functions.
+ (line 6)
+* asorti() function (gawk): String Functions. (line 32)
+* asorti() function (gawk), arrays, sorting: Array Sorting Functions.
+ (line 6)
* assert() function (C library): Assert Function. (line 6)
* assert() user-defined function: Assert Function. (line 28)
* assertions: Assert Function. (line 6)
@@ -29671,7 +29920,7 @@ Index
* assignment operators, evaluation order: Assignment Ops. (line 111)
* assignment operators, lvalues/rvalues: Assignment Ops. (line 32)
* assignments as filenames: Ignoring Assigns. (line 6)
-* associative arrays: Array Intro. (line 50)
+* associative arrays: Array Intro. (line 49)
* asterisk (*), * operator, as multiplication operator: Precedence.
(line 55)
* asterisk (*), * operator, as regexp operator: Regexp Operators.
@@ -29802,7 +30051,7 @@ Index
* Beebe, Nelson: Acknowledgments. (line 60)
* BEGIN pattern <1>: Profiling. (line 62)
* BEGIN pattern <2>: BEGIN/END. (line 6)
-* BEGIN pattern <3>: Field Separators. (line 44)
+* BEGIN pattern <3>: Field Separators. (line 45)
* BEGIN pattern: Records. (line 29)
* BEGIN pattern, assert() user-defined function and: Assert Function.
(line 83)
@@ -29825,7 +30074,7 @@ Index
* BEGINFILE pattern, Boolean patterns and: Expression Patterns.
(line 73)
* beginfile() user-defined function: Filetrans Function. (line 62)
-* Benzinger, Michael: Contributors. (line 98)
+* Benzinger, Michael: Contributors. (line 97)
* Berry, Karl: Acknowledgments. (line 33)
* binary input/output: User-modified. (line 10)
* bindtextdomain() function (C library): Explaining gettext. (line 49)
@@ -29870,12 +30119,12 @@ Index
* Brennan, Michael: Delete. (line 56)
* Brian Kernighan's awk: Other Versions. (line 13)
* Brian Kernighan's awk, extensions: BTL. (line 6)
-* Broder, Alan J.: Contributors. (line 89)
-* Brown, Martin: Contributors. (line 83)
+* Broder, Alan J.: Contributors. (line 88)
+* Brown, Martin: Contributors. (line 82)
* BSD-based operating systems: Glossary. (line 624)
* bt debugger command (alias for backtrace): Execution Stack. (line 13)
* Buening, Andreas <1>: Bugs. (line 71)
-* Buening, Andreas <2>: Contributors. (line 93)
+* Buening, Andreas <2>: Contributors. (line 92)
* Buening, Andreas: Acknowledgments. (line 60)
* buffering, input/output <1>: Two-way I/O. (line 70)
* buffering, input/output: I/O Functions. (line 137)
@@ -29904,8 +30153,8 @@ Index
* caret (^), in bracket expressions: Bracket Expressions. (line 17)
* caret (^), regexp operator: Regexp Operators. (line 22)
* case keyword: Switch Statement. (line 6)
-* case sensitivity, array indices and: Array Intro. (line 92)
-* case sensitivity, converting case: String Functions. (line 524)
+* case sensitivity, array indices and: Array Intro. (line 91)
+* case sensitivity, converting case: String Functions. (line 519)
* case sensitivity, example programs: Library Functions. (line 53)
* case sensitivity, gawk: Case-sensitivity. (line 26)
* case sensitivity, regexps and <1>: User-modified. (line 82)
@@ -29936,13 +30185,13 @@ Index
* close() function <1>: I/O Functions. (line 10)
* close() function <2>: Close Files And Pipes.
(line 18)
-* close() function <3>: Getline/Pipe. (line 28)
+* close() function <3>: Getline/Pipe. (line 27)
* close() function: Getline/Variable/File.
(line 30)
* close() function, return value: Close Files And Pipes.
(line 130)
* close() function, two-way pipes and: Two-way I/O. (line 77)
-* Close, Diane <1>: Contributors. (line 21)
+* Close, Diane <1>: Contributors. (line 20)
* Close, Diane: Manual History. (line 41)
* Collado, Manuel: Acknowledgments. (line 60)
* collating elements: Bracket Expressions. (line 69)
@@ -29982,7 +30231,7 @@ Index
* common extensions, delete to delete entire arrays: Delete. (line 39)
* common extensions, func keyword: Definition Syntax. (line 83)
* common extensions, length() applied to an array: String Functions.
- (line 198)
+ (line 193)
* common extensions, RS as a regexp: Records. (line 120)
* common extensions, single character fields: Single Character Fields.
(line 6)
@@ -30008,15 +30257,17 @@ Index
* compl() function (gawk): Bitwise Functions. (line 43)
* complement, bitwise: Bitwise Functions. (line 25)
* compound statements, control statements and: Statements. (line 10)
-* concatenating: Concatenation. (line 9)
+* concatenating: Concatenation. (line 8)
* condition debugger command: Breakpoint Control. (line 54)
* conditional expressions: Conditional Exp. (line 6)
-* configuration option, --disable-lint: Additional Configuration Options.
+* configuration option, --disable-extensions: Additional Configuration Options.
(line 9)
+* configuration option, --disable-lint: Additional Configuration Options.
+ (line 15)
* configuration option, --disable-nls: Additional Configuration Options.
- (line 24)
+ (line 30)
* configuration option, --with-whiny-user-strftime: Additional Configuration Options.
- (line 29)
+ (line 35)
* configuration options, gawk: Additional Configuration Options.
(line 6)
* constants, floating-point: Floating-point Constants.
@@ -30027,7 +30278,7 @@ Index
(line 6)
* continue statement: Continue Statement. (line 6)
* control statements: Statements. (line 6)
-* converting, case: String Functions. (line 524)
+* converting, case: String Functions. (line 519)
* converting, dates to timestamps: Time Functions. (line 75)
* converting, during subscripting: Numeric Array Subscripts.
(line 31)
@@ -30087,7 +30338,7 @@ Index
(line 20)
* dark corner, input files: Records. (line 103)
* dark corner, invoking awk: Command Line. (line 16)
-* dark corner, length() function: String Functions. (line 184)
+* dark corner, length() function: String Functions. (line 179)
* dark corner, locale's decimal point character: Conversion. (line 77)
* dark corner, multiline records: Multiple Line. (line 35)
* dark corner, NF variable, decrementing: Changing Fields. (line 107)
@@ -30098,7 +30349,7 @@ Index
(line 147)
* dark corner, regexp constants, as arguments to user-defined functions: Using Constant Regexps.
(line 43)
-* dark corner, split() function: String Functions. (line 363)
+* dark corner, split() function: String Functions. (line 358)
* dark corner, strings, storing: Records. (line 195)
* dark corner, value of ARGV[0]: Auto-set. (line 35)
* data, fixed-width: Constant Size. (line 9)
@@ -30110,7 +30361,7 @@ Index
* dates, converting to timestamps: Time Functions. (line 75)
* dates, information related to, localization: Explaining gettext.
(line 115)
-* Davies, Stephen <1>: Contributors. (line 75)
+* Davies, Stephen <1>: Contributors. (line 74)
* Davies, Stephen: Acknowledgments. (line 60)
* dcgettext() function (gawk) <1>: Programmer i18n. (line 19)
* dcgettext() function (gawk): I18N Functions. (line 22)
@@ -30223,14 +30474,14 @@ Index
* decrement operators: Increment Ops. (line 35)
* default keyword: Switch Statement. (line 6)
* Deifik, Scott <1>: Bugs. (line 70)
-* Deifik, Scott <2>: Contributors. (line 54)
+* Deifik, Scott <2>: Contributors. (line 53)
* Deifik, Scott: Acknowledgments. (line 60)
* delete debugger command: Breakpoint Control. (line 64)
* delete statement: Delete. (line 6)
* deleting elements in arrays: Delete. (line 6)
* deleting entire arrays: Delete. (line 39)
* Demaille, Akim: Acknowledgments. (line 60)
-* differences between gawk and awk: String Functions. (line 198)
+* differences between gawk and awk: String Functions. (line 193)
* differences in awk and gawk, ARGC/ARGV variables: ARGC and ARGV.
(line 88)
* differences in awk and gawk, ARGIND variable: Auto-set. (line 40)
@@ -30275,7 +30526,7 @@ Index
(line 34)
* differences in awk and gawk, LINT variable: User-modified. (line 98)
* differences in awk and gawk, match() function: String Functions.
- (line 261)
+ (line 256)
* differences in awk and gawk, print/printf statements: Format Modifiers.
(line 13)
* differences in awk and gawk, PROCINFO array: Auto-set. (line 142)
@@ -30289,11 +30540,11 @@ Index
* differences in awk and gawk, single-character fields: Single Character Fields.
(line 6)
* differences in awk and gawk, split() function: String Functions.
- (line 351)
+ (line 346)
* differences in awk and gawk, strings: Scalar Constants. (line 20)
* differences in awk and gawk, strings, storing: Records. (line 191)
* differences in awk and gawk, strtonum() function (gawk): String Functions.
- (line 406)
+ (line 401)
* differences in awk and gawk, SYMTAB variable: Auto-set. (line 283)
* differences in awk and gawk, TEXTDOMAIN variable: User-modified.
(line 162)
@@ -30389,7 +30640,7 @@ Index
* eval debugger command: Viewing And Changing Data.
(line 23)
* evaluation order: Increment Ops. (line 60)
-* evaluation order, concatenation: Concatenation. (line 42)
+* evaluation order, concatenation: Concatenation. (line 41)
* evaluation order, functions: Calling Built-in. (line 30)
* examining fields: Fields. (line 6)
* exclamation point (!), ! operator <1>: Egrep Program. (line 170)
@@ -30409,9 +30660,10 @@ Index
* exclamation point (!), !~ operator: Regexp Usage. (line 19)
* exit statement: Exit Statement. (line 6)
* exit status, of gawk: Exit Status. (line 6)
+* exit status, of VMS: VMS Running. (line 29)
* exp() function: Numeric Functions. (line 18)
* expand utility: Very Simple. (line 69)
-* Expat XML parser library: gawkextlib. (line 33)
+* Expat XML parser library: gawkextlib. (line 35)
* expressions: Expressions. (line 6)
* expressions, as patterns: Expression Patterns. (line 6)
* expressions, assignment: Assignment Ops. (line 6)
@@ -30435,7 +30687,7 @@ Index
* extensions, common, delete to delete entire arrays: Delete. (line 39)
* extensions, common, func keyword: Definition Syntax. (line 83)
* extensions, common, length() applied to an array: String Functions.
- (line 198)
+ (line 193)
* extensions, common, RS as a regexp: Records. (line 120)
* extensions, common, single character fields: Single Character Fields.
(line 6)
@@ -30452,15 +30704,15 @@ Index
* features, advanced, See advanced features: Obsolete. (line 6)
* features, deprecated: Obsolete. (line 6)
* features, undocumented: Undocumented. (line 6)
-* Fenlason, Jay <1>: Contributors. (line 19)
+* Fenlason, Jay <1>: Contributors. (line 18)
* Fenlason, Jay: History. (line 30)
* fflush() function: I/O Functions. (line 25)
* field numbers: Nonconstant Fields. (line 6)
* field operator $: Fields. (line 19)
* field operators, dollar sign as: Fields. (line 19)
* field separators <1>: User-modified. (line 56)
-* field separators: Field Separators. (line 14)
-* field separators, choice of: Field Separators. (line 50)
+* field separators: Field Separators. (line 15)
+* field separators, choice of: Field Separators. (line 51)
* field separators, FIELDWIDTHS variable and: User-modified. (line 35)
* field separators, FPAT variable and: User-modified. (line 45)
* field separators, in multiline records: Multiple Line. (line 41)
@@ -30471,7 +30723,7 @@ Index
* field separators, POSIX and: Fields. (line 6)
* field separators, regular expressions as <1>: Regexp Field Splitting.
(line 6)
-* field separators, regular expressions as: Field Separators. (line 50)
+* field separators, regular expressions as: Field Separators. (line 51)
* field separators, See Also OFS: Changing Fields. (line 64)
* field separators, spaces as: Cut Program. (line 109)
* fields <1>: Basic High Level. (line 73)
@@ -30484,7 +30736,7 @@ Index
* fields, number of: Fields. (line 33)
* fields, numbers: Nonconstant Fields. (line 6)
* fields, printing: Print Examples. (line 21)
-* fields, separating: Field Separators. (line 14)
+* fields, separating: Field Separators. (line 15)
* fields, single-character: Single Character Fields.
(line 6)
* FIELDWIDTHS variable <1>: User-modified. (line 35)
@@ -30550,7 +30802,7 @@ Index
* files, Texinfo, extracting programs from: Extract Program. (line 6)
* finish debugger command: Debugger Execution Control.
(line 39)
-* Fish, Fred: Contributors. (line 51)
+* Fish, Fred: Contributors. (line 50)
* fixed-width data: Constant Size. (line 9)
* flag variables <1>: Tee Program. (line 20)
* flag variables: Boolean Ops. (line 67)
@@ -30558,6 +30810,7 @@ Index
(line 6)
* floating-point, numbers <1>: Unexpected Results. (line 6)
* floating-point, numbers: General Arithmetic. (line 6)
+* floating-point, VAX/VMS: VMS Running. (line 51)
* fnmatch extension function: Extension Sample Fnmatch.
(line 6)
* FNR variable <1>: Auto-set. (line 112)
@@ -30593,12 +30846,12 @@ Index
* Free Software Foundation (FSF): Manual History. (line 6)
* FreeBSD: Glossary. (line 624)
* FS variable <1>: User-modified. (line 56)
-* FS variable: Field Separators. (line 14)
+* FS variable: Field Separators. (line 15)
* FS variable, --field-separator option and: Options. (line 21)
* FS variable, as null string: Single Character Fields.
(line 20)
* FS variable, as TAB character: Options. (line 259)
-* FS variable, changing value of: Field Separators. (line 34)
+* FS variable, changing value of: Field Separators. (line 35)
* FS variable, running awk programs and: Cut Program. (line 68)
* FS variable, setting from command line: Command Line Field Separator.
(line 6)
@@ -30656,7 +30909,7 @@ Index
* functions, user-defined, next/nextfile statements and: Next Statement.
(line 45)
* G-d: Acknowledgments. (line 78)
-* Garfinkle, Scott: Contributors. (line 35)
+* Garfinkle, Scott: Contributors. (line 34)
* gawk program, dynamic profiling: Profiling. (line 172)
* gawk, ARGIND variable in: Other Arguments. (line 12)
* gawk, awk and <1>: This Manual. (line 14)
@@ -30699,9 +30952,9 @@ Index
* gawk, function arguments and: Calling Built-in. (line 16)
* gawk, hexadecimal numbers and: Nondecimal-numbers. (line 42)
* gawk, IGNORECASE variable in <1>: Array Sorting Functions.
- (line 81)
-* gawk, IGNORECASE variable in <2>: String Functions. (line 29)
-* gawk, IGNORECASE variable in <3>: Array Intro. (line 92)
+ (line 83)
+* gawk, IGNORECASE variable in <2>: String Functions. (line 32)
+* gawk, IGNORECASE variable in <3>: Array Intro. (line 91)
* gawk, IGNORECASE variable in <4>: User-modified. (line 82)
* gawk, IGNORECASE variable in: Case-sensitivity. (line 26)
* gawk, implementation issues: Notes. (line 6)
@@ -30754,7 +31007,7 @@ Index
* gawkextlib project: gawkextlib. (line 6)
* General Public License (GPL): Glossary. (line 314)
* General Public License, See GPL: Manual History. (line 11)
-* gensub() function (gawk) <1>: String Functions. (line 86)
+* gensub() function (gawk) <1>: String Functions. (line 81)
* gensub() function (gawk): Using Constant Regexps.
(line 43)
* gensub() function (gawk), escape processing: Gory Details. (line 6)
@@ -30817,23 +31070,23 @@ Index
* GPL (General Public License): Manual History. (line 11)
* GPL (General Public License), printing: Options. (line 102)
* grcat program: Group Functions. (line 16)
-* Grigera, Juan: Contributors. (line 58)
+* Grigera, Juan: Contributors. (line 57)
* group database, reading: Group Functions. (line 6)
* group file: Group Functions. (line 6)
* groups, information about: Group Functions. (line 6)
-* gsub() function <1>: String Functions. (line 139)
+* gsub() function <1>: String Functions. (line 134)
* gsub() function: Using Constant Regexps.
(line 43)
-* gsub() function, arguments of: String Functions. (line 464)
+* gsub() function, arguments of: String Functions. (line 459)
* gsub() function, escape processing: Gory Details. (line 6)
* h debugger command (alias for help): Miscellaneous Debugger Commands.
(line 66)
-* Hankerson, Darrel <1>: Contributors. (line 61)
+* Hankerson, Darrel <1>: Contributors. (line 60)
* Hankerson, Darrel: Acknowledgments. (line 60)
-* Haque, John: Contributors. (line 104)
+* Haque, John: Contributors. (line 103)
* Hartholz, Elaine: Acknowledgments. (line 38)
* Hartholz, Marshall: Acknowledgments. (line 38)
-* Hasegawa, Isamu: Contributors. (line 95)
+* Hasegawa, Isamu: Contributors. (line 94)
* help debugger command: Miscellaneous Debugger Commands.
(line 66)
* hexadecimal numbers: Nondecimal-numbers. (line 6)
@@ -30859,16 +31112,18 @@ Index
* igawk.sh program: Igawk Program. (line 124)
* ignore debugger command: Breakpoint Control. (line 87)
* IGNORECASE variable <1>: Array Sorting Functions.
- (line 81)
-* IGNORECASE variable <2>: String Functions. (line 29)
-* IGNORECASE variable <3>: Array Intro. (line 92)
+ (line 83)
+* IGNORECASE variable <2>: String Functions. (line 32)
+* IGNORECASE variable <3>: Array Intro. (line 91)
* IGNORECASE variable <4>: User-modified. (line 82)
* IGNORECASE variable: Case-sensitivity. (line 26)
* IGNORECASE variable, array sorting and: Array Sorting Functions.
- (line 81)
-* IGNORECASE variable, array subscripts and: Array Intro. (line 92)
+ (line 83)
+* IGNORECASE variable, array subscripts and: Array Intro. (line 91)
* IGNORECASE variable, in example programs: Library Functions.
(line 53)
+* Illumos: Other Versions. (line 104)
+* Illumos, POSIX-compliant awk: Other Versions. (line 104)
* implementation issues, gawk: Notes. (line 6)
* implementation issues, gawk, debugging: Compatibility Mode. (line 6)
* implementation issues, gawk, limits <1>: Redirection. (line 135)
@@ -30882,8 +31137,8 @@ Index
* in operator: Comparison Operators.
(line 11)
* increment operators: Increment Ops. (line 6)
-* index() function: String Functions. (line 155)
-* indexing arrays: Array Intro. (line 50)
+* index() function: String Functions. (line 150)
+* indexing arrays: Array Intro. (line 49)
* indirect function calls: Indirect Calls. (line 6)
* infinite precision: Arbitrary Precision Arithmetic.
(line 6)
@@ -30899,7 +31154,7 @@ Index
* input files, reading: Reading Files. (line 6)
* input files, running awk without: Read Terminal. (line 6)
* input files, variable assignments and: Other Arguments. (line 19)
-* input pipeline: Getline/Pipe. (line 10)
+* input pipeline: Getline/Pipe. (line 9)
* input redirection: Getline/File. (line 6)
* input, data, nondecimal: Nondecimal Data. (line 6)
* input, explicit: Getline. (line 6)
@@ -30946,20 +31201,20 @@ Index
* ISO 8859-1: Glossary. (line 141)
* ISO Latin-1: Glossary. (line 141)
* Jacobs, Andrew: Passwd Functions. (line 90)
-* Jaegermann, Michal <1>: Contributors. (line 46)
+* Jaegermann, Michal <1>: Contributors. (line 45)
* Jaegermann, Michal: Acknowledgments. (line 60)
-* Java implementation of awk: Other Versions. (line 106)
+* Java implementation of awk: Other Versions. (line 112)
* Java programming language: Glossary. (line 388)
-* jawk: Other Versions. (line 106)
+* jawk: Other Versions. (line 112)
* Jedi knights: Undocumented. (line 6)
* join() user-defined function: Join Function. (line 18)
-* Kahrs, Ju"rgen <1>: Contributors. (line 71)
+* Kahrs, Ju"rgen <1>: Contributors. (line 70)
* Kahrs, Ju"rgen: Acknowledgments. (line 60)
* Kasal, Stepan: Acknowledgments. (line 60)
* Kenobi, Obi-Wan: Undocumented. (line 6)
* Kernighan, Brian <1>: Basic Data Typing. (line 55)
* Kernighan, Brian <2>: Other Versions. (line 13)
-* Kernighan, Brian <3>: Contributors. (line 12)
+* Kernighan, Brian <3>: Contributors. (line 11)
* Kernighan, Brian <4>: BTL. (line 6)
* Kernighan, Brian <5>: Concatenation. (line 6)
* Kernighan, Brian <6>: Acknowledgments. (line 72)
@@ -30969,7 +31224,7 @@ Index
* Knights, jedi: Undocumented. (line 6)
* Knuth, Donald: Arbitrary Precision Arithmetic.
(line 6)
-* Kwok, Conrad: Contributors. (line 35)
+* Kwok, Conrad: Contributors. (line 34)
* l debugger command (alias for list): Miscellaneous Debugger Commands.
(line 72)
* labels.awk program: Labels Program. (line 51)
@@ -30994,10 +31249,10 @@ Index
(line 11)
* left shift, bitwise: Bitwise Functions. (line 32)
* leftmost longest match: Multiple Line. (line 26)
-* length() function: String Functions. (line 168)
+* length() function: String Functions. (line 163)
* Lesser General Public License (LGPL): Glossary. (line 405)
* LGPL (Lesser General Public License): Glossary. (line 405)
-* libmawk: Other Versions. (line 114)
+* libmawk: Other Versions. (line 120)
* libraries of awk functions: Library Functions. (line 6)
* libraries of awk functions, assertions: Assert Function. (line 6)
* libraries of awk functions, associative arrays and: Library Names.
@@ -31070,21 +31325,22 @@ Index
* lvalues/rvalues: Assignment Ops. (line 32)
* mailing labels, printing: Labels Program. (line 6)
* mailing list, GNITS: Acknowledgments. (line 52)
+* Malmberg, John <1>: Bugs. (line 72)
* Malmberg, John: Acknowledgments. (line 60)
* mark parity: Ordinal Functions. (line 45)
* marked string extraction (internationalization): String Extraction.
(line 6)
* marked strings, extracting: String Extraction. (line 6)
* Marx, Groucho: Increment Ops. (line 60)
-* match() function: String Functions. (line 208)
+* match() function: String Functions. (line 203)
* match() function, RSTART/RLENGTH variables: String Functions.
- (line 225)
+ (line 220)
* matching, expressions, See comparison expressions: Typing and Comparison.
(line 9)
* matching, leftmost longest: Multiple Line. (line 26)
* matching, null strings: Gory Details. (line 164)
* mawk program: Other Versions. (line 44)
-* McPhee, Patrick: Contributors. (line 101)
+* McPhee, Patrick: Contributors. (line 100)
* message object files: Explaining gettext. (line 41)
* message object files, converting from portable object files: I18N Example.
(line 62)
@@ -31216,7 +31472,7 @@ Index
* operators, input/output <1>: Precedence. (line 65)
* operators, input/output <2>: Redirection. (line 22)
* operators, input/output <3>: Getline/Coprocess. (line 6)
-* operators, input/output <4>: Getline/Pipe. (line 10)
+* operators, input/output <4>: Getline/Pipe. (line 9)
* operators, input/output: Getline/File. (line 6)
* operators, logical, See Boolean expressions: Boolean Ops. (line 6)
* operators, precedence <1>: Precedence. (line 6)
@@ -31224,7 +31480,7 @@ Index
* operators, relational, See operators, comparison: Typing and Comparison.
(line 9)
* operators, short-circuit: Boolean Ops. (line 57)
-* operators, string: Concatenation. (line 9)
+* operators, string: Concatenation. (line 8)
* operators, string-matching: Regexp Usage. (line 19)
* operators, string-matching, for buffers: GNU Regexp Operators.
(line 48)
@@ -31248,7 +31504,7 @@ Index
* ord extension function: Extension Sample Ord.
(line 12)
* ord() user-defined function: Ordinal Functions. (line 16)
-* order of evaluation, concatenation: Concatenation. (line 42)
+* order of evaluation, concatenation: Concatenation. (line 41)
* ORS variable <1>: User-modified. (line 129)
* ORS variable: Output Separators. (line 20)
* output field separator, See OFS variable: Changing Fields. (line 64)
@@ -31271,7 +31527,7 @@ Index
* parentheses () <1>: Profiling. (line 138)
* parentheses (): Regexp Operators. (line 79)
* password file: Passwd Functions. (line 16)
-* patsplit() function (gawk): String Functions. (line 295)
+* patsplit() function (gawk): String Functions. (line 290)
* patterns: Patterns and Actions.
(line 6)
* patterns, comparison expressions as: Expression Patterns. (line 14)
@@ -31284,7 +31540,7 @@ Index
* patterns, types of: Pattern Overview. (line 15)
* pawk (profiling version of Brian Kernighan's awk): Other Versions.
(line 78)
-* pawk, awk-like facilities for Python: Other Versions. (line 118)
+* pawk, awk-like facilities for Python: Other Versions. (line 124)
* PC operating systems, gawk on: PC Using. (line 6)
* PC operating systems, gawk on, installing: PC Installation. (line 6)
* percent sign (%), % operator: Precedence. (line 55)
@@ -31292,11 +31548,11 @@ Index
* percent sign (%), %= operator: Assignment Ops. (line 129)
* period (.): Regexp Operators. (line 43)
* Perl: Future Extensions. (line 6)
-* Peters, Arno: Contributors. (line 86)
-* Peterson, Hal: Contributors. (line 40)
+* Peters, Arno: Contributors. (line 85)
+* Peterson, Hal: Contributors. (line 39)
* pipes, closing: Close Files And Pipes.
(line 6)
-* pipes, input: Getline/Pipe. (line 10)
+* pipes, input: Getline/Pipe. (line 9)
* pipes, output: Redirection. (line 57)
* Pitts, Dave <1>: Bugs. (line 73)
* Pitts, Dave: Acknowledgments. (line 60)
@@ -31324,7 +31580,7 @@ Index
* portability, gawk: New Ports. (line 6)
* portability, gettext library and: Explaining gettext. (line 10)
* portability, internationalization and: I18N Portability. (line 6)
-* portability, length() function: String Functions. (line 177)
+* portability, length() function: String Functions. (line 172)
* portability, new awk vs. old awk: Conversion. (line 55)
* portability, next statement in user-defined functions: Pass By Value/Reference.
(line 91)
@@ -31332,7 +31588,7 @@ Index
* portability, operators: Increment Ops. (line 60)
* portability, operators, not in POSIX awk: Precedence. (line 98)
* portability, POSIXLY_CORRECT environment variable: Options. (line 353)
-* portability, substr() function: String Functions. (line 514)
+* portability, substr() function: String Functions. (line 509)
* portable object files <1>: Translator i18n. (line 6)
* portable object files: Explaining gettext. (line 36)
* portable object files, converting to message object files: I18N Example.
@@ -31369,7 +31625,7 @@ Index
* POSIX awk, FS variable and: User-modified. (line 66)
* POSIX awk, function keyword in: Definition Syntax. (line 83)
* POSIX awk, functions and, gsub()/sub(): Gory Details. (line 54)
-* POSIX awk, functions and, length(): String Functions. (line 177)
+* POSIX awk, functions and, length(): String Functions. (line 172)
* POSIX awk, GNU long options and: Options. (line 15)
* POSIX awk, interval expressions in: Regexp Operators. (line 135)
* POSIX awk, next/nextfile statements and: Next Statement. (line 45)
@@ -31380,7 +31636,7 @@ Index
* POSIX awk, printf format strings and: Format Modifiers. (line 159)
* POSIX awk, regular expressions and: Regexp Operators. (line 161)
* POSIX awk, timestamps and: Time Functions. (line 6)
-* POSIX awk, | I/O operator and: Getline/Pipe. (line 56)
+* POSIX awk, | I/O operator and: Getline/Pipe. (line 55)
* POSIX mode: Options. (line 247)
* POSIX, awk and: Preface. (line 23)
* POSIX, gawk extensions not included in: POSIX/GNU. (line 6)
@@ -31463,12 +31719,12 @@ Index
* pwcat program: Passwd Functions. (line 23)
* q debugger command (alias for quit): Miscellaneous Debugger Commands.
(line 99)
-* QSE Awk: Other Versions. (line 124)
+* QSE Awk: Other Versions. (line 130)
* question mark (?) regexp operator <1>: GNU Regexp Operators.
(line 59)
* question mark (?) regexp operator: Regexp Operators. (line 111)
* question mark (?), ?: operator: Precedence. (line 92)
-* QuikTrim Awk: Other Versions. (line 128)
+* QuikTrim Awk: Other Versions. (line 134)
* quit debugger command: Miscellaneous Debugger Commands.
(line 99)
* QUIT signal (MS-Windows): Profiling. (line 207)
@@ -31490,7 +31746,7 @@ Index
* range expressions (regexps): Bracket Expressions. (line 6)
* range patterns: Ranges. (line 6)
* Rankin, Pat <1>: Bugs. (line 72)
-* Rankin, Pat <2>: Contributors. (line 38)
+* Rankin, Pat <2>: Contributors. (line 37)
* Rankin, Pat <3>: Assignment Ops. (line 100)
* Rankin, Pat: Acknowledgments. (line 60)
* reada extension function: Extension Sample Read write array.
@@ -31501,6 +31757,7 @@ Index
(line 9)
* readfile extension function: Extension Sample Readfile.
(line 11)
+* readfile() user-defined function: Readfile Function. (line 30)
* recipe for a programming language: History. (line 6)
* record separators <1>: User-modified. (line 143)
* record separators: Records. (line 14)
@@ -31518,7 +31775,7 @@ Index
* redirection of input: Getline/File. (line 6)
* redirection of output: Redirection. (line 6)
* reference counting, sorting arrays: Array Sorting Functions.
- (line 75)
+ (line 77)
* regexp constants <1>: Comparison Operators.
(line 103)
* regexp constants <2>: Regexp Constants. (line 6)
@@ -31531,7 +31788,7 @@ Index
* regexp constants, vs. string constants: Computed Regexps. (line 38)
* regexp, See regular expressions: Regexp. (line 6)
* regular expressions: Regexp. (line 6)
-* regular expressions as field separators: Field Separators. (line 50)
+* regular expressions as field separators: Field Separators. (line 51)
* regular expressions, anchors in: Regexp Operators. (line 22)
* regular expressions, as field separators: Regexp Field Splitting.
(line 6)
@@ -31587,22 +31844,22 @@ Index
* right shift, bitwise: Bitwise Functions. (line 32)
* Ritchie, Dennis: Basic Data Typing. (line 55)
* RLENGTH variable: Auto-set. (line 262)
-* RLENGTH variable, match() function and: String Functions. (line 225)
+* RLENGTH variable, match() function and: String Functions. (line 220)
* Robbins, Arnold <1>: Future Extensions. (line 6)
* Robbins, Arnold <2>: Bugs. (line 32)
-* Robbins, Arnold <3>: Contributors. (line 125)
+* Robbins, Arnold <3>: Contributors. (line 130)
* Robbins, Arnold <4>: Alarm Program. (line 6)
* Robbins, Arnold <5>: Passwd Functions. (line 90)
-* Robbins, Arnold <6>: Getline/Pipe. (line 40)
+* Robbins, Arnold <6>: Getline/Pipe. (line 39)
* Robbins, Arnold: Command Line Field Separator.
(line 80)
-* Robbins, Bill: Getline/Pipe. (line 40)
+* Robbins, Bill: Getline/Pipe. (line 39)
* Robbins, Harry: Acknowledgments. (line 78)
* Robbins, Jean: Acknowledgments. (line 78)
* Robbins, Miriam <1>: Passwd Functions. (line 90)
-* Robbins, Miriam <2>: Getline/Pipe. (line 40)
+* Robbins, Miriam <2>: Getline/Pipe. (line 39)
* Robbins, Miriam: Acknowledgments. (line 78)
-* Rommel, Kai Uwe: Contributors. (line 43)
+* Rommel, Kai Uwe: Contributors. (line 42)
* round() user-defined function: Round Function. (line 16)
* rounding mode, floating-point: Rounding Mode. (line 6)
* rounding numbers: Round Function. (line 6)
@@ -31614,13 +31871,13 @@ Index
* RS variable, multiline records and: Multiple Line. (line 17)
* rshift() function (gawk): Bitwise Functions. (line 52)
* RSTART variable: Auto-set. (line 268)
-* RSTART variable, match() function and: String Functions. (line 225)
+* RSTART variable, match() function and: String Functions. (line 220)
* RT variable <1>: Auto-set. (line 275)
* RT variable <2>: Getline/Variable/File.
(line 10)
* RT variable <3>: Multiple Line. (line 129)
* RT variable: Records. (line 117)
-* Rubin, Paul <1>: Contributors. (line 16)
+* Rubin, Paul <1>: Contributors. (line 15)
* Rubin, Paul: History. (line 30)
* rule, definition of: Getting Started. (line 21)
* run debugger command: Debugger Execution Control.
@@ -31630,21 +31887,21 @@ Index
(line 68)
* sandbox mode: Options. (line 279)
* scalar values: Basic Data Typing. (line 13)
-* Schorr, Andrew <1>: Contributors. (line 121)
+* Schorr, Andrew <1>: Contributors. (line 126)
* Schorr, Andrew: Acknowledgments. (line 60)
* Schreiber, Bert: Acknowledgments. (line 38)
* Schreiber, Rita: Acknowledgments. (line 38)
-* search paths <1>: VMS Running. (line 29)
+* search paths <1>: VMS Running. (line 58)
* search paths <2>: PC Using. (line 11)
* search paths <3>: Igawk Program. (line 368)
* search paths <4>: AWKLIBPATH Variable. (line 6)
* search paths: AWKPATH Variable. (line 6)
* search paths, for shared libraries: AWKLIBPATH Variable. (line 6)
-* search paths, for source files <1>: VMS Running. (line 29)
+* search paths, for source files <1>: VMS Running. (line 58)
* search paths, for source files <2>: PC Using. (line 11)
* search paths, for source files <3>: Igawk Program. (line 368)
* search paths, for source files: AWKPATH Variable. (line 6)
-* searching: String Functions. (line 155)
+* searching: String Functions. (line 150)
* searching, files for regular expressions: Egrep Program. (line 6)
* searching, for words: Dupword Program. (line 6)
* sed utility <1>: Glossary. (line 12)
@@ -31680,7 +31937,7 @@ Index
* si debugger command (alias for stepi): Debugger Execution Control.
(line 76)
* side effects <1>: Increment Ops. (line 11)
-* side effects: Concatenation. (line 42)
+* side effects: Concatenation. (line 41)
* side effects, array indexing: Reference to Elements.
(line 42)
* side effects, asort() function: Array Sorting Functions.
@@ -31756,22 +32013,23 @@ Index
* source code, Brian Kernighan's awk: Other Versions. (line 13)
* source code, Busybox Awk: Other Versions. (line 88)
* source code, gawk: Gawk Distribution. (line 6)
-* source code, jawk: Other Versions. (line 106)
-* source code, libmawk: Other Versions. (line 114)
+* source code, Illumos awk: Other Versions. (line 104)
+* source code, jawk: Other Versions. (line 112)
+* source code, libmawk: Other Versions. (line 120)
* source code, mawk: Other Versions. (line 44)
* source code, mixing: Options. (line 131)
* source code, pawk: Other Versions. (line 78)
-* source code, QSE Awk: Other Versions. (line 124)
-* source code, QuikTrim Awk: Other Versions. (line 128)
+* source code, QSE Awk: Other Versions. (line 130)
+* source code, QuikTrim Awk: Other Versions. (line 134)
* source code, Solaris awk: Other Versions. (line 96)
* source files, search path for: Igawk Program. (line 368)
-* sparse arrays: Array Intro. (line 71)
+* sparse arrays: Array Intro. (line 70)
* Spencer, Henry: Glossary. (line 12)
* split utility: Split Program. (line 6)
-* split() function: String Functions. (line 317)
+* split() function: String Functions. (line 312)
* split() function, array elements, deleting: Delete. (line 61)
* split.awk program: Split Program. (line 30)
-* sprintf() function <1>: String Functions. (line 382)
+* sprintf() function <1>: String Functions. (line 377)
* sprintf() function: OFMT. (line 15)
* sprintf() function, OFMT variable and: User-modified. (line 124)
* sprintf() function, print/printf statements and: Round Function.
@@ -31780,7 +32038,7 @@ Index
* square brackets ([]): Regexp Operators. (line 55)
* srand() function: Numeric Functions. (line 82)
* Stallman, Richard <1>: Glossary. (line 305)
-* Stallman, Richard <2>: Contributors. (line 24)
+* Stallman, Richard <2>: Contributors. (line 23)
* Stallman, Richard <3>: Acknowledgments. (line 18)
* Stallman, Richard: Manual History. (line 6)
* standard error: Special FD. (line 6)
@@ -31804,7 +32062,7 @@ Index
* string constants, vs. regexp constants: Computed Regexps. (line 38)
* string extraction (internationalization): String Extraction.
(line 6)
-* string operators: Concatenation. (line 9)
+* string operators: Concatenation. (line 8)
* string-matching operators: Regexp Usage. (line 19)
* strings, converting <1>: Bitwise Functions. (line 109)
* strings, converting: Conversion. (line 6)
@@ -31817,27 +32075,26 @@ Index
* strings, null: Regexp Field Splitting.
(line 43)
* strings, numeric: Variable Typing. (line 6)
-* strings, splitting: String Functions. (line 337)
-* strtonum() function (gawk): String Functions. (line 389)
+* strings, splitting: String Functions. (line 332)
+* strtonum() function (gawk): String Functions. (line 384)
* strtonum() function (gawk), --non-decimal-data option and: Nondecimal Data.
(line 36)
-* sub() function <1>: String Functions. (line 410)
+* sub() function <1>: String Functions. (line 405)
* sub() function: Using Constant Regexps.
(line 43)
-* sub() function, arguments of: String Functions. (line 464)
+* sub() function, arguments of: String Functions. (line 459)
* sub() function, escape processing: Gory Details. (line 6)
* subscript separators: User-modified. (line 156)
-* subscripts in arrays, multidimensional: Multi-dimensional. (line 10)
-* subscripts in arrays, multidimensional, scanning: Multi-scanning.
+* subscripts in arrays, multidimensional: Multidimensional. (line 10)
+* subscripts in arrays, multidimensional, scanning: Multiscanning.
(line 11)
* subscripts in arrays, numbers as: Numeric Array Subscripts.
(line 6)
* subscripts in arrays, uninitialized variables as: Uninitialized Subscripts.
(line 6)
* SUBSEP variable: User-modified. (line 156)
-* SUBSEP variable, multidimensional arrays: Multi-dimensional.
- (line 16)
-* substr() function: String Functions. (line 483)
+* SUBSEP variable, multidimensional arrays: Multidimensional. (line 16)
+* substr() function: String Functions. (line 478)
* Sumner, Andrew: Other Versions. (line 64)
* switch statement: Switch Statement. (line 6)
* SYMTAB array: Auto-set. (line 283)
@@ -31858,7 +32115,7 @@ Index
(line 6)
* Texinfo <1>: Adding Code. (line 99)
* Texinfo <2>: Distribution contents.
- (line 80)
+ (line 77)
* Texinfo <3>: Extract Program. (line 12)
* Texinfo <4>: Dupword Program. (line 17)
* Texinfo <5>: Library Functions. (line 33)
@@ -31892,8 +32149,8 @@ Index
* timestamps, converting dates to: Time Functions. (line 75)
* timestamps, formatted: Getlocaltime Function.
(line 6)
-* tolower() function: String Functions. (line 525)
-* toupper() function: String Functions. (line 531)
+* tolower() function: String Functions. (line 520)
+* toupper() function: String Functions. (line 526)
* tr utility: Translate Program. (line 6)
* trace debugger command: Miscellaneous Debugger Commands.
(line 108)
@@ -31901,7 +32158,7 @@ Index
* troubleshooting, --non-decimal-data option: Options. (line 207)
* troubleshooting, == operator: Comparison Operators.
(line 37)
-* troubleshooting, awk uses FS not IFS: Field Separators. (line 29)
+* troubleshooting, awk uses FS not IFS: Field Separators. (line 30)
* troubleshooting, backslash before nonspecial character: Escape Sequences.
(line 112)
* troubleshooting, division: Arithmetic Ops. (line 44)
@@ -31916,9 +32173,9 @@ Index
* troubleshooting, gawk, fatal errors, function arguments: Calling Built-in.
(line 16)
* troubleshooting, getline function: File Checking. (line 25)
-* troubleshooting, gsub()/sub() functions: String Functions. (line 474)
-* troubleshooting, match() function: String Functions. (line 290)
-* troubleshooting, patsplit() function: String Functions. (line 313)
+* troubleshooting, gsub()/sub() functions: String Functions. (line 469)
+* troubleshooting, match() function: String Functions. (line 285)
+* troubleshooting, patsplit() function: String Functions. (line 308)
* troubleshooting, print statement, omitting commas: Print Examples.
(line 31)
* troubleshooting, printing: Redirection. (line 118)
@@ -31926,13 +32183,13 @@ Index
* troubleshooting, readable data files: File Checking. (line 6)
* troubleshooting, regexp constants vs. string constants: Computed Regexps.
(line 38)
-* troubleshooting, string concatenation: Concatenation. (line 27)
-* troubleshooting, substr() function: String Functions. (line 501)
+* troubleshooting, string concatenation: Concatenation. (line 26)
+* troubleshooting, substr() function: String Functions. (line 496)
* troubleshooting, system() function: I/O Functions. (line 94)
* troubleshooting, typographical errors, global variables: Options.
(line 112)
* true, logical: Truth Values. (line 6)
-* Trueman, David <1>: Contributors. (line 31)
+* Trueman, David <1>: Contributors. (line 30)
* Trueman, David <2>: Acknowledgments. (line 47)
* Trueman, David: History. (line 30)
* trunc-mod operation: Arithmetic Ops. (line 66)
@@ -32012,7 +32269,7 @@ Index
* variables, user-defined: Variables. (line 6)
* vertical bar (|): Regexp Operators. (line 69)
* vertical bar (|), | operator (I/O) <1>: Precedence. (line 65)
-* vertical bar (|), | operator (I/O): Getline/Pipe. (line 10)
+* vertical bar (|), | operator (I/O): Getline/Pipe. (line 9)
* vertical bar (|), |& operator (I/O) <1>: Two-way I/O. (line 44)
* vertical bar (|), |& operator (I/O) <2>: Precedence. (line 65)
* vertical bar (|), |& operator (I/O): Getline/Coprocess. (line 6)
@@ -32035,7 +32292,7 @@ Index
(line 67)
* wc utility: Wc Program. (line 6)
* wc.awk program: Wc Program. (line 46)
-* Weinberger, Peter <1>: Contributors. (line 12)
+* Weinberger, Peter <1>: Contributors. (line 11)
* Weinberger, Peter: History. (line 17)
* while statement <1>: While Statement. (line 6)
* while statement: Regexp Usage. (line 19)
@@ -32043,9 +32300,9 @@ Index
(line 6)
* whitespace, functions, calling: Calling Built-in. (line 10)
* whitespace, newlines as: Options. (line 253)
-* Williams, Kent: Contributors. (line 35)
-* Woehlke, Matthew: Contributors. (line 80)
-* Woods, John: Contributors. (line 28)
+* Williams, Kent: Contributors. (line 34)
+* Woehlke, Matthew: Contributors. (line 79)
+* Woods, John: Contributors. (line 27)
* word boundaries, matching: GNU Regexp Operators.
(line 38)
* word, regexp definition of: GNU Regexp Operators.
@@ -32061,20 +32318,20 @@ Index
* xgettext utility: String Extraction. (line 13)
* XOR bitwise operation: Bitwise Functions. (line 6)
* xor() function (gawk): Bitwise Functions. (line 55)
-* Yawitz, Efraim: Contributors. (line 119)
+* Yawitz, Efraim: Contributors. (line 124)
* Zaretskii, Eli <1>: Bugs. (line 70)
-* Zaretskii, Eli <2>: Contributors. (line 56)
+* Zaretskii, Eli <2>: Contributors. (line 55)
* Zaretskii, Eli: Acknowledgments. (line 60)
* zero, negative vs. positive: Unexpected Results. (line 34)
* zerofile.awk program: Empty Files. (line 21)
-* Zoulas, Christos: Contributors. (line 67)
+* Zoulas, Christos: Contributors. (line 66)
* {} (braces): Profiling. (line 134)
* {} (braces), actions and: Action Overview. (line 19)
* {} (braces), statements, grouping: Statements. (line 10)
* | (vertical bar): Regexp Operators. (line 69)
* | (vertical bar), | operator (I/O) <1>: Precedence. (line 65)
* | (vertical bar), | operator (I/O) <2>: Redirection. (line 57)
-* | (vertical bar), | operator (I/O): Getline/Pipe. (line 10)
+* | (vertical bar), | operator (I/O): Getline/Pipe. (line 9)
* | (vertical bar), |& operator (I/O) <1>: Two-way I/O. (line 44)
* | (vertical bar), |& operator (I/O) <2>: Precedence. (line 65)
* | (vertical bar), |& operator (I/O) <3>: Redirection. (line 102)
@@ -32095,521 +32352,525 @@ Index

Tag Table:
-Node: Top1360
-Node: Foreword40338
-Node: Preface44683
-Ref: Preface-Footnote-147736
-Ref: Preface-Footnote-247832
-Node: History48064
-Node: Names50438
-Ref: Names-Footnote-151915
-Node: This Manual51987
-Ref: This Manual-Footnote-157761
-Node: Conventions57861
-Node: Manual History60013
-Ref: Manual History-Footnote-163461
-Ref: Manual History-Footnote-263502
-Node: How To Contribute63576
-Node: Acknowledgments64720
-Node: Getting Started68929
-Node: Running gawk71308
-Node: One-shot72494
-Node: Read Terminal73719
-Ref: Read Terminal-Footnote-175369
-Ref: Read Terminal-Footnote-275645
-Node: Long75816
-Node: Executable Scripts77192
-Ref: Executable Scripts-Footnote-179025
-Ref: Executable Scripts-Footnote-279127
-Node: Comments79674
-Node: Quoting82141
-Node: DOS Quoting86764
-Node: Sample Data Files87439
-Node: Very Simple90471
-Node: Two Rules95070
-Node: More Complex97217
-Ref: More Complex-Footnote-1100147
-Node: Statements/Lines100232
-Ref: Statements/Lines-Footnote-1104694
-Node: Other Features104959
-Node: When105887
-Node: Invoking Gawk108034
-Node: Command Line109495
-Node: Options110278
-Ref: Options-Footnote-1125670
-Node: Other Arguments125695
-Node: Naming Standard Input128353
-Node: Environment Variables129447
-Node: AWKPATH Variable130005
-Ref: AWKPATH Variable-Footnote-1132763
-Node: AWKLIBPATH Variable133023
-Node: Other Environment Variables133741
-Node: Exit Status136236
-Node: Include Files136911
-Node: Loading Shared Libraries140480
-Node: Obsolete141844
-Node: Undocumented142541
-Node: Regexp142784
-Node: Regexp Usage144173
-Node: Escape Sequences146199
-Node: Regexp Operators151868
-Ref: Regexp Operators-Footnote-1159248
-Ref: Regexp Operators-Footnote-2159395
-Node: Bracket Expressions159493
-Ref: table-char-classes161383
-Node: GNU Regexp Operators163906
-Node: Case-sensitivity167629
-Ref: Case-sensitivity-Footnote-1170597
-Ref: Case-sensitivity-Footnote-2170832
-Node: Leftmost Longest170940
-Node: Computed Regexps172141
-Node: Reading Files175478
-Node: Records177481
-Ref: Records-Footnote-1186370
-Node: Fields186407
-Ref: Fields-Footnote-1189440
-Node: Nonconstant Fields189526
-Node: Changing Fields191728
-Node: Field Separators197687
-Node: Default Field Splitting200316
-Node: Regexp Field Splitting201433
-Node: Single Character Fields204775
-Node: Command Line Field Separator205834
-Node: Field Splitting Summary209275
-Ref: Field Splitting Summary-Footnote-1212386
-Node: Constant Size212487
-Node: Splitting By Content217071
-Ref: Splitting By Content-Footnote-1220797
-Node: Multiple Line220837
-Ref: Multiple Line-Footnote-1226684
-Node: Getline226863
-Node: Plain Getline229079
-Node: Getline/Variable231174
-Node: Getline/File232321
-Node: Getline/Variable/File233662
-Ref: Getline/Variable/File-Footnote-1235261
-Node: Getline/Pipe235348
-Node: Getline/Variable/Pipe238048
-Node: Getline/Coprocess239155
-Node: Getline/Variable/Coprocess240407
-Node: Getline Notes241144
-Node: Getline Summary243931
-Ref: table-getline-variants244339
-Node: Read Timeout245251
-Ref: Read Timeout-Footnote-1248992
-Node: Command line directories249049
-Node: Printing249679
-Node: Print251310
-Node: Print Examples252647
-Node: Output Separators255431
-Node: OFMT257191
-Node: Printf258549
-Node: Basic Printf259455
-Node: Control Letters260994
-Node: Format Modifiers264806
-Node: Printf Examples270815
-Node: Redirection273530
-Node: Special Files280495
-Node: Special FD281028
-Ref: Special FD-Footnote-1284653
-Node: Special Network284727
-Node: Special Caveats285577
-Node: Close Files And Pipes286373
-Ref: Close Files And Pipes-Footnote-1293356
-Ref: Close Files And Pipes-Footnote-2293504
-Node: Expressions293654
-Node: Values294786
-Node: Constants295462
-Node: Scalar Constants296142
-Ref: Scalar Constants-Footnote-1297001
-Node: Nondecimal-numbers297183
-Node: Regexp Constants300183
-Node: Using Constant Regexps300658
-Node: Variables303713
-Node: Using Variables304368
-Node: Assignment Options306092
-Node: Conversion307964
-Ref: table-locale-affects313464
-Ref: Conversion-Footnote-1314088
-Node: All Operators314197
-Node: Arithmetic Ops314827
-Node: Concatenation317332
-Ref: Concatenation-Footnote-1320125
-Node: Assignment Ops320245
-Ref: table-assign-ops325233
-Node: Increment Ops326564
-Node: Truth Values and Conditions329999
-Node: Truth Values331082
-Node: Typing and Comparison332131
-Node: Variable Typing332920
-Ref: Variable Typing-Footnote-1336817
-Node: Comparison Operators336939
-Ref: table-relational-ops337349
-Node: POSIX String Comparison340898
-Ref: POSIX String Comparison-Footnote-1341854
-Node: Boolean Ops341992
-Ref: Boolean Ops-Footnote-1346070
-Node: Conditional Exp346161
-Node: Function Calls347893
-Node: Precedence351487
-Node: Locales355156
-Node: Patterns and Actions356245
-Node: Pattern Overview357299
-Node: Regexp Patterns358968
-Node: Expression Patterns359511
-Node: Ranges363196
-Node: BEGIN/END366162
-Node: Using BEGIN/END366924
-Ref: Using BEGIN/END-Footnote-1369655
-Node: I/O And BEGIN/END369761
-Node: BEGINFILE/ENDFILE372043
-Node: Empty374957
-Node: Using Shell Variables375273
-Node: Action Overview377558
-Node: Statements379915
-Node: If Statement381769
-Node: While Statement383268
-Node: Do Statement385312
-Node: For Statement386468
-Node: Switch Statement389620
-Node: Break Statement391717
-Node: Continue Statement393707
-Node: Next Statement395500
-Node: Nextfile Statement397890
-Node: Exit Statement400533
-Node: Built-in Variables402949
-Node: User-modified404044
-Ref: User-modified-Footnote-1412404
-Node: Auto-set412466
-Ref: Auto-set-Footnote-1425954
-Ref: Auto-set-Footnote-2426159
-Node: ARGC and ARGV426215
-Node: Arrays430066
-Node: Array Basics431571
-Node: Array Intro432397
-Node: Reference to Elements436715
-Node: Assigning Elements438985
-Node: Array Example439476
-Node: Scanning an Array441208
-Node: Controlling Scanning443522
-Ref: Controlling Scanning-Footnote-1448445
-Node: Delete448761
-Ref: Delete-Footnote-1451526
-Node: Numeric Array Subscripts451583
-Node: Uninitialized Subscripts453766
-Node: Multi-dimensional455394
-Node: Multi-scanning458488
-Node: Arrays of Arrays460079
-Node: Functions464720
-Node: Built-in465539
-Node: Calling Built-in466617
-Node: Numeric Functions468605
-Ref: Numeric Functions-Footnote-1472437
-Ref: Numeric Functions-Footnote-2472794
-Ref: Numeric Functions-Footnote-3472842
-Node: String Functions473111
-Ref: String Functions-Footnote-1496669
-Ref: String Functions-Footnote-2496798
-Ref: String Functions-Footnote-3497046
-Node: Gory Details497133
-Ref: table-sub-escapes498812
-Ref: table-sub-posix-92500166
-Ref: table-sub-proposed501517
-Ref: table-posix-sub502871
-Ref: table-gensub-escapes504416
-Ref: Gory Details-Footnote-1505592
-Ref: Gory Details-Footnote-2505643
-Node: I/O Functions505794
-Ref: I/O Functions-Footnote-1512779
-Node: Time Functions512926
-Ref: Time Functions-Footnote-1523859
-Ref: Time Functions-Footnote-2523927
-Ref: Time Functions-Footnote-3524085
-Ref: Time Functions-Footnote-4524196
-Ref: Time Functions-Footnote-5524308
-Ref: Time Functions-Footnote-6524535
-Node: Bitwise Functions524801
-Ref: table-bitwise-ops525359
-Ref: Bitwise Functions-Footnote-1529580
-Node: Type Functions529764
-Node: I18N Functions530915
-Node: User-defined532542
-Node: Definition Syntax533346
-Ref: Definition Syntax-Footnote-1538256
-Node: Function Example538325
-Node: Function Caveats540919
-Node: Calling A Function541340
-Node: Variable Scope542455
-Node: Pass By Value/Reference545418
-Node: Return Statement548926
-Node: Dynamic Typing551907
-Node: Indirect Calls552838
-Node: Library Functions562523
-Ref: Library Functions-Footnote-1566036
-Ref: Library Functions-Footnote-2566179
-Node: Library Names566350
-Ref: Library Names-Footnote-1569821
-Ref: Library Names-Footnote-2570041
-Node: General Functions570127
-Node: Strtonum Function571080
-Node: Assert Function574010
-Node: Round Function577336
-Node: Cliff Random Function578879
-Node: Ordinal Functions579895
-Ref: Ordinal Functions-Footnote-1582965
-Ref: Ordinal Functions-Footnote-2583217
-Node: Join Function583426
-Ref: Join Function-Footnote-1585197
-Node: Getlocaltime Function585397
-Node: Data File Management589112
-Node: Filetrans Function589744
-Node: Rewind Function593813
-Node: File Checking595200
-Node: Empty Files596294
-Node: Ignoring Assigns598524
-Node: Getopt Function600077
-Ref: Getopt Function-Footnote-1611381
-Node: Passwd Functions611584
-Ref: Passwd Functions-Footnote-1620559
-Node: Group Functions620647
-Node: Walking Arrays628731
-Node: Sample Programs630868
-Node: Running Examples631542
-Node: Clones632270
-Node: Cut Program633494
-Node: Egrep Program643339
-Ref: Egrep Program-Footnote-1651112
-Node: Id Program651222
-Node: Split Program654838
-Ref: Split Program-Footnote-1658357
-Node: Tee Program658485
-Node: Uniq Program661288
-Node: Wc Program668717
-Ref: Wc Program-Footnote-1672983
-Ref: Wc Program-Footnote-2673183
-Node: Miscellaneous Programs673275
-Node: Dupword Program674463
-Node: Alarm Program676494
-Node: Translate Program681243
-Ref: Translate Program-Footnote-1685630
-Ref: Translate Program-Footnote-2685858
-Node: Labels Program685992
-Ref: Labels Program-Footnote-1689363
-Node: Word Sorting689447
-Node: History Sorting693331
-Node: Extract Program695170
-Ref: Extract Program-Footnote-1702671
-Node: Simple Sed702799
-Node: Igawk Program705861
-Ref: Igawk Program-Footnote-1721018
-Ref: Igawk Program-Footnote-2721219
-Node: Anagram Program721357
-Node: Signature Program724425
-Node: Advanced Features725525
-Node: Nondecimal Data727407
-Node: Array Sorting728990
-Node: Controlling Array Traversal729687
-Node: Array Sorting Functions737925
-Ref: Array Sorting Functions-Footnote-1741599
-Ref: Array Sorting Functions-Footnote-2741692
-Node: Two-way I/O741886
-Ref: Two-way I/O-Footnote-1747318
-Node: TCP/IP Networking747388
-Node: Profiling750232
-Node: Internationalization757729
-Node: I18N and L10N759154
-Node: Explaining gettext759840
-Ref: Explaining gettext-Footnote-1764908
-Ref: Explaining gettext-Footnote-2765092
-Node: Programmer i18n765257
-Node: Translator i18n769459
-Node: String Extraction770252
-Ref: String Extraction-Footnote-1771213
-Node: Printf Ordering771299
-Ref: Printf Ordering-Footnote-1774083
-Node: I18N Portability774147
-Ref: I18N Portability-Footnote-1776596
-Node: I18N Example776659
-Ref: I18N Example-Footnote-1779297
-Node: Gawk I18N779369
-Node: Debugger779990
-Node: Debugging780961
-Node: Debugging Concepts781394
-Node: Debugging Terms783250
-Node: Awk Debugging785847
-Node: Sample Debugging Session786739
-Node: Debugger Invocation787259
-Node: Finding The Bug788591
-Node: List of Debugger Commands795079
-Node: Breakpoint Control796413
-Node: Debugger Execution Control800077
-Node: Viewing And Changing Data803437
-Node: Execution Stack806793
-Node: Debugger Info808260
-Node: Miscellaneous Debugger Commands812242
-Node: Readline Support817418
-Node: Limitations818249
-Node: Arbitrary Precision Arithmetic820501
-Ref: Arbitrary Precision Arithmetic-Footnote-1822152
-Node: General Arithmetic822300
-Node: Floating Point Issues824020
-Node: String Conversion Precision824901
-Ref: String Conversion Precision-Footnote-1826607
-Node: Unexpected Results826716
-Node: POSIX Floating Point Problems828869
-Ref: POSIX Floating Point Problems-Footnote-1832694
-Node: Integer Programming832732
-Node: Floating-point Programming834471
-Ref: Floating-point Programming-Footnote-1840802
-Ref: Floating-point Programming-Footnote-2841072
-Node: Floating-point Representation841336
-Node: Floating-point Context842501
-Ref: table-ieee-formats843340
-Node: Rounding Mode844724
-Ref: table-rounding-modes845203
-Ref: Rounding Mode-Footnote-1848218
-Node: Gawk and MPFR848397
-Node: Arbitrary Precision Floats849652
-Ref: Arbitrary Precision Floats-Footnote-1852095
-Node: Setting Precision852411
-Ref: table-predefined-precision-strings853097
-Node: Setting Rounding Mode855242
-Ref: table-gawk-rounding-modes855646
-Node: Floating-point Constants856833
-Node: Changing Precision858262
-Ref: Changing Precision-Footnote-1859662
-Node: Exact Arithmetic859836
-Node: Arbitrary Precision Integers862974
-Ref: Arbitrary Precision Integers-Footnote-1865992
-Node: Dynamic Extensions866139
-Node: Extension Intro867597
-Node: Plugin License868862
-Node: Extension Mechanism Outline869547
-Ref: load-extension869964
-Ref: load-new-function871442
-Ref: call-new-function872437
-Node: Extension API Description874452
-Node: Extension API Functions Introduction875665
-Node: General Data Types880531
-Ref: General Data Types-Footnote-1886133
-Node: Requesting Values886432
-Ref: table-value-types-returned887163
-Node: Constructor Functions888117
-Node: Registration Functions891137
-Node: Extension Functions891822
-Node: Exit Callback Functions894047
-Node: Extension Version String895296
-Node: Input Parsers895946
-Node: Output Wrappers905703
-Node: Two-way processors910213
-Node: Printing Messages912421
-Ref: Printing Messages-Footnote-1913498
-Node: Updating `ERRNO'913650
-Node: Accessing Parameters914389
-Node: Symbol Table Access915619
-Node: Symbol table by name916131
-Node: Symbol table by cookie917878
-Ref: Symbol table by cookie-Footnote-1922008
-Node: Cached values922071
-Ref: Cached values-Footnote-1925520
-Node: Array Manipulation925611
-Ref: Array Manipulation-Footnote-1926709
-Node: Array Data Types926748
-Ref: Array Data Types-Footnote-1929451
-Node: Array Functions929543
-Node: Flattening Arrays933309
-Node: Creating Arrays940161
-Node: Extension API Variables944886
-Node: Extension Versioning945522
-Node: Extension API Informational Variables947423
-Node: Extension API Boilerplate948509
-Node: Finding Extensions952313
-Node: Extension Example952873
-Node: Internal File Description953604
-Node: Internal File Ops957695
-Ref: Internal File Ops-Footnote-1969203
-Node: Using Internal File Ops969343
-Ref: Using Internal File Ops-Footnote-1971696
-Node: Extension Samples971962
-Node: Extension Sample File Functions973486
-Node: Extension Sample Fnmatch981973
-Node: Extension Sample Fork983699
-Node: Extension Sample Inplace984917
-Node: Extension Sample Ord986695
-Node: Extension Sample Readdir987531
-Node: Extension Sample Revout989063
-Node: Extension Sample Rev2way989656
-Node: Extension Sample Read write array990346
-Node: Extension Sample Readfile992229
-Node: Extension Sample API Tests993047
-Node: Extension Sample Time993572
-Node: gawkextlib994936
-Node: Language History997696
-Node: V7/SVR3.1999218
-Node: SVR41001539
-Node: POSIX1002981
-Node: BTL1004367
-Node: POSIX/GNU1005101
-Node: Common Extensions1010636
-Node: Ranges and Locales1011942
-Ref: Ranges and Locales-Footnote-11016560
-Ref: Ranges and Locales-Footnote-21016587
-Ref: Ranges and Locales-Footnote-31016847
-Node: Contributors1017068
-Node: Installation1021947
-Node: Gawk Distribution1022841
-Node: Getting1023325
-Node: Extracting1024151
-Node: Distribution contents1025843
-Node: Unix Installation1031104
-Node: Quick Installation1031721
-Node: Additional Configuration Options1034165
-Node: Configuration Philosophy1035642
-Node: Non-Unix Installation1037996
-Node: PC Installation1038454
-Node: PC Binary Installation1039753
-Node: PC Compiling1041601
-Node: PC Testing1044545
-Node: PC Using1045721
-Node: Cygwin1049906
-Node: MSYS1050906
-Node: VMS Installation1051420
-Node: VMS Compilation1052023
-Ref: VMS Compilation-Footnote-11053030
-Node: VMS Installation Details1053088
-Node: VMS Running1054723
-Node: VMS Old Gawk1056330
-Node: Bugs1056804
-Node: Other Versions1060656
-Node: Notes1066257
-Node: Compatibility Mode1067057
-Node: Additions1067840
-Node: Accessing The Source1068767
-Node: Adding Code1070207
-Node: New Ports1076252
-Node: Derived Files1080387
-Ref: Derived Files-Footnote-11085708
-Ref: Derived Files-Footnote-21085742
-Ref: Derived Files-Footnote-31086342
-Node: Future Extensions1086440
-Node: Implementation Limitations1087021
-Node: Extension Design1088273
-Node: Old Extension Problems1089427
-Ref: Old Extension Problems-Footnote-11090935
-Node: Extension New Mechanism Goals1090992
-Ref: Extension New Mechanism Goals-Footnote-11094358
-Node: Extension Other Design Decisions1094544
-Node: Extension Future Growth1096650
-Node: Old Extension Mechanism1097486
-Node: Basic Concepts1099226
-Node: Basic High Level1099907
-Ref: figure-general-flow1100178
-Ref: figure-process-flow1100777
-Ref: Basic High Level-Footnote-11104006
-Node: Basic Data Typing1104191
-Node: Glossary1107546
-Node: Copying1133008
-Node: GNU Free Documentation License1170565
-Node: Index1195702
+Node: Top1366
+Node: Foreword40737
+Node: Preface45082
+Ref: Preface-Footnote-148135
+Ref: Preface-Footnote-248231
+Node: History48463
+Node: Names50837
+Ref: Names-Footnote-152314
+Node: This Manual52386
+Ref: This Manual-Footnote-158160
+Node: Conventions58260
+Node: Manual History60416
+Ref: Manual History-Footnote-163864
+Ref: Manual History-Footnote-263905
+Node: How To Contribute63979
+Node: Acknowledgments65123
+Node: Getting Started69332
+Node: Running gawk71711
+Node: One-shot72897
+Node: Read Terminal74122
+Ref: Read Terminal-Footnote-175772
+Ref: Read Terminal-Footnote-276048
+Node: Long76219
+Node: Executable Scripts77595
+Ref: Executable Scripts-Footnote-179428
+Ref: Executable Scripts-Footnote-279530
+Node: Comments80077
+Node: Quoting82544
+Node: DOS Quoting87167
+Node: Sample Data Files87842
+Node: Very Simple90886
+Node: Two Rules95485
+Node: More Complex97632
+Ref: More Complex-Footnote-1100562
+Node: Statements/Lines100647
+Ref: Statements/Lines-Footnote-1105109
+Node: Other Features105374
+Node: When106302
+Node: Invoking Gawk108449
+Node: Command Line109910
+Node: Options110693
+Ref: Options-Footnote-1126085
+Node: Other Arguments126110
+Node: Naming Standard Input128768
+Node: Environment Variables129862
+Node: AWKPATH Variable130420
+Ref: AWKPATH Variable-Footnote-1133178
+Node: AWKLIBPATH Variable133438
+Node: Other Environment Variables134156
+Node: Exit Status137119
+Node: Include Files137794
+Node: Loading Shared Libraries141363
+Node: Obsolete142727
+Node: Undocumented143424
+Node: Regexp143666
+Node: Regexp Usage145055
+Node: Escape Sequences147081
+Node: Regexp Operators152750
+Ref: Regexp Operators-Footnote-1160130
+Ref: Regexp Operators-Footnote-2160277
+Node: Bracket Expressions160375
+Ref: table-char-classes162265
+Node: GNU Regexp Operators164788
+Node: Case-sensitivity168511
+Ref: Case-sensitivity-Footnote-1171479
+Ref: Case-sensitivity-Footnote-2171714
+Node: Leftmost Longest171822
+Node: Computed Regexps173023
+Node: Reading Files176360
+Node: Records178362
+Ref: Records-Footnote-1187251
+Node: Fields187288
+Ref: Fields-Footnote-1190321
+Node: Nonconstant Fields190407
+Node: Changing Fields192609
+Node: Field Separators198568
+Node: Default Field Splitting201270
+Node: Regexp Field Splitting202387
+Node: Single Character Fields205729
+Node: Command Line Field Separator206788
+Node: Full Line Fields210222
+Ref: Full Line Fields-Footnote-1210730
+Node: Field Splitting Summary210776
+Ref: Field Splitting Summary-Footnote-1213875
+Node: Constant Size213976
+Node: Splitting By Content218560
+Ref: Splitting By Content-Footnote-1222286
+Node: Multiple Line222326
+Ref: Multiple Line-Footnote-1228173
+Node: Getline228352
+Node: Plain Getline230568
+Node: Getline/Variable232663
+Node: Getline/File233810
+Node: Getline/Variable/File235151
+Ref: Getline/Variable/File-Footnote-1236750
+Node: Getline/Pipe236837
+Node: Getline/Variable/Pipe239536
+Node: Getline/Coprocess240643
+Node: Getline/Variable/Coprocess241895
+Node: Getline Notes242632
+Node: Getline Summary245419
+Ref: table-getline-variants245827
+Node: Read Timeout246739
+Ref: Read Timeout-Footnote-1250480
+Node: Command line directories250537
+Node: Printing251167
+Node: Print252798
+Node: Print Examples254135
+Node: Output Separators256919
+Node: OFMT258679
+Node: Printf260037
+Node: Basic Printf260943
+Node: Control Letters262482
+Node: Format Modifiers266294
+Node: Printf Examples272303
+Node: Redirection275018
+Node: Special Files281983
+Node: Special FD282516
+Ref: Special FD-Footnote-1286141
+Node: Special Network286215
+Node: Special Caveats287065
+Node: Close Files And Pipes287861
+Ref: Close Files And Pipes-Footnote-1294844
+Ref: Close Files And Pipes-Footnote-2294992
+Node: Expressions295142
+Node: Values296274
+Node: Constants296950
+Node: Scalar Constants297630
+Ref: Scalar Constants-Footnote-1298489
+Node: Nondecimal-numbers298671
+Node: Regexp Constants301671
+Node: Using Constant Regexps302146
+Node: Variables305201
+Node: Using Variables305856
+Node: Assignment Options307580
+Node: Conversion309452
+Ref: table-locale-affects314953
+Ref: Conversion-Footnote-1315577
+Node: All Operators315686
+Node: Arithmetic Ops316316
+Node: Concatenation318821
+Ref: Concatenation-Footnote-1321613
+Node: Assignment Ops321733
+Ref: table-assign-ops326721
+Node: Increment Ops328052
+Node: Truth Values and Conditions331486
+Node: Truth Values332569
+Node: Typing and Comparison333618
+Node: Variable Typing334411
+Ref: Variable Typing-Footnote-1338308
+Node: Comparison Operators338430
+Ref: table-relational-ops338840
+Node: POSIX String Comparison342389
+Ref: POSIX String Comparison-Footnote-1343345
+Node: Boolean Ops343483
+Ref: Boolean Ops-Footnote-1347561
+Node: Conditional Exp347652
+Node: Function Calls349384
+Node: Precedence352978
+Node: Locales356647
+Node: Patterns and Actions357736
+Node: Pattern Overview358790
+Node: Regexp Patterns360459
+Node: Expression Patterns361002
+Node: Ranges364687
+Node: BEGIN/END367653
+Node: Using BEGIN/END368415
+Ref: Using BEGIN/END-Footnote-1371146
+Node: I/O And BEGIN/END371252
+Node: BEGINFILE/ENDFILE373534
+Node: Empty376448
+Node: Using Shell Variables376764
+Node: Action Overview379049
+Node: Statements381406
+Node: If Statement383260
+Node: While Statement384759
+Node: Do Statement386803
+Node: For Statement387959
+Node: Switch Statement391111
+Node: Break Statement393208
+Node: Continue Statement395198
+Node: Next Statement396991
+Node: Nextfile Statement399381
+Node: Exit Statement402024
+Node: Built-in Variables404440
+Node: User-modified405535
+Ref: User-modified-Footnote-1413893
+Node: Auto-set413955
+Ref: Auto-set-Footnote-1427425
+Ref: Auto-set-Footnote-2427630
+Node: ARGC and ARGV427686
+Node: Arrays431537
+Node: Array Basics433042
+Node: Array Intro433868
+Node: Reference to Elements438185
+Node: Assigning Elements440455
+Node: Array Example440946
+Node: Scanning an Array442678
+Node: Controlling Scanning444992
+Ref: Controlling Scanning-Footnote-1450079
+Node: Delete450395
+Ref: Delete-Footnote-1453160
+Node: Numeric Array Subscripts453217
+Node: Uninitialized Subscripts455400
+Node: Multidimensional457027
+Node: Multiscanning460120
+Node: Arrays of Arrays461709
+Node: Functions466349
+Node: Built-in467168
+Node: Calling Built-in468246
+Node: Numeric Functions470234
+Ref: Numeric Functions-Footnote-1474066
+Ref: Numeric Functions-Footnote-2474423
+Ref: Numeric Functions-Footnote-3474471
+Node: String Functions474740
+Ref: String Functions-Footnote-1497660
+Ref: String Functions-Footnote-2497789
+Ref: String Functions-Footnote-3498037
+Node: Gory Details498124
+Ref: table-sub-escapes499803
+Ref: table-sub-posix-92501157
+Ref: table-sub-proposed502508
+Ref: table-posix-sub503862
+Ref: table-gensub-escapes505407
+Ref: Gory Details-Footnote-1506583
+Ref: Gory Details-Footnote-2506634
+Node: I/O Functions506785
+Ref: I/O Functions-Footnote-1513770
+Node: Time Functions513917
+Ref: Time Functions-Footnote-1524850
+Ref: Time Functions-Footnote-2524918
+Ref: Time Functions-Footnote-3525076
+Ref: Time Functions-Footnote-4525187
+Ref: Time Functions-Footnote-5525299
+Ref: Time Functions-Footnote-6525526
+Node: Bitwise Functions525792
+Ref: table-bitwise-ops526354
+Ref: Bitwise Functions-Footnote-1530575
+Node: Type Functions530759
+Node: I18N Functions531910
+Node: User-defined533537
+Node: Definition Syntax534341
+Ref: Definition Syntax-Footnote-1539251
+Node: Function Example539320
+Node: Function Caveats541914
+Node: Calling A Function542335
+Node: Variable Scope543450
+Node: Pass By Value/Reference546413
+Node: Return Statement549921
+Node: Dynamic Typing552902
+Node: Indirect Calls553833
+Node: Library Functions563518
+Ref: Library Functions-Footnote-1567031
+Ref: Library Functions-Footnote-2567174
+Node: Library Names567345
+Ref: Library Names-Footnote-1570816
+Ref: Library Names-Footnote-2571036
+Node: General Functions571122
+Node: Strtonum Function572150
+Node: Assert Function575080
+Node: Round Function578406
+Node: Cliff Random Function579949
+Node: Ordinal Functions580965
+Ref: Ordinal Functions-Footnote-1584035
+Ref: Ordinal Functions-Footnote-2584287
+Node: Join Function584496
+Ref: Join Function-Footnote-1586267
+Node: Getlocaltime Function586467
+Node: Readfile Function590208
+Node: Data File Management592047
+Node: Filetrans Function592679
+Node: Rewind Function596748
+Node: File Checking598135
+Node: Empty Files599229
+Node: Ignoring Assigns601459
+Node: Getopt Function603012
+Ref: Getopt Function-Footnote-1614315
+Node: Passwd Functions614518
+Ref: Passwd Functions-Footnote-1623493
+Node: Group Functions623581
+Node: Walking Arrays631665
+Node: Sample Programs633802
+Node: Running Examples634476
+Node: Clones635204
+Node: Cut Program636428
+Node: Egrep Program646273
+Ref: Egrep Program-Footnote-1654046
+Node: Id Program654156
+Node: Split Program657772
+Ref: Split Program-Footnote-1661291
+Node: Tee Program661419
+Node: Uniq Program664222
+Node: Wc Program671651
+Ref: Wc Program-Footnote-1675917
+Ref: Wc Program-Footnote-2676117
+Node: Miscellaneous Programs676209
+Node: Dupword Program677397
+Node: Alarm Program679428
+Node: Translate Program684181
+Ref: Translate Program-Footnote-1688568
+Ref: Translate Program-Footnote-2688816
+Node: Labels Program688950
+Ref: Labels Program-Footnote-1692321
+Node: Word Sorting692405
+Node: History Sorting696289
+Node: Extract Program698128
+Ref: Extract Program-Footnote-1705631
+Node: Simple Sed705759
+Node: Igawk Program708821
+Ref: Igawk Program-Footnote-1723978
+Ref: Igawk Program-Footnote-2724179
+Node: Anagram Program724317
+Node: Signature Program727385
+Node: Advanced Features728485
+Node: Nondecimal Data730371
+Node: Array Sorting731954
+Node: Controlling Array Traversal732651
+Node: Array Sorting Functions740935
+Ref: Array Sorting Functions-Footnote-1744804
+Node: Two-way I/O744998
+Ref: Two-way I/O-Footnote-1750430
+Node: TCP/IP Networking750500
+Node: Profiling753344
+Node: Internationalization760841
+Node: I18N and L10N762266
+Node: Explaining gettext762952
+Ref: Explaining gettext-Footnote-1768020
+Ref: Explaining gettext-Footnote-2768204
+Node: Programmer i18n768369
+Node: Translator i18n772571
+Node: String Extraction773364
+Ref: String Extraction-Footnote-1774325
+Node: Printf Ordering774411
+Ref: Printf Ordering-Footnote-1777195
+Node: I18N Portability777259
+Ref: I18N Portability-Footnote-1779708
+Node: I18N Example779771
+Ref: I18N Example-Footnote-1782409
+Node: Gawk I18N782481
+Node: Debugger783102
+Node: Debugging784073
+Node: Debugging Concepts784506
+Node: Debugging Terms786362
+Node: Awk Debugging788959
+Node: Sample Debugging Session789851
+Node: Debugger Invocation790371
+Node: Finding The Bug791703
+Node: List of Debugger Commands798191
+Node: Breakpoint Control799525
+Node: Debugger Execution Control803189
+Node: Viewing And Changing Data806549
+Node: Execution Stack809905
+Node: Debugger Info811372
+Node: Miscellaneous Debugger Commands815354
+Node: Readline Support820530
+Node: Limitations821361
+Node: Arbitrary Precision Arithmetic823613
+Ref: Arbitrary Precision Arithmetic-Footnote-1825262
+Node: General Arithmetic825410
+Node: Floating Point Issues827130
+Node: String Conversion Precision828011
+Ref: String Conversion Precision-Footnote-1829716
+Node: Unexpected Results829825
+Node: POSIX Floating Point Problems831978
+Ref: POSIX Floating Point Problems-Footnote-1835803
+Node: Integer Programming835841
+Node: Floating-point Programming837580
+Ref: Floating-point Programming-Footnote-1843911
+Ref: Floating-point Programming-Footnote-2844181
+Node: Floating-point Representation844445
+Node: Floating-point Context845610
+Ref: table-ieee-formats846449
+Node: Rounding Mode847833
+Ref: table-rounding-modes848312
+Ref: Rounding Mode-Footnote-1851327
+Node: Gawk and MPFR851506
+Node: Arbitrary Precision Floats852761
+Ref: Arbitrary Precision Floats-Footnote-1855204
+Node: Setting Precision855520
+Ref: table-predefined-precision-strings856206
+Node: Setting Rounding Mode858351
+Ref: table-gawk-rounding-modes858755
+Node: Floating-point Constants859942
+Node: Changing Precision861371
+Ref: Changing Precision-Footnote-1862768
+Node: Exact Arithmetic862942
+Node: Arbitrary Precision Integers866080
+Ref: Arbitrary Precision Integers-Footnote-1869098
+Node: Dynamic Extensions869245
+Node: Extension Intro870703
+Node: Plugin License871968
+Node: Extension Mechanism Outline872653
+Ref: load-extension873070
+Ref: load-new-function874548
+Ref: call-new-function875543
+Node: Extension API Description877558
+Node: Extension API Functions Introduction878771
+Node: General Data Types883637
+Ref: General Data Types-Footnote-1889242
+Node: Requesting Values889541
+Ref: table-value-types-returned890272
+Node: Constructor Functions891226
+Node: Registration Functions894246
+Node: Extension Functions894931
+Node: Exit Callback Functions897156
+Node: Extension Version String898405
+Node: Input Parsers899055
+Node: Output Wrappers908812
+Node: Two-way processors913322
+Node: Printing Messages915530
+Ref: Printing Messages-Footnote-1916607
+Node: Updating `ERRNO'916759
+Node: Accessing Parameters917498
+Node: Symbol Table Access918728
+Node: Symbol table by name919240
+Node: Symbol table by cookie920987
+Ref: Symbol table by cookie-Footnote-1925117
+Node: Cached values925180
+Ref: Cached values-Footnote-1928629
+Node: Array Manipulation928720
+Ref: Array Manipulation-Footnote-1929818
+Node: Array Data Types929857
+Ref: Array Data Types-Footnote-1932560
+Node: Array Functions932652
+Node: Flattening Arrays936418
+Node: Creating Arrays943270
+Node: Extension API Variables947995
+Node: Extension Versioning948631
+Node: Extension API Informational Variables950532
+Node: Extension API Boilerplate951618
+Node: Finding Extensions955422
+Node: Extension Example955982
+Node: Internal File Description956712
+Node: Internal File Ops960803
+Ref: Internal File Ops-Footnote-1972311
+Node: Using Internal File Ops972451
+Ref: Using Internal File Ops-Footnote-1974804
+Node: Extension Samples975070
+Node: Extension Sample File Functions976594
+Node: Extension Sample Fnmatch985079
+Node: Extension Sample Fork986805
+Node: Extension Sample Inplace988023
+Node: Extension Sample Ord989801
+Node: Extension Sample Readdir990637
+Node: Extension Sample Revout992169
+Node: Extension Sample Rev2way992762
+Node: Extension Sample Read write array993452
+Node: Extension Sample Readfile995335
+Node: Extension Sample API Tests996153
+Node: Extension Sample Time996678
+Node: gawkextlib998042
+Node: Language History1000823
+Node: V7/SVR3.11002345
+Node: SVR41004665
+Node: POSIX1006107
+Node: BTL1007493
+Node: POSIX/GNU1008227
+Node: Common Extensions1013828
+Node: Ranges and Locales1015134
+Ref: Ranges and Locales-Footnote-11019752
+Ref: Ranges and Locales-Footnote-21019779
+Ref: Ranges and Locales-Footnote-31020039
+Node: Contributors1020260
+Node: Installation1025335
+Node: Gawk Distribution1026229
+Node: Getting1026713
+Node: Extracting1027539
+Node: Distribution contents1029231
+Node: Unix Installation1034936
+Node: Quick Installation1035553
+Node: Additional Configuration Options1037997
+Node: Configuration Philosophy1039733
+Node: Non-Unix Installation1042087
+Node: PC Installation1042545
+Node: PC Binary Installation1043844
+Node: PC Compiling1045692
+Node: PC Testing1048636
+Node: PC Using1049812
+Node: Cygwin1053997
+Node: MSYS1054997
+Node: VMS Installation1055511
+Node: VMS Compilation1056275
+Ref: VMS Compilation-Footnote-11057890
+Node: VMS Dynamic Extensions1057948
+Node: VMS Installation Details1059321
+Node: VMS Running1061155
+Node: VMS GNV1063989
+Node: VMS Old Gawk1064698
+Node: Bugs1065168
+Node: Other Versions1069088
+Node: Notes1075172
+Node: Compatibility Mode1075972
+Node: Additions1076755
+Node: Accessing The Source1077682
+Node: Adding Code1079122
+Node: New Ports1085167
+Node: Derived Files1089302
+Ref: Derived Files-Footnote-11094623
+Ref: Derived Files-Footnote-21094657
+Ref: Derived Files-Footnote-31095257
+Node: Future Extensions1095355
+Node: Implementation Limitations1095938
+Node: Extension Design1097190
+Node: Old Extension Problems1098344
+Ref: Old Extension Problems-Footnote-11099852
+Node: Extension New Mechanism Goals1099909
+Ref: Extension New Mechanism Goals-Footnote-11103274
+Node: Extension Other Design Decisions1103460
+Node: Extension Future Growth1105566
+Node: Old Extension Mechanism1106402
+Node: Basic Concepts1108142
+Node: Basic High Level1108823
+Ref: figure-general-flow1109094
+Ref: figure-process-flow1109693
+Ref: Basic High Level-Footnote-11112922
+Node: Basic Data Typing1113107
+Node: Glossary1116462
+Node: Copying1141924
+Node: GNU Free Documentation License1179481
+Node: Index1204618

End Tag Table