aboutsummaryrefslogtreecommitdiffstats
path: root/doc/gawk.info
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2014-09-21 22:33:23 +0300
committerArnold D. Robbins <arnold@skeeve.com>2014-09-21 22:33:23 +0300
commitce2747c81b98b70e75ec399c8bdc6c09308380d3 (patch)
treeb8930a54d5caf24be75906fad724915ab337f4dc /doc/gawk.info
parent8b4e8f702df30b2b2238158504de5d8eb436958d (diff)
parenteff1b6b21720518f2ea9dbd862fe3844d899db08 (diff)
downloadegawk-ce2747c81b98b70e75ec399c8bdc6c09308380d3.tar.gz
egawk-ce2747c81b98b70e75ec399c8bdc6c09308380d3.tar.bz2
egawk-ce2747c81b98b70e75ec399c8bdc6c09308380d3.zip
Merge branch 'gawk-4.1-stable'
Diffstat (limited to 'doc/gawk.info')
-rw-r--r--doc/gawk.info1811
1 files changed, 907 insertions, 904 deletions
diff --git a/doc/gawk.info b/doc/gawk.info
index f1aa1f4a..2f10b35c 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -14,7 +14,7 @@ Free Software Foundation, Inc.
This is Edition 4.1 of `GAWK: Effective AWK Programming: A User's
-Guide for GNU Awk', for the 4.1.1 (or later) version of the GNU
+Guide for GNU Awk', for the 4.1.2 (or later) version of the GNU
implementation of AWK.
Permission is granted to copy, distribute and/or modify this document
@@ -42,7 +42,7 @@ Free Software Foundation, Inc.
This is Edition 4.1 of `GAWK: Effective AWK Programming: A User's
-Guide for GNU Awk', for the 4.1.1 (or later) version of the GNU
+Guide for GNU Awk', for the 4.1.2 (or later) version of the GNU
implementation of AWK.
Permission is granted to copy, distribute and/or modify this document
@@ -693,7 +693,7 @@ on Unix, I found the gray AWK book, a.k.a. Aho, Kernighan and
Weinberger, `The AWK Programming Language', Addison-Wesley, 1988.
AWK's simple programming paradigm--find a pattern in the input and then
perform an action--often reduced complex or tedious data manipulations
-to few lines of code. I was excited to try my hand at programming in
+to a few lines of code. I was excited to try my hand at programming in
AWK.
Alas, the `awk' on my computer was a limited version of the
@@ -779,8 +779,8 @@ with the proper options or environment variables (*note Options::), it
is fully compatible with the POSIX(1) specification of the `awk'
language and with the Unix version of `awk' maintained by Brian
Kernighan. This means that all properly written `awk' programs should
-work with `gawk'. Thus, we usually don't distinguish between `gawk'
-and other `awk' implementations.
+work with `gawk'. So most of the time, we don't distinguish between
+`gawk' and other `awk' implementations.
Using `awk' allows you to:
@@ -803,9 +803,9 @@ and other `awk' implementations.
* Perform simple network communications
- * Profile and debug `awk' programs.
+ * Profile and debug `awk' programs
- * Extend the language with functions written in C or C++.
+ * Extend the language with functions written in C or C++
This Info file teaches you about the `awk' language and how you can
use it effectively. You should already be familiar with basic system
@@ -818,9 +818,8 @@ different computing environments. This Info file, while describing the
of `awk' called `gawk' (which stands for "GNU `awk'"). `gawk' runs on
a broad range of Unix systems, ranging from Intel-architecture PC-based
computers up through large-scale systems. `gawk' has also been ported
-to Mac OS X, Microsoft Windows (all versions) and OS/2 PCs, and OpenVMS.
-(Some other, obsolete systems to which `gawk' was once ported are no
-longer supported and the code for those systems has been removed.)
+to Mac OS X, Microsoft Windows (all versions) and OS/2 PCs, and
+OpenVMS.(3)
* Menu:
@@ -840,11 +839,14 @@ longer supported and the code for those systems has been removed.)
(1) The 2008 POSIX standard is accessible online at
`http://www.opengroup.org/onlinepubs/9699919799/'.
- (2) These commands are available on POSIX-compliant systems, as well
-as on traditional Unix-based systems. If you are using some other
+ (2) These utilities are available on POSIX-compliant systems, as
+well as on traditional Unix-based systems. If you are using some other
operating system, you still need to be familiar with the ideas of I/O
redirection and pipes.
+ (3) Some other, obsolete systems to which `gawk' was once ported are
+no longer supported and the code for those systems has been removed.
+

File: gawk.info, Node: History, Next: Names, Up: Preface
@@ -958,7 +960,7 @@ heading "sidebar."
Most of the time, the examples use complete `awk' programs. Some of
the more advanced sections show only the part of the `awk' program that
-illustrates the concept currently being described.
+illustrates the concept being described.
While this Info file is aimed principally at people who have not been
exposed to `awk', there is a lot of information here that even the `awk'
@@ -1002,7 +1004,8 @@ described, as well as sorting arrays in `gawk'. It also describes how
`gawk' provides arrays of arrays.
*note Functions::, describes the built-in functions `awk' and `gawk'
-provide, as well as how to define your own functions.
+provide, as well as how to define your own functions. It also
+discusses how `gawk' lets you call functions indirectly.
Part II shows how to use `awk' and `gawk' for problem solving.
There is lots of code here for you to read and learn from. It contains
@@ -1457,21 +1460,21 @@ advice (from Douglas Adams's `The Hitchhiker's Guide to the Galaxy'),
to keep you from worrying about the complexities of computer
programming:
- $ awk "BEGIN { print "Don\47t Panic!" }"
+ $ awk 'BEGIN { print "Don\47t Panic!" }'
-| Don't Panic!
`awk' executes statements associated with `BEGIN' before reading any
input. If there are no other statements in your program, as is the
case here, `awk' just stops, instead of trying to read input it doesn't
-know how to process. The `\47' is a magic way of getting a single
-quote into the program, without having to engage in ugly shell quoting
-tricks.
+know how to process. The `\47' is a magic way (explained later) of
+getting a single quote into the program, without having to engage in
+ugly shell quoting tricks.
- NOTE: As a side note, if you use Bash as your shell, you should
- execute the command `set +H' before running this program
- interactively, to disable the C shell-style command history, which
- treats `!' as a special character. We recommend putting this
- command into your personal startup file.
+ NOTE: If you use Bash as your shell, you should execute the
+ command `set +H' before running this program interactively, to
+ disable the C shell-style command history, which treats `!' as a
+ special character. We recommend putting this command into your
+ personal startup file.
This next simple `awk' program emulates the `cat' utility; it copies
whatever you type on the keyboard to its standard output (why this
@@ -1494,9 +1497,9 @@ File: gawk.info, Node: Long, Next: Executable Scripts, Prev: Read Terminal,
1.1.3 Running Long Programs
---------------------------
-Sometimes your `awk' programs can be very long. In this case, it is
-more convenient to put the program into a separate file. In order to
-tell `awk' to use that file for its program, you type:
+Sometimes `awk' programs are very long. In these cases, it is more
+convenient to put the program into a separate file. In order to tell
+`awk' to use that file for its program, you type:
awk -f SOURCE-FILE INPUT-FILE1 INPUT-FILE2 ...
@@ -1512,14 +1515,16 @@ into the file `advice'. Then this command:
does the same thing as this one:
- awk "BEGIN { print \"Don't Panic!\" }"
+ awk 'BEGIN { print "Don\47t Panic!" }'
This was explained earlier (*note Read Terminal::). Note that you
don't usually need single quotes around the file name that you specify
with `-f', because most file names don't contain any of the shell's
special characters. Notice that in `advice', the `awk' program did not
have single quotes around it. The quotes are only needed for programs
-that are provided on the `awk' command line.
+that are provided on the `awk' command line. (Also, placing the
+program in a file allows us to use a literal single quote in the program
+text, instead of the magic `\47'.)
If you want to clearly identify your `awk' program files as such,
you can add the extension `.awk' to the file name. This doesn't affect
@@ -1563,7 +1568,7 @@ program is written in `awk'.
utility reads your program and then processes your data according to
the instructions in your program. (This is different from a "compiled"
language such as C, where your program is first compiled into machine
-code that is executed directly by your system's hardware.) The `awk'
+code that is executed directly by your system's processor.) The `awk'
utility is thus termed an "interpreter". Many modern languages are
interperted.
@@ -1573,8 +1578,8 @@ to pass to that interpreter. The operating system then runs the
interpreter with the given argument and the full argument list of the
executed program. The first argument in the list is the full file name
of the `awk' program. The rest of the argument list contains either
-options to `awk', or data files, or both. Note that on many systems
-`awk' may be found in `/usr/bin' instead of in `/bin'. Caveat Emptor.
+options to `awk', or data files, or both. (Note that on many systems
+`awk' may be found in `/usr/bin' instead of in `/bin'.)
Some systems limit the length of the interpreter name to 32
characters. Often, this can be dealt with by using a symbolic link.
@@ -1714,8 +1719,11 @@ the quoting rules.
the characters `$', ``', `\', and `"', all of which must be
preceded by a backslash within double-quoted text if they are to
be passed on literally to the program. (The leading backslash is
- stripped first.) Thus, the example seen in *note Read Terminal::,
- is applicable:
+ stripped first.) Thus, the example seen in *note Read Terminal:::
+
+ awk 'BEGIN { print "Don\47t Panic!" }'
+
+ could instead be written this way:
$ awk "BEGIN { print \"Don't Panic!\" }"
-| Don't Panic!
@@ -1781,6 +1789,9 @@ this:
$ awk -v sq="'" 'BEGIN { print "Here is a single quote <" sq ">" }'
-| Here is a single quote <'>
+ (Here, the two string constants and the value of `sq' are
+concatenated into a single string which is printed by `print'.)
+
If you really need both single and double quotes in your `awk'
program, it is probably best to move it into a separate file, where the
shell won't be part of the picture, and you can say what you mean.
@@ -1816,12 +1827,12 @@ The second data file, called `inventory-shipped', contains information
about monthly shipments. In both files, each line is considered to be
one "record".
- In the data file `mail-list', each record contains the name of a
-person, his/her phone number, his/her email-address, and a code for
-their relationship with the author of the list. The columns are
-aligned using spaces. An `A' in the last column means that the person
-is an acquaintance. An `F' in the last column means that the person is
-a friend. An `R' means that the person is a relative:
+ In `mail-list', each record contains the name of a person, his/her
+phone number, his/her email-address, and a code for their relationship
+with the author of the list. The columns are aligned using spaces. An
+`A' in the last column means that the person is an acquaintance. An
+`F' in the last column means that the person is a friend. An `R' means
+that the person is a relative:
Amelia 555-5553 amelia.zodiacusque@gmail.com F
Anthony 555-3412 anthony.asserturo@hotmail.com A
@@ -1939,7 +1950,7 @@ different ways to do the same things shown here:
* Print the length of the longest line in `data':
expand data | awk '{ if (x < length($0)) x = length($0) }
- END { print "maximum line length is " x }'
+ END { print "maximum line length is " x }'
This example differs slightly from the previous one: The input is
processed by the `expand' utility to change TABs into spaces, so
@@ -1962,7 +1973,7 @@ different ways to do the same things shown here:
* Print the total number of bytes used by FILES:
ls -l FILES | awk '{ x += $5 }
- END { print "total bytes: " x }'
+ END { print "total bytes: " x }'
* Print the total number of kilobytes used by FILES:
@@ -1991,13 +2002,13 @@ File: gawk.info, Node: Two Rules, Next: More Complex, Prev: Very Simple, Up:
=============================
The `awk' utility reads the input files one line at a time. For each
-line, `awk' tries the patterns of each of the rules. If several
-patterns match, then several actions execute in the order in which they
-appear in the `awk' program. If no patterns match, then no actions run.
+line, `awk' tries the patterns of each rule. If several patterns
+match, then several actions execute in the order in which they appear
+in the `awk' program. If no patterns match, then no actions run.
After processing all the rules that match the line (and perhaps
there are none), `awk' reads the next line. (However, *note Next
-Statement::, and also *note Nextfile Statement::). This continues
+Statement::, and also *note Nextfile Statement::.) This continues
until the program reaches the end of the file. For example, the
following `awk' program contains two rules:
@@ -2061,11 +2072,11 @@ date the file was last modified. Its output looks like this:
The first field contains read-write permissions, the second field
contains the number of links to the file, and the third field
-identifies the owner of the file. The fourth field identifies the group
-of the file. The fifth field contains the size of the file in bytes.
-The sixth, seventh, and eighth fields contain the month, day, and time,
+identifies the file's owner. The fourth field identifies the file's
+group. The fifth field contains the file's size in bytes. The sixth,
+seventh, and eighth fields contain the month, day, and time,
respectively, that the file was last modified. Finally, the ninth field
-contains the file name.(1)
+contains the file name.
The `$6 == "Nov"' in our `awk' program is an expression that tests
whether the sixth field of the output from `ls -l' matches the string
@@ -2087,11 +2098,6 @@ displays your output. By manipulating fields and using `print'
statements, you can produce some very useful and impressive-looking
reports.
- ---------- Footnotes ----------
-
- (1) The `LC_ALL=C' is needed to produce this traditional-style
-output from `ls'.
-

File: gawk.info, Node: Statements/Lines, Next: Other Features, Prev: More Complex, Up: Getting Started
@@ -2388,7 +2394,7 @@ The following list describes options mandated by the POSIX standard:
CAUTION: Using `-v' to set the values of the built-in
variables may lead to surprising results. `awk' will reset
the values of those variables as it needs to, possibly
- ignoring any predefined value you may have given.
+ ignoring any initial value you may have given.
`-W GAWK-OPT'
Provide an implementation-specific option. This is the POSIX
@@ -2439,9 +2445,9 @@ The following list describes options mandated by the POSIX standard:
`-d'[FILE]
`--dump-variables'[`='FILE]
Print a sorted list of global variables, their types, and final
- values to FILE. If no FILE is provided, print this list to the
- file named `awkvars.out' in the current directory. No space is
- allowed between the `-d' and FILE, if FILE is supplied.
+ values to FILE. If no FILE is provided, print this list to a file
+ named `awkvars.out' in the current directory. No space is allowed
+ between the `-d' and FILE, if FILE is supplied.
Having a list of all global variables is a good way to look for
typographical errors in your programs. You would also use this
@@ -2504,7 +2510,7 @@ The following list describes options mandated by the POSIX standard:
`-i' SOURCE-FILE
`--include' SOURCE-FILE
- Read `awk' source library from SOURCE-FILE. This option is
+ Read an `awk' source library from SOURCE-FILE. This option is
completely equivalent to using the `@include' directive inside
your program. This option is very similar to the `-f' option, but
there are two important differences. First, when `-i' is used,
@@ -2525,8 +2531,8 @@ The following list describes options mandated by the POSIX standard:
not be specified in the extension name. The extension
initialization routine should be named `dl_load()'. An
alternative is to use the `@load' keyword inside the program to
- load a shared library. This feature is described in detail in
- *note Dynamic Extensions::.
+ load a shared library. This advanced feature is described in
+ detail in *note Dynamic Extensions::.
`-L'[VALUE]
`--lint'[`='VALUE]
@@ -2661,8 +2667,9 @@ it is, `awk' reads its program source from all of the named files, as
if they had been concatenated together into one big file. This is
useful for creating libraries of `awk' functions. These functions can
be written once and then retrieved from a standard place, instead of
-having to be included into each individual program. (As mentioned in
-*note Definition Syntax::, function names must be unique.)
+having to be included into each individual program. The `-i' option is
+similar in this regard. (As mentioned in *note Definition Syntax::,
+function names must be unique.)
With standard `awk', library functions can still be used, even if
the program is entered at the keyboard, by specifying `-f /dev/tty'.
@@ -2719,14 +2726,17 @@ Any additional arguments on the command line are normally treated as
input files to be processed in the order specified. However, an
argument that has the form `VAR=VALUE', assigns the value VALUE to the
variable VAR--it does not specify a file at all. (See *note Assignment
-Options::.)
+Options::.) In the following example, COUNT=1 is a variable assignment,
+not a file name:
+
+ awk -f program.awk file1 count=1 file2
- All these arguments are made available to your `awk' program in the
-`ARGV' array (*note Built-in Variables::). Command-line options and
-the program text (if present) are omitted from `ARGV'. All other
-arguments, including variable assignments, are included. As each
-element of `ARGV' is processed, `gawk' sets the variable `ARGIND' to
-the index in `ARGV' of the current element.
+ All the command-line arguments are made available to your `awk'
+program in the `ARGV' array (*note Built-in Variables::). Command-line
+options and the program text (if present) are omitted from `ARGV'. All
+other arguments, including variable assignments, are included. As
+each element of `ARGV' is processed, `gawk' sets the variable `ARGIND'
+to the index in `ARGV' of the current element.
Changing `ARGC' and `ARGV' in your `awk' program lets you control
how `awk' processes the input files; this is described in more detail
@@ -2835,8 +2845,8 @@ variable. If that variable does not exist, `gawk' uses a default path,
The search path feature is particularly helpful for building
libraries of useful `awk' functions. The library files can be placed
in a standard directory in the default path and then specified on the
-command line with a short file name. Otherwise, the full file name
-would have to be typed for each file.
+command line with a short file name. Otherwise, you would have to type
+the full file name for each file.
By using the `-i' option, or the `-e' and `-f' options, your
command-line `awk' programs can use facilities in `awk' library files
@@ -2844,21 +2854,20 @@ command-line `awk' programs can use facilities in `awk' library files
in compatibility mode. This is true for both `--traditional' and
`--posix'. *Note Options::.
- If the source code is not found after the initial search, the path
-is searched again after adding the default `.awk' suffix to the file
-name.
+ If the source code file is not found after the initial search, the
+path is searched again after adding the default `.awk' suffix to the
+file name.
- NOTE: To include the current directory in the path, either place
- `.' explicitly in the path or write a null entry in the path. (A
- null entry is indicated by starting or ending the path with a
- colon or by placing two colons next to each other [`::'].) This
- path search mechanism is similar to the shell's. (See `The
- Bourne-Again SHell manual'.
- (http://www.gnu.org/software/bash/manual/))
+ `gawk''s path search mechanism is similar to the shell's. (See `The
+Bourne-Again SHell manual' (http://www.gnu.org/software/bash/manual/).)
+It treats a null entry in the path as indicating the current directory.
+(A null entry is indicated by starting or ending the path with a colon
+or by placing two colons next to each other [`::'].)
- However, `gawk' always looks in the current directory _before_
- searching `AWKPATH', so there is no real reason to include the
- current directory in the search path.
+ NOTE: `gawk' always looks in the current directory _before_
+ searching `AWKPATH'. Thus, while you can include the current
+ directory in the search path, either explicitly or with a null
+ entry, there is no real reason to do so.
If `AWKPATH' is not defined in the environment, `gawk' places its
default search path into `ENVIRON["AWKPATH"]'. This makes it easy to
@@ -2905,15 +2914,6 @@ A number of other environment variables affect `gawk''s behavior, but
they are more specialized. Those in the following list are meant to be
used by regular users.
-`POSIXLY_CORRECT'
- Causes `gawk' to switch to POSIX compatibility mode, disabling all
- traditional and GNU extensions. *Note Options::.
-
-`GAWK_SOCK_RETRIES'
- Controls the number of times `gawk' attempts to retry a two-way
- TCP/IP (socket) connection before giving up. *Note TCP/IP
- Networking::.
-
`GAWK_MSEC_SLEEP'
Specifies the interval between connection retries, in
milliseconds. On systems that do not support the `usleep()' system
@@ -2923,6 +2923,15 @@ used by regular users.
Specifies the time, in milliseconds, for `gawk' to wait for input
before returning with an error. *Note Read Timeout::.
+`GAWK_SOCK_RETRIES'
+ Controls the number of times `gawk' attempts to retry a two-way
+ TCP/IP (socket) connection before giving up. *Note TCP/IP
+ Networking::.
+
+`POSIXLY_CORRECT'
+ Causes `gawk' to switch to POSIX compatibility mode, disabling all
+ traditional and GNU extensions. *Note Options::.
+
The environment variables in the following list are meant for use by
the `gawk' developers for testing and tuning. They are subject to
change. The variables are:
@@ -2934,7 +2943,7 @@ change. The variables are:
the value should be a number, and `gawk' uses that number as the
size of the buffer to allocate. (When this variable is not set,
`gawk' uses the smaller of the file's size and the "default"
- blocksize, which is usually the filesystems I/O blocksize.)
+ blocksize, which is usually the filesystem's I/O blocksize.)
`AWK_HASH'
If this variable exists with a value of `gst', `gawk' switches to
@@ -2948,11 +2957,11 @@ change. The variables are:
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.
+ If this variable exists, `gawk' includes the file name and line
+ number within the `gawk' source code from which warning and/or
+ fatal messages are generated. Its purpose is to help isolate the
+ source of a message, since there are 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
@@ -3126,7 +3135,8 @@ is useful for embedding inside an `awk' source file that requires
access to an extension.
*note Dynamic Extensions::, describes how to write extensions (in C
-or C++) that can be loaded with either `@load' or the `-l' option.
+or C++) that can be loaded with either `@load' or the `-l' option. It
+also describes the `ordchr' extension.

File: gawk.info, Node: Obsolete, Next: Undocumented, Prev: Loading Shared Libraries, Up: Invoking Gawk
@@ -3177,7 +3187,8 @@ File: gawk.info, Node: Invoking Summary, Prev: Undocumented, Up: Invoking Gaw
affects how `awk' processes input.
* You can use a single minus sign (`-') to refer to standard input
- on the command line.
+ on the command line. `gawk' also lets you use the special file
+ name `/dev/stdin'.
* `gawk' pays attention to a number of environment variables.
`AWKPATH', `AWKLIBPATH', and `POSIXLY_CORRECT' are the most
@@ -3315,9 +3326,9 @@ or newline. While there is nothing to stop you from entering most
unprintable characters directly in a string constant or regexp constant,
they may look ugly.
- The following table lists all the escape sequences used in `awk' and
-what they represent. Unless noted otherwise, all these escape sequences
-apply to both string constants and regexp constants:
+ The following list presents all the escape sequences used in `awk'
+and what they represent. Unless noted otherwise, all these escape
+sequences apply to both string constants and regexp constants:
`\\'
A literal backslash, `\'.
@@ -3391,11 +3402,11 @@ normally be a regexp operator. For example, `/a\+b/' matches the three
characters `a+b'.
For complete portability, do not use a backslash before any
-character not shown in the previous list.
+character not shown in the previous list and that is not an operator.
To summarize:
- * The escape sequences in the table above are always processed first,
+ * The escape sequences in the list above are always processed first,
for both string constants and regexp constants. This happens very
early, as soon as `awk' reads your program.
@@ -3453,7 +3464,7 @@ and converted into corresponding real characters as the very first step
in processing regexps.
Here is a list of metacharacters. All characters that are not escape
-sequences and that are not listed in the table stand for themselves:
+sequences and that are not listed in the following stand for themselves:
`\'
This is used to suppress the special meaning of a character when
@@ -3641,8 +3652,8 @@ matches either `d' or `]'. Additionally, if you place `]' right after
the opening `[', the closing bracket is treated as one of the
characters to be matched.
- This treatment of `\' in bracket expressions is compatible with
-other `awk' implementations and is also mandated by POSIX. The regular
+ The treatment of `\' in bracket expressions is compatible with other
+`awk' implementations and is also mandated by POSIX. The regular
expressions in `awk' are a superset of the POSIX specification for
Extended Regular Expressions (EREs). POSIX EREs are based on the
regular expressions accepted by the traditional `egrep' utility.
@@ -3730,10 +3741,11 @@ Consider the following:
echo aaaabcd | awk '{ sub(/a+/, "<A>"); print }'
- This example uses the `sub()' function (which we haven't discussed
-yet; *note String Functions::) to make a change to the input record.
-Here, the regexp `/a+/' indicates "one or more `a' characters," and the
-replacement text is `<A>'.
+ This example uses the `sub()' function to make a change to the input
+record. (`sub()' replaces the first instance of any text matched by
+the first argument with the string provided as the second argument;
+*note String Functions::). Here, the regexp `/a+/' indicates "one or
+more `a' characters," and the replacement text is `<A>'.
The input contains four `a' characters. `awk' (and POSIX) regular
expressions always match the leftmost, _longest_ sequence of input
@@ -3809,15 +3821,15 @@ constants," for several reasons:
Using `\n' in Bracket Expressions of Dynamic Regexps
- Some versions of `awk' do not allow the newline character to be used
-inside a bracket expression for a dynamic regexp:
+ Some older versions of `awk' do not allow the newline character to
+be used inside a bracket expression for a dynamic regexp:
$ awk '$0 ~ "[ \t\n]"'
error--> awk: newline in character class [
error--> ]...
error--> source line number 1
error--> context is
- error--> >>> <<<
+ error--> $0 ~ "[ >>> \t\n]" <<<
But a newline in a regexp constant works with no problem:
@@ -4025,10 +4037,6 @@ File: gawk.info, Node: Regexp Summary, Prev: Case-sensitivity, Up: Regexp
Within bracket expressions, POSIX character classes let you specify
certain groups of characters in a locale-independent fashion.
- * `gawk''s `IGNORECASE' variable lets you control the case
- sensitivity of regexp matching. In other `awk' versions, use
- `tolower()' or `toupper()'.
-
* Regular expressions match the leftmost longest text in the string
being matched. This matters for cases where you need to know the
extent of the match, such as for text substitution and when the
@@ -4037,6 +4045,10 @@ File: gawk.info, Node: Regexp Summary, Prev: Case-sensitivity, Up: Regexp
* Matching expressions may use dynamic regexps, that is, string
values treated as regular expressions.
+ * `gawk''s `IGNORECASE' variable lets you control the case
+ sensitivity of regexp matching. In other `awk' versions, use
+ `tolower()' or `toupper()'.
+

File: gawk.info, Node: Reading Files, Next: Printing, Prev: Regexp, Up: Top
@@ -4090,7 +4102,7 @@ File: gawk.info, Node: Records, Next: Fields, Up: Reading Files
`awk' divides the input for your program into records and fields. It
keeps track of the number of records that have been read so far from
the current input file. This value is stored in a built-in variable
-called `FNR' which is reset to zero when a new file is started.
+called `FNR' which is reset to zero every time a new file is started.
Another built-in variable, `NR', records the total number of input
records read so far from all data files. It starts at zero, but is
never automatically reset to zero.
@@ -4198,9 +4210,10 @@ character such as `/' is more likely to produce correct behavior in the
majority of cases, but there are no guarantees. The moral is: Know Your
Data.
- There is one unusual case, that occurs when `gawk' is being fully
-POSIX-compliant (*note Options::). Then, the following (extreme)
-pipeline prints a surprising `1':
+ When using regular characters as the record separator, there is one
+unusual case that occurs when `gawk' is being fully POSIX-compliant
+(*note Options::). Then, the following (extreme) pipeline prints a
+surprising `1':
$ echo | gawk --posix 'BEGIN { RS = "a" } ; { print NF }'
-| 1
@@ -4265,9 +4278,9 @@ trailing whitespace:
-| ]
The square brackets delineate the contents of `RT', letting you see the
-leading and trailing whitespace. The final value of `RT' `RT' is a
-newline. *Note Simple Sed::, for a more useful example of `RS' as a
-regexp and `RT'.
+leading and trailing whitespace. The final value of `RT' is a newline.
+*Note Simple Sed::, for a more useful example of `RS' as a regexp and
+`RT'.
If you set `RS' to a regular expression that allows optional
trailing text, such as `RS = "abc(XYZ)?"' it is possible, due to
@@ -4282,13 +4295,13 @@ that this will never happen.
the beginning and end of a _line_. As a result, something like
`RS = "^[[:upper:]]"' can only match at the beginning of a file.
This is because `gawk' views the input file as one long string
- that happens to contain newline characters in it. It is thus best
- to avoid anchor characters in the value of `RS'.
+ that happens to contain newline characters. It is thus best to
+ avoid anchor characters in the value of `RS'.
The use of `RS' as a regular expression and the `RT' variable are
`gawk' extensions; they are not available in compatibility mode (*note
Options::). In compatibility mode, only the first character of the
-value of `RS' is used to determine the end of the record.
+value of `RS' determines the end of the record.
`RS = "\0"' Is Not Portable
@@ -4317,11 +4330,12 @@ terminator. In effect, this means that `RS = "\0"' is the same as `RS
It happens that recent versions of `mawk' can use the NUL character
as a record separator. However, this is a special case: `mawk' does not
-allow embedded NUL characters in strings.
+allow embedded NUL characters in strings. (This may change in a future
+version of `mawk'.)
- *Note Readfile Function::, for an interesting, portable way to read
-whole files. If you are using `gawk', see *note Extension Sample
-Readfile::, for another option.
+ *Note Readfile Function::, for an interesting way to read whole
+files. If you are using `gawk', see *note Extension Sample Readfile::,
+for another option.
---------- Footnotes ----------
@@ -4378,13 +4392,11 @@ examples:
-| Julie 555-6699 julie.perscrutabor@skeeve.com F
This example prints each record in the file `mail-list' whose first
-field contains the string `li'. The operator `~' is called a "matching
-operator" (*note Regexp Usage::); it tests whether a string (here, the
-field `$1') matches a given regular expression.
+field contains the string `li'.
By contrast, the following example looks for `li' in _the entire
-record_ and prints the first field and the last field for each matching
-input record:
+record_ and prints the first and last fields for each matching input
+record:
$ awk '/li/ { print $1, $NF }' mail-list
-| Amelia F
@@ -4560,12 +4572,12 @@ value six.
value of `NF' and recomputes `$0'. (d.c.) Here is an example:
$ echo a b c d e f | awk '{ print "NF =", NF;
- > NF = 3; print $0 }'
+ > NF = 3; print $0 }'
-| NF = 6
-| a b c
CAUTION: Some versions of `awk' don't rebuild `$0' when `NF' is
- decremented. Caveat emptor.
+ decremented.
Finally, there are times when it is convenient to force `awk' to
rebuild the entire record, using the current value of the fields and
@@ -4590,8 +4602,8 @@ as it was read from the input. This includes any leading or trailing
whitespace, and the exact whitespace (or other characters) that
separate the fields.
- It is a not-uncommon error to try to change the field separators in
-a record simply by setting `FS' and `OFS', and then expecting a plain
+ It is a common error to try to change the field separators in a
+record simply by setting `FS' and `OFS', and then expecting a plain
`print' or `print $0' to print the modified record.
But this does not work, since nothing was done to change the record
@@ -4741,9 +4753,9 @@ play whenever `$0' is recomputed. For instance, study this pipeline:
The first `print' statement prints the record as it was read, with
leading whitespace intact. The assignment to `$2' rebuilds `$0' by
concatenating `$1' through `$NF' together, separated by the value of
-`OFS'. Because the leading whitespace was ignored when finding `$1',
-it is not part of the new `$0'. Finally, the last `print' statement
-prints the new `$0'.
+`OFS' (which is a space by default). Because the leading whitespace
+was ignored when finding `$1', it is not part of the new `$0'.
+Finally, the last `print' statement prints the new `$0'.
There is an additional subtlety to be aware of when using regular
expressions for field splitting. It is not well-specified in the POSIX
@@ -4758,7 +4770,7 @@ beginning of the record. `gawk' also works this way. For example:
$ echo 'xxAA xxBxx C' |
> gawk -F '(^x+)|( +)' '{ for (i = 1; i <= NF; i++)
- > printf "-->%s<--\n", $i }'
+ > printf "-->%s<--\n", $i }'
-| --><--
-| -->AA<--
-| -->xxBxx<--
@@ -4803,10 +4815,7 @@ For example:
sets `FS' to the `,' character. Notice that the option uses an
uppercase `F' instead of a lowercase `f'. The latter option (`-f')
-specifies a file containing an `awk' program. Case is significant in
-command-line options: the `-F' and `-f' options have nothing to do with
-each other. You can use both options at the same time to set the `FS'
-variable _and_ get an `awk' program from a file.
+specifies a file containing an `awk' program.
The value used for the argument to `-F' is processed in exactly the
same way as assignments to the built-in variable `FS'. Any special
@@ -4904,7 +4913,7 @@ occurrences of any two characters." If instead you want fields to be
separated by a literal period followed by any single character, use `FS
= "\\.."'.
- The following table summarizes how fields are split, based on the
+ The following list summarizes how fields are split, based on the
value of `FS' (`==' means "is equal to"):
`FS == " "'
@@ -4924,7 +4933,7 @@ value of `FS' (`==' means "is equal to"):
`FS == ""'
Each individual character in the record becomes a separate field.
- (This is a `gawk' extension; it is not specified by the POSIX
+ (This is a common extension; it is not specified by the POSIX
standard.)
Changing `FS' Does Not Affect the Fields
@@ -5295,7 +5304,7 @@ A simple program to process this file is as follows:
...
*Note Labels Program::, for a more realistic program that deals with
-address lists. The following table summarizes how records are split,
+address lists. The following list summarizes how records are split,
based on the value of `RS'. (`==' means "is equal to.")
`RS == "\n"'
@@ -5319,9 +5328,10 @@ based on the value of `RS'. (`==' means "is equal to.")
records. (This is a `gawk' extension; it is not specified by the
POSIX standard.)
- In all cases, `gawk' sets `RT' to the input text that matched the
-value specified by `RS'. But if the input file ended without any text
-that matches `RS', then `gawk' sets `RT' to the null string.
+ If not in compatibility mode (*note Options::), `gawk' sets `RT' to
+the input text that matched the value specified by `RS'. But if the
+input file ended without any text that matches `RS', then `gawk' sets
+`RT' to the null string.
---------- Footnotes ----------
@@ -5400,9 +5410,7 @@ processing on the next record _right now_. For example:
while (j == 0) {
# get more text
if (getline <= 0) {
- m = "unexpected EOF or error"
- m = (m ": " ERRNO)
- print m > "/dev/stderr"
+ print("unexpected EOF or error:", ERRNO) > "/dev/stderr"
exit
}
# build up the line using string concatenation
@@ -5605,9 +5613,9 @@ the program might produce:
bill ttyp1 Jul 13 14:23 (murphy:0)
bletch
-Notice that this program ran the command `who' and printed the previous
-result. (If you try this program yourself, you will of course get
-different results, depending upon who is logged in on your system.)
+Notice that this program ran the command `who' and printed the result.
+(If you try this program yourself, you will of course get different
+results, depending upon who is logged in on your system.)
This variation of `getline' splits the record into fields, sets the
value of `NF', and recomputes the value of `$0'. The values of `NR'
@@ -5623,10 +5631,10 @@ all `awk' implementations.
NOTE: Unfortunately, `gawk' has not been consistent in its
treatment of a construct like `"echo " "date" | getline'. Most
versions, including the current version, treat it at as `("echo "
- "date") | getline'. (This how BWK `awk' behaves.) Some versions
- changed and treated it as `"echo " ("date" | getline)'. (This is
- how `mawk' behaves.) In short, _always_ use explicit parentheses,
- and then you won't have to worry.
+ "date") | getline'. (This is also how BWK `awk' behaves.) Some
+ versions changed and treated it as `"echo " ("date" | getline)'.
+ (This is how `mawk' behaves.) In short, _always_ use explicit
+ parentheses, and then you won't have to worry.

File: gawk.info, Node: Getline/Variable/Pipe, Next: Getline/Coprocess, Prev: Getline/Pipe, Up: Getline
@@ -5646,7 +5654,7 @@ following program reads the current date and time into the variable
}
In this version of `getline', none of the built-in variables are
-changed and the record is not split into fields.
+changed and the record is not split into fields. However, `RT' is set.
According to POSIX, `EXPRESSION | getline VAR' is ambiguous if
EXPRESSION contains unparenthesized operators other than `$'; for
@@ -5728,7 +5736,7 @@ in mind:
`getline' command causes `awk' to set the value of `FILENAME'.
Normally, `FILENAME' does not have a value inside `BEGIN' rules,
because you have not yet started to process the command-line data
- files. (d.c.) (*Note BEGIN/END::, also *note Auto-set::.)
+ files. (d.c.) (See *note BEGIN/END::; also *note Auto-set::.)
* Using `FILENAME' with `getline' (`getline < FILENAME') is likely
to be a source for confusion. `awk' opens a separate input stream
@@ -5761,7 +5769,7 @@ in mind:
`gawk' treats `getline' like a function call, and evaluates the
expression `a[++c]' before attempting to read from `f'. However,
some versions of `awk' only evaluate the expression once they know
- that there is a string value to be assigned. Caveat Emptor.
+ that there is a string value to be assigned.

File: gawk.info, Node: Getline Summary, Prev: Getline Notes, Up: Getline
@@ -5774,19 +5782,18 @@ File: gawk.info, Node: Getline Summary, Prev: Getline Notes, Up: Getline
whether the variant is standard or a `gawk' extension. Note: for each
variant, `gawk' sets the `RT' built-in variable.
-Variant Effect Standard /
- Extension
+Variant Effect `awk' / `gawk'
-------------------------------------------------------------------------
-`getline' Sets `$0', `NF', `FNR', Standard
+`getline' Sets `$0', `NF', `FNR', `awk'
`NR', and `RT'
-`getline' VAR Sets VAR, `FNR', `NR', and Standard
+`getline' VAR Sets VAR, `FNR', `NR', and `awk'
`RT'
-`getline <' FILE Sets `$0', `NF', and `RT' Standard
-`getline VAR < FILE' Sets VAR and `RT' Standard
-COMMAND `| getline' Sets `$0', `NF', and `RT' Standard
-COMMAND `| getline' VAR Sets VAR and `RT' Standard
-COMMAND `|& getline' Sets `$0', `NF', and `RT' Extension
-COMMAND `|& getline' Sets VAR and `RT' Extension
+`getline <' FILE Sets `$0', `NF', and `RT' `awk'
+`getline VAR < FILE' Sets VAR and `RT' `awk'
+COMMAND `| getline' Sets `$0', `NF', and `RT' `awk'
+COMMAND `| getline' VAR Sets VAR and `RT' `awk'
+COMMAND `|& getline' Sets `$0', `NF', and `RT' `gawk'
+COMMAND `|& getline' Sets VAR and `RT' `gawk'
VAR
Table 4.1: `getline' Variants and What They Set
@@ -5802,7 +5809,7 @@ This minor node describes a feature that is specific to `gawk'.
You may specify a timeout in milliseconds for reading input from the
keyboard, a pipe, or two-way communication, including TCP/IP sockets.
This can be done on a per input, command or connection basis, by
-setting a special element in the `PROCINFO' (*note Auto-set::) array:
+setting a special element in the `PROCINFO' array (*note Auto-set::):
PROCINFO["input_name", "READ_TIMEOUT"] = TIMEOUT IN MILLISECONDS
@@ -5826,9 +5833,9 @@ for more than five seconds:
print $0
`gawk' terminates the read operation if input does not arrive after
-waiting for the timeout period, returns failure and sets the `ERRNO'
-variable to an appropriate string value. A negative or zero value for
-the timeout is the same as specifying no timeout at all.
+waiting for the timeout period, returns failure and sets `ERRNO' to an
+appropriate string value. A negative or zero value for the timeout is
+the same as specifying no timeout at all.
A timeout can also be set for reading from the keyboard in the
implicit loop that reads input records and matches them against
@@ -5926,6 +5933,10 @@ File: gawk.info, Node: Input Summary, Next: Input Exercises, Prev: Command-li
A regexp Text that matches the `gawk'
regexp
+ * `FNR' indicates how many records have been read from the current
+ input file; `NR' indicates how many records have been read in
+ total.
+
* `gawk' sets `RT' to the text matched by `RS'.
* After splitting the input into records, `awk' further splits the
@@ -5943,32 +5954,31 @@ File: gawk.info, Node: Input Summary, Next: Input Exercises, Prev: Command-li
* Field splitting is more complicated than record splitting.
- Field separator value Fields are split ... `awk' /
- `gawk'
+ Field separator value Fields are split ... `awk' /
+ `gawk'
----------------------------------------------------------------------
- `FS == " "' On runs of whitespace `awk'
- `FS == ANY SINGLE On that character `awk'
- CHARACTER'
- `FS == REGEXP' On text matching the `awk'
- regexp
- `FS == ""' Each individual character `gawk'
- is a separate field
- `FIELDWIDTHS == LIST OF Based on character `gawk'
- COLUMNS' position
- `FPAT == REGEXP' On text around text `gawk'
- matching the regexp
-
- Using `FS = "\n"' causes the entire record to be a single field
+ `FS == " "' On runs of whitespace `awk'
+ `FS == ANY SINGLE On that character `awk'
+ CHARACTER'
+ `FS == REGEXP' On text matching the regexp `awk'
+ `FS == ""' Each individual character is `gawk'
+ a separate field
+ `FIELDWIDTHS == LIST OF Based on character position `gawk'
+ COLUMNS'
+ `FPAT == REGEXP' On the text surrounding text `gawk'
+ matching the regexp
+
+ * Using `FS = "\n"' causes the entire record to be a single field
(assuming that newlines separate records).
* `FS' may be set from the command line using the `-F' option. This
can also be done using command-line variable assignment.
- * `PROCINFO["FS"]' can be used to see how fields are being split.
+ * Use `PROCINFO["FS"]' to see how fields are being split.
* Use `getline' in its various forms to read additional records,
from the default input stream, from a file, or from a pipe or
- co-process.
+ coprocess.
* Use `PROCINFO[FILE, "READ_TIMEOUT"]' to cause reads to timeout for
FILE.
@@ -6039,10 +6049,10 @@ File: gawk.info, Node: Print, Next: Print Examples, Up: Printing
5.1 The `print' Statement
=========================
-The `print' statement is used for producing output with simple,
-standardized formatting. You specify only the strings or numbers to
-print, in a list separated by commas. They are output, separated by
-single spaces, followed by a newline. The statement looks like this:
+Use the `print' statement to produce output with simple, standardized
+formatting. You specify only the strings or numbers to print, in a
+list separated by commas. They are output, separated by single spaces,
+followed by a newline. The statement looks like this:
print ITEM1, ITEM2, ...
@@ -6057,14 +6067,14 @@ Numeric values are converted to strings and then printed.
The simple statement `print' with no items is equivalent to `print
$0': it prints the entire current record. To print a blank line, use
-`print ""', where `""' is the empty string. To print a fixed piece of
-text, use a string constant, such as `"Don't Panic"', as one item. If
-you forget to use the double-quote characters, your text is taken as an
-`awk' expression, and you will probably get an error. Keep in mind
-that a space is printed between any two items.
+`print ""'. To print a fixed piece of text, use a string constant,
+such as `"Don't Panic"', as one item. If you forget to use the
+double-quote characters, your text is taken as an `awk' expression, and
+you will probably get an error. Keep in mind that a space is printed
+between any two items.
Note that the `print' statement is a statement and not an
-expression--you can't use it the pattern part of a pattern-action
+expression--you can't use it in the pattern part of a PATTERN-ACTION
statement, for example.

@@ -6219,12 +6229,12 @@ to format numbers (or strings), and that there are a number of
different ways in which numbers can be formatted. The different format
specifications are discussed more fully in *note Control Letters::.
- The built-in variable `OFMT' contains the default format
-specification that `print' uses with `sprintf()' when it wants to
-convert a number to a string for printing. The default value of `OFMT'
-is `"%.6g"'. The way `print' prints numbers can be changed by
-supplying different format specifications as the value of `OFMT', as
-shown in the following example:
+ The built-in variable `OFMT' contains the format specification that
+`print' uses with `sprintf()' when it wants to convert a number to a
+string for printing. The default value of `OFMT' is `"%.6g"'. The way
+`print' prints numbers can be changed by supplying a different format
+specification for the value of `OFMT', as shown in the following
+example:
$ awk 'BEGIN {
> OFMT = "%.0f" # print numbers as integers (rounds)
@@ -6246,8 +6256,6 @@ by `print', use `printf'. With `printf' you can specify the width to
use for each item, as well as various formatting choices for numbers
(such as what output base to use, whether to print an exponent, whether
to print a sign, and how many digits to print after the decimal point).
-You do this by supplying a string, called the "format string", that
-controls how and where to print the other arguments.
* Menu:
@@ -6266,10 +6274,10 @@ A simple `printf' statement looks like this:
printf FORMAT, ITEM1, ITEM2, ...
-The entire list of arguments may optionally be enclosed in parentheses.
-The parentheses are necessary if any of the item expressions use the `>'
-relational operator; otherwise, it can be confused with an output
-redirection (*note Redirection::).
+As print `print', the entire list of arguments may optionally be
+enclosed in parentheses. Here too, the parentheses are necessary if any
+of the item expressions use the `>' relational operator; otherwise, it
+can be confused with an output redirection (*note Redirection::).
The difference between `printf' and `print' is the FORMAT argument.
This is an expression whose value is taken as a string; it specifies
@@ -6290,10 +6298,10 @@ statements. For example:
$ awk 'BEGIN {
> ORS = "\nOUCH!\n"; OFS = "+"
- > msg = "Dont Panic!"
+ > msg = "Don\47t Panic!"
> printf "%s\n", msg
> }'
- -| Dont Panic!
+ -| Don't Panic!
Here, neither the `+' nor the `OUCH' appear in the output message.
@@ -6311,9 +6319,9 @@ print. The rest of the format specifier is made up of optional
width. Here is a list of the format-control letters:
`%c'
- Print a number as an ASCII character; thus, `printf "%c", 65'
- outputs the letter `A'. The output for a string value is the first
- character of the string.
+ Print a number as a character; thus, `printf "%c", 65' outputs the
+ letter `A'. The output for a string value is the first character
+ of the string.
NOTE: The POSIX standard says the first character of a string
is printed. In locales with multibyte characters, `gawk'
@@ -6406,7 +6414,7 @@ File: gawk.info, Node: Format Modifiers, Next: Printf Examples, Prev: Control
A format specification can also include "modifiers" that can control
how much of the item's value is printed, as well as how much space it
gets. The modifiers come between the `%' and the format-control letter.
-We will use the bullet symbol "*" in the following examples to represent
+We use the bullet symbol "*" in the following examples to represent
spaces in the output. Here are the possible modifiers, in the order in
which they may appear:
@@ -6426,8 +6434,7 @@ which they may appear:
At first glance, this feature doesn't seem to be of much use. It
is in fact a `gawk' extension, intended for use in translating
messages at runtime. *Note Printf Ordering::, which describes how
- and why to use positional specifiers. For now, we will not use
- them.
+ and why to use positional specifiers. For now, we ignore them.
`-'
The minus sign, used before the width modifier (see later on in
@@ -6457,10 +6464,10 @@ which they may appear:
trailing zeros are not removed from the result.
`0'
- A leading `0' (zero) acts as a flag that indicates that output
- should be padded with zeros instead of spaces. This applies only
- to the numeric output formats. This flag only has an effect when
- the field width is wider than the value to print.
+ A leading `0' (zero) acts as a flag indicating that output should
+ be padded with zeros instead of spaces. This applies only to the
+ numeric output formats. This flag only has an effect when the
+ field width is wider than the value to print.
`''
A single quote or apostrophe character is a POSIX extension to ISO
@@ -6608,14 +6615,14 @@ beginning of the `awk' program:
awk 'BEGIN { print "Name Number"
print "---- ------" }
- { printf "%-10s %s\n", $1, $2 }' mail-list
+ { printf "%-10s %s\n", $1, $2 }' mail-list
The above example mixes `print' and `printf' statements in the same
program. Using just `printf' statements can produce the same results:
awk 'BEGIN { printf "%-10s %s\n", "Name", "Number"
printf "%-10s %s\n", "----", "------" }
- { printf "%-10s %s\n", $1, $2 }' mail-list
+ { printf "%-10s %s\n", $1, $2 }' mail-list
Printing each column heading with the same format specification used
for the column elements ensures that the headings are aligned just like
@@ -6627,7 +6634,7 @@ be emphasized by storing it in a variable, like this:
awk 'BEGIN { format = "%-10s %s\n"
printf format, "Name", "Number"
printf format, "----", "------" }
- { printf format, $1, $2 }' mail-list
+ { printf format, $1, $2 }' mail-list

File: gawk.info, Node: Redirection, Next: Special Files, Prev: Printf, Up: Printing
@@ -6640,7 +6647,7 @@ output, usually the screen. Both `print' and `printf' can also send
their output to other places. This is called "redirection".
NOTE: When `--sandbox' is specified (*note Options::), redirecting
- output to files and pipes is disabled.
+ output to files, pipes and coprocesses is disabled.
A redirection appears after the `print' or `printf' statement.
Redirections in `awk' are written just like redirections in shell
@@ -6711,16 +6718,10 @@ work identically for `printf':
maintenance:
report = "mail bug-system"
- print "Awk script failed:", $0 | report
- m = ("at record number " FNR " of " FILENAME)
- print m | report
+ print("Awk script failed:", $0) | report
+ print("at record number", FNR, "of", FILENAME) | report
close(report)
- The message is built using string concatenation and saved in the
- variable `m'. It's then sent down the pipeline to the `mail'
- program. (The parentheses group the items to concatenate--see
- *note Concatenation::.)
-
The `close()' function is called here because it's a good idea to
close the pipe as soon as all the intended output has been sent to
it. *Note Close Files And Pipes::, for more information.
@@ -6793,8 +6794,8 @@ File: gawk.info, Node: Special Files, Next: Close Files And Pipes, Prev: Redi
================================
`gawk' provides a number of special file names that it interprets
-internally. These file names provide access to standard file
-descriptors and TCP/IP networking.
+internally. These file names provide access to standard pre-opened
+files and TCP/IP networking.
* Menu:
@@ -6805,8 +6806,8 @@ descriptors and TCP/IP networking.

File: gawk.info, Node: Special FD, Next: Special Network, Up: Special Files
-5.7.1 Special Files for Standard Descriptors
---------------------------------------------
+5.7.1 Special Files for Standard Pre-Opened Files
+-------------------------------------------------
Running programs conventionally have three input and output streams
already available to them for reading and writing. These are known as
@@ -6834,19 +6835,20 @@ error messages to the screen, like this:
(`/dev/tty' is a special file supplied by the operating system that is
connected to your keyboard and screen. It represents the "terminal,"(1)
which on modern systems is a keyboard and screen, not a serial console.)
-This usually has the same effect but not always: although the standard
-error stream is usually the screen, it can be redirected; when that
-happens, writing to the screen is not correct. In fact, if `awk' is
-run from a background job, it may not have a terminal at all. Then
+This generally has the same effect but not always: although the
+standard error stream is usually the screen, it can be redirected; when
+that happens, writing to the screen is not correct. In fact, if `awk'
+is run from a background job, it may not have a terminal at all. Then
opening `/dev/tty' fails.
`gawk' provides special file names for accessing the three standard
streams. (c.e.) It also provides syntax for accessing any other
-inherited open files. If the file name matches one of these special
-names when `gawk' redirects input or output, then it directly uses the
-stream that the file name stands for. These special file names work
-for all operating systems that `gawk' has been ported to, not just
-those that are POSIX-compliant:
+inherited open files. These open files are often referred to by the
+technical term "file descriptor". If the file name matches one of
+these special names when `gawk' redirects input or output, then it
+directly uses the descriptor that the file name stands for. These
+special file names work for all operating systems that `gawk' has been
+ported to, not just those that are POSIX-compliant:
`/dev/stdin'
The standard input (file descriptor 0).
@@ -6911,8 +6913,8 @@ File: gawk.info, Node: Special Caveats, Prev: Special Network, Up: Special Fi
5.7.3 Special File Name Caveats
-------------------------------
-Here is a list of things to bear in mind when using the special file
-names that `gawk' provides:
+Here are some things to bear in mind when using the special file names
+that `gawk' provides:
* Recognition of these special file names is disabled if `gawk' is in
compatibility mode (*note Options::).
@@ -7042,7 +7044,8 @@ addition, `gawk' sets `ERRNO' to a string indicating the error.
Note also that `close(FILENAME)' has no "magic" effects on the
implicit loop that reads through the files named on the command line.
It is, more likely, a close of a file that was never opened with a
-redirection, so `awk' silently does nothing.
+redirection, so `awk' silently does nothing, except return a negative
+value.
When using the `|&' operator to communicate with a coprocess, it is
occasionally useful to be able to close one end of the two-way pipe
@@ -7051,8 +7054,8 @@ to `close()'. As in any other call to `close()', the first argument is
the name of the command or special file used to start the coprocess.
The second argument should be a string, with either of the values
`"to"' or `"from"'. Case does not matter. As this is an advanced
-feature, a more complete discussion is delayed until *note Two-way
-I/O::, which discusses it in more detail and gives an example.
+feature, discussion is delayed until *note Two-way I/O::, which
+describes it in more detail and gives an example.
Using `close()''s Return Value
@@ -7108,13 +7111,13 @@ File: gawk.info, Node: Output Summary, Next: Output Exercises, Prev: Close Fi
flags that modify the behavior of the format control letters.
* Output from both `print' and `printf' may be redirected to files,
- pipes, and co-processes.
+ pipes, and coprocesses.
* `gawk' provides special file names for access to standard input,
output and error, and for network communications.
- * Use `close()' to close open file, pipe and co-process redirections.
- For co-processes, it is possible to close only one direction of the
+ * Use `close()' to close open file, pipe and coprocess redirections.
+ For coprocesses, it is possible to close only one direction of the
communications.
@@ -8314,7 +8317,7 @@ Unless `b' happens to be zero or the null string, the `if' part of the
test always succeeds. Because the operators are so similar, this kind
of error is very difficult to spot when scanning the source code.
- The following table of expressions illustrates the kind of comparison
+ The following list of expressions illustrates the kind of comparison
`gawk' performs, as well as what the result of the comparison is:
`1.5 <= 2.0'
@@ -8680,7 +8683,7 @@ violates the precedence rules; for example, `$$0++--' is not a valid
expression because the first `$' has higher precedence than the `++';
to avoid the problem the expression can be rewritten as `$($0++)--'.
- This table presents `awk''s operators, in order of highest to lowest
+ This list presents `awk''s operators, in order of highest to lowest
precedence:
`('...`)'
@@ -13214,7 +13217,7 @@ Nondecimal-numbers::), and then demonstrates the results of the
(1) This example shows that 0's come in on the left side. For
`gawk', this is always true, but in some languages, it's possible to
-have the left side fill with 1's. Caveat emptor.
+have the left side fill with 1's.

File: gawk.info, Node: Type Functions, Next: I18N Functions, Prev: Bitwise Functions, Up: Built-in
@@ -18597,7 +18600,7 @@ book. We provide some minimal explanations, but see a good shell
programming book if you wish to understand things in more depth.
(2) On some very old versions of `awk', the test `getline junk < t'
-can loop forever if the file exists but is empty. Caveat emptor.
+can loop forever if the file exists but is empty.

File: gawk.info, Node: Anagram Program, Next: Signature Program, Prev: Igawk Program, Up: Miscellaneous Programs
@@ -19274,7 +19277,7 @@ fill in the result array.
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.(1) Caveat Emptor.
+comparisons are based on character values only.(1)
---------- Footnotes ----------
@@ -19734,9 +19737,9 @@ File: gawk.info, Node: Advanced Features Summary, Prev: Profiling, Up: Advanc
`PROCINFO["sorted_in"]'.
* You can use the `|&' operator to create a two-way pipe to a
- co-process. You read from the co-process with `getline' and write
+ coprocess. You read from the coprocess with `getline' and write
to it with `print' or `printf'. Use `close()' to close off the
- co-process completely, or optionally, close off one side of the
+ coprocess completely, or optionally, close off one side of the
two-way communications.
* By using special "file names" with the `|&' operator, you can open
@@ -26989,7 +26992,7 @@ There are two ways to get GNU software:
supported. If you have the `wget' program, you can use a command
like the following:
- wget http://ftp.gnu.org/gnu/gawk/gawk-4.1.1.tar.gz
+ wget http://ftp.gnu.org/gnu/gawk/gawk-4.1.2.tar.gz
The GNU software archive is mirrored around the world. The
up-to-date list of mirror sites is available from the main FSF web site
@@ -27008,25 +27011,25 @@ compression programs: `gzip', `bzip2', and `xz'. For simplicity, the
rest of these instructions assume you are using the one compressed with
the GNU Zip program, `gzip'.
- Once you have the distribution (for example, `gawk-4.1.1.tar.gz'),
+ Once you have the distribution (for example, `gawk-4.1.2.tar.gz'),
use `gzip' to expand the file and then use `tar' to extract it. You
can use the following pipeline to produce the `gawk' distribution:
- gzip -d -c gawk-4.1.1.tar.gz | tar -xvpf -
+ gzip -d -c gawk-4.1.2.tar.gz | tar -xvpf -
On a system with GNU `tar', you can let `tar' do the decompression
for you:
- tar -xvpzf gawk-4.1.1.tar.gz
+ tar -xvpzf gawk-4.1.2.tar.gz
-Extracting the archive creates a directory named `gawk-4.1.1' in the
+Extracting the archive creates a directory named `gawk-4.1.2' in the
current directory.
The distribution file name is of the form `gawk-V.R.P.tar.gz'. The
V represents the major version of `gawk', the R represents the current
release of version V, and the P represents a "patch level", meaning
that minor bugs have been fixed in the release. The current patch
-level is 1, but when retrieving distributions, you should get the
+level is 2, but when retrieving distributions, you should get the
version with the highest version, release, and patch level. (Note,
however, that patch levels greater than or equal to 70 denote "beta" or
nonproduction software; you might not want to retrieve such a version
@@ -27237,7 +27240,7 @@ Unix-derived systems, GNU/Linux, BSD-based systems, and the Cygwin
environment for MS-Windows.
After you have extracted the `gawk' distribution, `cd' to
-`gawk-4.1.1'. Like most GNU software, `gawk' is configured
+`gawk-4.1.2'. Like most GNU software, `gawk' is configured
automatically for your system by running the `configure' program. This
program is a Bourne shell script that is generated automatically using
GNU Autoconf. (The Autoconf software is described fully starting with
@@ -27664,8 +27667,8 @@ GNU tools, such as Bash, the GNU Compiler Collection (GCC), GNU Make,
and other GNU programs. Compilation and installation for Cygwin is the
same as for a Unix system:
- tar -xvpzf gawk-4.1.1.tar.gz
- cd gawk-4.1.1
+ tar -xvpzf gawk-4.1.2.tar.gz
+ cd gawk-4.1.2
./configure
make
@@ -27685,7 +27688,7 @@ use the `BINMODE' variable.
This can cause problems with other Unix-like components that have
been ported to MS-Windows that expect `gawk' to do automatic
-translation of `"\r\n"', since it won't. Caveat Emptor!
+translation of `"\r\n"', since it won't.

File: gawk.info, Node: VMS Installation, Prev: PC Installation, Up: Non-Unix Installation
@@ -28190,9 +28193,9 @@ B.6 Summary
* The `gawk' distribution is available from GNU project's main
distribution site, `ftp.gnu.org'. The canonical build recipe is:
- wget http://ftp.gnu.org/gnu/gawk/gawk-4.1.1.tar.gz
- tar -xvpzf gawk-4.1.1.tar.gz
- cd gawk-4.1.1
+ wget http://ftp.gnu.org/gnu/gawk/gawk-4.1.2.tar.gz
+ tar -xvpzf gawk-4.1.2.tar.gz
+ cd gawk-4.1.2
./configure && make && make check
* `gawk' may be built on non-POSIX systems as well. The currently
@@ -31070,10 +31073,10 @@ Index
* & (ampersand), gsub()/gensub()/sub() functions and: Gory Details.
(line 6)
* ' (single quote): One-shot. (line 15)
-* ' (single quote) in gawk command lines: Long. (line 33)
+* ' (single quote) in gawk command lines: Long. (line 35)
* ' (single quote), in shell commands: Quoting. (line 48)
* ' (single quote), vs. apostrophe: Comments. (line 27)
-* ' (single quote), with double quotes: Quoting. (line 70)
+* ' (single quote), with double quotes: Quoting. (line 73)
* () (parentheses), in a profile: Profiling. (line 146)
* () (parentheses), regexp operator: Regexp Operators. (line 81)
* * (asterisk), * operator, as multiplication operator: Precedence.
@@ -31156,7 +31159,7 @@ Index
* -c option: Options. (line 81)
* -D option: Options. (line 108)
* -d option: Options. (line 93)
-* -e option: Options. (line 333)
+* -e option: Options. (line 334)
* -E option: Options. (line 125)
* -e option: Options. (line 117)
* -f option: Options. (line 25)
@@ -31201,8 +31204,8 @@ Index
(line 148)
* / (forward slash), patterns and: Expression Patterns. (line 24)
* /= operator vs. /=.../ regexp constant: Assignment Ops. (line 148)
-* /dev/... special files: Special FD. (line 46)
-* /dev/fd/N special files (gawk): Special FD. (line 46)
+* /dev/... special files: Special FD. (line 47)
+* /dev/fd/N special files (gawk): Special FD. (line 47)
* /inet/... special files (gawk): TCP/IP Networking. (line 6)
* /inet4/... special files (gawk): TCP/IP Networking. (line 6)
* /inet6/... special files (gawk): TCP/IP Networking. (line 6)
@@ -31275,7 +31278,7 @@ Index
* \ (backslash), \y operator (gawk): GNU Regexp Operators.
(line 38)
* \ (backslash), as field separator: Command Line Field Separator.
- (line 27)
+ (line 24)
* \ (backslash), continuing lines and: Statements/Lines. (line 19)
* \ (backslash), continuing lines and, comments and: Statements/Lines.
(line 76)
@@ -31359,18 +31362,18 @@ Index
* arctangent: Numeric Functions. (line 11)
* ARGC/ARGV variables: Auto-set. (line 15)
* ARGC/ARGV variables, command-line arguments: Other Arguments.
- (line 12)
+ (line 15)
* ARGC/ARGV variables, how to use: ARGC and ARGV. (line 6)
* ARGC/ARGV variables, portability and: Executable Scripts. (line 59)
* ARGIND variable: Auto-set. (line 44)
-* ARGIND variable, command-line arguments: Other Arguments. (line 12)
+* ARGIND variable, command-line arguments: Other Arguments. (line 15)
* arguments, command-line <1>: ARGC and ARGV. (line 6)
* arguments, command-line <2>: Auto-set. (line 15)
* arguments, command-line: Other Arguments. (line 6)
* arguments, command-line, invoking awk: Command Line. (line 6)
* arguments, in function calls: Function Calls. (line 18)
* arguments, processing: Getopt Function. (line 6)
-* ARGV array, indexing into: Other Arguments. (line 12)
+* ARGV array, indexing into: Other Arguments. (line 15)
* arithmetic operators: Arithmetic Ops. (line 6)
* array manipulation in extensions: Array Manipulation. (line 6)
* array members: Reference to Elements.
@@ -31481,7 +31484,7 @@ Index
* awk, gawk and <1>: This Manual. (line 14)
* awk, gawk and: Preface. (line 21)
* awk, history of: History. (line 17)
-* awk, implementation issues, pipes: Redirection. (line 135)
+* awk, implementation issues, pipes: Redirection. (line 129)
* awk, implementations: Other Versions. (line 6)
* awk, implementations, limits: Getline Notes. (line 14)
* awk, invoking: Command Line. (line 6)
@@ -31545,7 +31548,7 @@ Index
* backslash (\), \y operator (gawk): GNU Regexp Operators.
(line 38)
* backslash (\), as field separator: Command Line Field Separator.
- (line 27)
+ (line 24)
* backslash (\), continuing lines and: Statements/Lines. (line 19)
* backslash (\), continuing lines and, comments and: Statements/Lines.
(line 76)
@@ -31742,7 +31745,7 @@ Index
* close() function, portability: Close Files And Pipes.
(line 81)
* close() function, return value: Close Files And Pipes.
- (line 131)
+ (line 132)
* close() function, two-way pipes and: Two-way I/O. (line 59)
* Close, Diane <1>: Contributors. (line 20)
* Close, Diane: Manual History. (line 34)
@@ -31778,9 +31781,9 @@ Index
* commenting, backslash continuation and: Statements/Lines. (line 76)
* common extensions, ** operator: Arithmetic Ops. (line 30)
* common extensions, **= operator: Assignment Ops. (line 137)
-* common extensions, /dev/stderr special file: Special FD. (line 46)
-* common extensions, /dev/stdin special file: Special FD. (line 46)
-* common extensions, /dev/stdout special file: Special FD. (line 46)
+* common extensions, /dev/stderr special file: Special FD. (line 47)
+* common extensions, /dev/stdin special file: Special FD. (line 47)
+* common extensions, /dev/stdout special file: Special FD. (line 47)
* common extensions, \x escape sequence: Escape Sequences. (line 61)
* common extensions, BINMODE variable: PC Using. (line 33)
* common extensions, delete to delete entire arrays: Delete. (line 39)
@@ -31851,7 +31854,7 @@ Index
(line 6)
* cookie: Glossary. (line 149)
* coprocesses <1>: Two-way I/O. (line 25)
-* coprocesses: Redirection. (line 102)
+* coprocesses: Redirection. (line 96)
* coprocesses, closing: Close Files And Pipes.
(line 6)
* coprocesses, getline from: Getline/Coprocess. (line 6)
@@ -31859,7 +31862,7 @@ Index
* cosine: Numeric Functions. (line 15)
* counting: Wc Program. (line 6)
* csh utility: Statements/Lines. (line 44)
-* csh utility, POSIXLY_CORRECT environment variable: Options. (line 351)
+* csh utility, POSIXLY_CORRECT environment variable: Options. (line 352)
* csh utility, |& operator, comparison with: Two-way I/O. (line 25)
* ctime() user-defined function: Function Example. (line 74)
* currency symbols, localization: Explaining gettext. (line 104)
@@ -31884,11 +31887,11 @@ Index
(line 43)
* dark corner, break statement: Break Statement. (line 51)
* dark corner, close() function: Close Files And Pipes.
- (line 131)
+ (line 132)
* dark corner, command-line arguments: Assignment Options. (line 43)
* dark corner, continue statement: Continue Statement. (line 44)
* dark corner, CONVFMT variable: Strings And Numbers. (line 40)
-* dark corner, escape sequences: Other Arguments. (line 35)
+* dark corner, escape sequences: Other Arguments. (line 38)
* dark corner, escape sequences, for metacharacters: Escape Sequences.
(line 142)
* dark corner, exit statement: Exit Statement. (line 30)
@@ -31900,7 +31903,7 @@ Index
* dark corner, format-control characters: Control Letters. (line 18)
* dark corner, FS as null string: Single Character Fields.
(line 20)
-* dark corner, input files: awk split records. (line 110)
+* dark corner, input files: awk split records. (line 111)
* dark corner, invoking awk: Command Line. (line 16)
* dark corner, length() function: String Functions. (line 183)
* dark corner, locale's decimal point character: Locale influences conversions.
@@ -32094,13 +32097,13 @@ Index
* differences in awk and gawk, IGNORECASE variable: User-modified.
(line 76)
* differences in awk and gawk, implementation limitations <1>: Redirection.
- (line 135)
+ (line 129)
* differences in awk and gawk, implementation limitations: Getline Notes.
(line 14)
* differences in awk and gawk, indirect function calls: Indirect Calls.
(line 6)
* differences in awk and gawk, input/output operators <1>: Redirection.
- (line 102)
+ (line 96)
* differences in awk and gawk, input/output operators: Getline/Coprocess.
(line 6)
* differences in awk and gawk, line continuations: Conditional Exp.
@@ -32113,7 +32116,7 @@ Index
* differences in awk and gawk, PROCINFO array: Auto-set. (line 137)
* differences in awk and gawk, read timeouts: Read Timeout. (line 6)
* differences in awk and gawk, record separators: awk split records.
- (line 124)
+ (line 125)
* differences in awk and gawk, regexp constants: Using Constant Regexps.
(line 43)
* differences in awk and gawk, regular expressions: Case-sensitivity.
@@ -32185,7 +32188,7 @@ Index
* empty array elements: Reference to Elements.
(line 18)
* empty pattern: Empty. (line 6)
-* empty strings: awk split records. (line 114)
+* empty strings: awk split records. (line 115)
* empty strings, See null strings: Regexp Field Splitting.
(line 43)
* enable breakpoint: Breakpoint Control. (line 73)
@@ -32227,7 +32230,7 @@ Index
* ERRNO variable: Auto-set. (line 82)
* ERRNO variable, with BEGINFILE pattern: BEGINFILE/ENDFILE. (line 26)
* ERRNO variable, with close() function: Close Files And Pipes.
- (line 139)
+ (line 140)
* ERRNO variable, with getline command: Getline. (line 19)
* error handling: Special FD. (line 16)
* error handling, ERRNO variable and: Auto-set. (line 82)
@@ -32296,9 +32299,9 @@ Index
* extensions, Brian Kernighan's awk: BTL. (line 6)
* extensions, common, ** operator: Arithmetic Ops. (line 30)
* extensions, common, **= operator: Assignment Ops. (line 137)
-* extensions, common, /dev/stderr special file: Special FD. (line 46)
-* extensions, common, /dev/stdin special file: Special FD. (line 46)
-* extensions, common, /dev/stdout special file: Special FD. (line 46)
+* extensions, common, /dev/stderr special file: Special FD. (line 47)
+* extensions, common, /dev/stdin special file: Special FD. (line 47)
+* extensions, common, /dev/stdout special file: Special FD. (line 47)
* extensions, common, \x escape sequence: Escape Sequences. (line 61)
* extensions, common, BINMODE variable: PC Using. (line 33)
* extensions, common, delete to delete entire arrays: Delete. (line 39)
@@ -32365,7 +32368,7 @@ Index
* file inclusion, @include directive: Include Files. (line 8)
* file names, distinguishing: Auto-set. (line 56)
* file names, in compatibility mode: Special Caveats. (line 9)
-* file names, standard streams in gawk: Special FD. (line 46)
+* file names, standard streams in gawk: Special FD. (line 47)
* FILENAME variable <1>: Auto-set. (line 98)
* FILENAME variable: Reading Files. (line 6)
* FILENAME variable, getline, setting with: Getline Notes. (line 19)
@@ -32378,7 +32381,7 @@ Index
* files, .po: Explaining gettext. (line 37)
* files, .po, converting to .mo: I18N Example. (line 63)
* files, .pot: Explaining gettext. (line 31)
-* files, /dev/... special files: Special FD. (line 46)
+* files, /dev/... special files: Special FD. (line 47)
* files, /inet/... (gawk): TCP/IP Networking. (line 6)
* files, /inet4/... (gawk): TCP/IP Networking. (line 6)
* files, /inet6/... (gawk): TCP/IP Networking. (line 6)
@@ -32401,7 +32404,7 @@ Index
(line 47)
* files, message object, specifying directory of: Explaining gettext.
(line 54)
-* files, multiple passes over: Other Arguments. (line 53)
+* files, multiple passes over: Other Arguments. (line 56)
* files, multiple, duplicating output into: Tee Program. (line 6)
* files, output, See output files: Close Files And Pipes.
(line 6)
@@ -32538,7 +32541,7 @@ Index
* Garfinkle, Scott: Contributors. (line 34)
* gawk program, dynamic profiling: Profiling. (line 179)
* gawk version: Auto-set. (line 214)
-* gawk, ARGIND variable in: Other Arguments. (line 12)
+* gawk, ARGIND variable in: Other Arguments. (line 15)
* gawk, awk and <1>: This Manual. (line 14)
* gawk, awk and: Preface. (line 21)
* gawk, bitwise operations in: Bitwise Functions. (line 39)
@@ -32561,7 +32564,7 @@ Index
* gawk, ERRNO variable in <2>: Auto-set. (line 82)
* gawk, ERRNO variable in <3>: BEGINFILE/ENDFILE. (line 26)
* gawk, ERRNO variable in <4>: Close Files And Pipes.
- (line 139)
+ (line 140)
* gawk, ERRNO variable in: Getline. (line 19)
* gawk, escape sequences: Escape Sequences. (line 132)
* gawk, extensions, disabling: Options. (line 252)
@@ -32589,7 +32592,7 @@ Index
* gawk, implementation issues, downward compatibility: Compatibility Mode.
(line 6)
* gawk, implementation issues, limits: Getline Notes. (line 14)
-* gawk, implementation issues, pipes: Redirection. (line 135)
+* gawk, implementation issues, pipes: Redirection. (line 129)
* gawk, installing: Installation. (line 6)
* gawk, internationalization and, See internationalization: Internationalization.
(line 13)
@@ -32616,7 +32619,7 @@ Index
* gawk, regular expressions, precedence: Regexp Operators. (line 161)
* gawk, RT variable in <1>: Auto-set. (line 272)
* gawk, RT variable in <2>: Multiple Line. (line 129)
-* gawk, RT variable in: awk split records. (line 124)
+* gawk, RT variable in: awk split records. (line 125)
* gawk, See Also awk: Preface. (line 34)
* gawk, source code, obtaining: Getting. (line 6)
* gawk, splitting fields and: Constant Size. (line 88)
@@ -32758,7 +32761,7 @@ Index
* Illumos, POSIX-compliant awk: Other Versions. (line 105)
* implementation issues, gawk: Notes. (line 6)
* implementation issues, gawk, debugging: Compatibility Mode. (line 6)
-* implementation issues, gawk, limits <1>: Redirection. (line 135)
+* implementation issues, gawk, limits <1>: Redirection. (line 129)
* implementation issues, gawk, limits: Getline Notes. (line 14)
* in operator <1>: For Statement. (line 75)
* in operator <2>: Precedence. (line 83)
@@ -32789,7 +32792,7 @@ Index
* input files, examples: Sample Data Files. (line 6)
* input files, reading: Reading Files. (line 6)
* input files, running awk without: Read Terminal. (line 6)
-* input files, variable assignments and: Other Arguments. (line 23)
+* input files, variable assignments and: Other Arguments. (line 26)
* input pipeline: Getline/Pipe. (line 9)
* input record, length of: String Functions. (line 174)
* input redirection: Getline/File. (line 6)
@@ -32937,7 +32940,7 @@ Index
* lint checking, empty programs: Command Line. (line 16)
* lint checking, issuing warnings: Options. (line 185)
* lint checking, POSIXLY_CORRECT environment variable: Options.
- (line 336)
+ (line 337)
* lint checking, undefined functions: Pass By Value/Reference.
(line 88)
* LINT variable: User-modified. (line 88)
@@ -33081,8 +33084,8 @@ Index
* null strings <2>: Truth Values. (line 6)
* null strings <3>: Regexp Field Splitting.
(line 43)
-* null strings: awk split records. (line 114)
-* null strings in gawk arguments, quoting and: Quoting. (line 79)
+* null strings: awk split records. (line 115)
+* null strings in gawk arguments, quoting and: Quoting. (line 82)
* null strings, and deleting array elements: Delete. (line 27)
* null strings, as array subscripts: Uninitialized Subscripts.
(line 43)
@@ -33257,7 +33260,7 @@ Index
* portability, NF variable, decrementing: Changing Fields. (line 115)
* portability, operators: Increment Ops. (line 60)
* portability, operators, not in POSIX awk: Precedence. (line 98)
-* portability, POSIXLY_CORRECT environment variable: Options. (line 356)
+* portability, POSIXLY_CORRECT environment variable: Options. (line 357)
* portability, substr() function: String Functions. (line 510)
* portable object files <1>: Translator i18n. (line 6)
* portable object files: Explaining gettext. (line 37)
@@ -33302,7 +33305,7 @@ Index
* POSIX awk, OFMT variable and <1>: Strings And Numbers. (line 57)
* POSIX awk, OFMT variable and: OFMT. (line 27)
* POSIX awk, period (.), using: Regexp Operators. (line 51)
-* POSIX awk, printf format strings and: Format Modifiers. (line 159)
+* POSIX awk, printf format strings and: Format Modifiers. (line 158)
* 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 55)
@@ -33310,7 +33313,7 @@ Index
* POSIX, awk and: Preface. (line 21)
* POSIX, gawk extensions not included in: POSIX/GNU. (line 6)
* POSIX, programs, implementing in awk: Clones. (line 6)
-* POSIXLY_CORRECT environment variable: Options. (line 336)
+* POSIXLY_CORRECT environment variable: Options. (line 337)
* PREC variable: User-modified. (line 124)
* precedence <1>: Precedence. (line 6)
* precedence: Increment Ops. (line 60)
@@ -33407,7 +33410,7 @@ Index
(line 99)
* QUIT signal (MS-Windows): Profiling. (line 214)
* quoting in gawk command lines: Long. (line 26)
-* quoting in gawk command lines, tricks for: Quoting. (line 88)
+* quoting in gawk command lines, tricks for: Quoting. (line 91)
* quoting, for small awk programs: Comments. (line 27)
* r debugger command (alias for run): Debugger Execution Control.
(line 62)
@@ -33442,15 +33445,15 @@ Index
* record separators: awk split records. (line 6)
* record separators, changing: awk split records. (line 85)
* record separators, regular expressions as: awk split records.
- (line 124)
+ (line 125)
* record separators, with multiline records: Multiple Line. (line 10)
* records <1>: Basic High Level. (line 73)
* records: Reading Files. (line 14)
* records, multiline: Multiple Line. (line 6)
* records, printing: Print. (line 22)
* records, splitting input into: Records. (line 6)
-* records, terminating: awk split records. (line 124)
-* records, treating files as: gawk split records. (line 92)
+* records, terminating: awk split records. (line 125)
+* records, treating files as: gawk split records. (line 93)
* recursive functions: Definition Syntax. (line 83)
* redirect gawk output, in debugger: Debugger Info. (line 72)
* redirection of input: Getline/File. (line 6)
@@ -33478,7 +33481,7 @@ Index
* regular expressions, as patterns <1>: Regexp Patterns. (line 6)
* regular expressions, as patterns: Regexp Usage. (line 6)
* regular expressions, as record separators: awk split records.
- (line 124)
+ (line 125)
* regular expressions, case sensitivity <1>: User-modified. (line 76)
* regular expressions, case sensitivity: Case-sensitivity. (line 6)
* regular expressions, computed: Computed Regexps. (line 6)
@@ -33510,7 +33513,7 @@ Index
(line 54)
* return statement, user-defined functions: Return Statement. (line 6)
* return value, close() function: Close Files And Pipes.
- (line 131)
+ (line 132)
* rev() user-defined function: Function Example. (line 54)
* revoutput extension: Extension Sample Revout.
(line 11)
@@ -33539,7 +33542,7 @@ Index
* Robbins, Arnold <6>: Passwd Functions. (line 90)
* Robbins, Arnold <7>: Getline/Pipe. (line 39)
* Robbins, Arnold: Command Line Field Separator.
- (line 74)
+ (line 71)
* Robbins, Bill: Getline/Pipe. (line 39)
* Robbins, Harry: Acknowledgments. (line 92)
* Robbins, Jean: Acknowledgments. (line 92)
@@ -33559,7 +33562,7 @@ Index
* RSTART variable, match() function and: String Functions. (line 224)
* RT variable <1>: Auto-set. (line 272)
* RT variable <2>: Multiple Line. (line 129)
-* RT variable: awk split records. (line 124)
+* RT variable: awk split records. (line 125)
* Rubin, Paul <1>: Contributors. (line 15)
* Rubin, Paul: History. (line 30)
* rule, definition of: Getting Started. (line 21)
@@ -33612,7 +33615,7 @@ Index
* separators, for records <1>: User-modified. (line 133)
* separators, for records: awk split records. (line 6)
* separators, for records, regular expressions as: awk split records.
- (line 124)
+ (line 125)
* separators, for statements in actions: Action Overview. (line 19)
* separators, subscript: User-modified. (line 146)
* set breakpoint: Breakpoint Control. (line 11)
@@ -33623,7 +33626,7 @@ Index
(line 67)
* shadowing of variable values: Definition Syntax. (line 71)
* shell quoting, rules for: Quoting. (line 6)
-* shells, piping commands into: Redirection. (line 142)
+* shells, piping commands into: Redirection. (line 136)
* shells, quoting: Using Shell Variables.
(line 12)
* shells, quoting, rules for: Quoting. (line 18)
@@ -33672,7 +33675,7 @@ Index
(line 107)
* sidebar, Matching the Null String: Gory Details. (line 141)
* sidebar, Operator Evaluation Order: Increment Ops. (line 58)
-* sidebar, Piping into sh: Redirection. (line 140)
+* sidebar, Piping into sh: Redirection. (line 134)
* sidebar, Pre-POSIX awk Used OFMT For String Conversion: Strings And Numbers.
(line 55)
* sidebar, Recipe For A Programming Language: History. (line 6)
@@ -33686,7 +33689,7 @@ Index
* sidebar, Using \n in Bracket Expressions of Dynamic Regexps: Computed Regexps.
(line 57)
* sidebar, Using close()'s Return Value: Close Files And Pipes.
- (line 129)
+ (line 130)
* SIGHUP signal, for dynamic profiling: Profiling. (line 211)
* SIGINT signal (MS-Windows): Profiling. (line 214)
* signals, HUP/SIGHUP, for profiling: Profiling. (line 211)
@@ -33701,10 +33704,10 @@ Index
* sin: Numeric Functions. (line 91)
* sine: Numeric Functions. (line 91)
* single quote ('): One-shot. (line 15)
-* single quote (') in gawk command lines: Long. (line 33)
+* single quote (') in gawk command lines: Long. (line 35)
* single quote ('), in shell commands: Quoting. (line 48)
* single quote ('), vs. apostrophe: Comments. (line 27)
-* single quote ('), with double quotes: Quoting. (line 70)
+* single quote ('), with double quotes: Quoting. (line 73)
* single-character fields: Single Character Fields.
(line 6)
* single-step execution, in the debugger: Debugger Execution Control.
@@ -33793,7 +33796,7 @@ Index
* strings, converting: Strings And Numbers. (line 6)
* strings, converting letter case: String Functions. (line 520)
* strings, converting, numbers to: User-modified. (line 30)
-* strings, empty, See null strings: awk split records. (line 114)
+* strings, empty, See null strings: awk split records. (line 115)
* strings, extracting: String Extraction. (line 6)
* strings, for localization: Programmer i18n. (line 14)
* strings, length limitations: Scalar Constants. (line 20)
@@ -33839,7 +33842,7 @@ Index
* tee utility: Tee Program. (line 6)
* tee.awk program: Tee Program. (line 26)
* temporary breakpoint: Breakpoint Control. (line 90)
-* terminating records: awk split records. (line 124)
+* terminating records: awk split records. (line 125)
* testbits.awk program: Bitwise Functions. (line 70)
* testext extension: Extension Sample API Tests.
(line 6)
@@ -33887,7 +33890,7 @@ Index
* traceback, display in debugger: Execution Stack. (line 13)
* translate string: I18N Functions. (line 22)
* translate.awk program: Translate Program. (line 55)
-* treating files, as single records: gawk split records. (line 92)
+* treating files, as single records: gawk split records. (line 93)
* troubleshooting, --non-decimal-data option: Options. (line 211)
* troubleshooting, == operator: Comparison Operators.
(line 37)
@@ -33898,7 +33901,7 @@ Index
* troubleshooting, fatal errors, field widths, specifying: Constant Size.
(line 23)
* troubleshooting, fatal errors, printf format strings: Format Modifiers.
- (line 159)
+ (line 158)
* troubleshooting, fflush() function: I/O Functions. (line 63)
* troubleshooting, function call syntax: Function Calls. (line 30)
* troubleshooting, gawk: Compatibility Mode. (line 6)
@@ -33910,8 +33913,8 @@ Index
* troubleshooting, match() function: String Functions. (line 289)
* troubleshooting, print statement, omitting commas: Print Examples.
(line 31)
-* troubleshooting, printing: Redirection. (line 118)
-* troubleshooting, quotes with file names: Special FD. (line 68)
+* troubleshooting, printing: Redirection. (line 112)
+* troubleshooting, quotes with file names: Special FD. (line 69)
* troubleshooting, readable data files: File Checking. (line 6)
* troubleshooting, regexp constants vs. string constants: Computed Regexps.
(line 39)
@@ -33951,9 +33954,9 @@ Index
* Unix awk, backslashes in escape sequences: Escape Sequences.
(line 132)
* Unix awk, close() function and: Close Files And Pipes.
- (line 131)
+ (line 132)
* Unix awk, password files, field separators and: Command Line Field Separator.
- (line 65)
+ (line 62)
* Unix, awk scripts and: Executable Scripts. (line 6)
* UNIXROOT variable, on OS/2 systems: PC Using. (line 16)
* unsigned integers: Computer Arithmetic. (line 41)
@@ -33972,7 +33975,7 @@ Index
* USR1 signal, for dynamic profiling: Profiling. (line 188)
* values, numeric: Basic Data Typing. (line 13)
* values, string: Basic Data Typing. (line 13)
-* variable assignments and input files: Other Arguments. (line 23)
+* variable assignments and input files: Other Arguments. (line 26)
* variable typing: Typing and Comparison.
(line 9)
* variables <1>: Basic Data Typing. (line 6)
@@ -34075,10 +34078,10 @@ Index
* | (vertical bar), | operator (I/O): Getline/Pipe. (line 9)
* | (vertical bar), |& operator (I/O) <1>: Two-way I/O. (line 25)
* | (vertical bar), |& operator (I/O) <2>: Precedence. (line 65)
-* | (vertical bar), |& operator (I/O) <3>: Redirection. (line 102)
+* | (vertical bar), |& operator (I/O) <3>: Redirection. (line 96)
* | (vertical bar), |& operator (I/O): Getline/Coprocess. (line 6)
* | (vertical bar), |& operator (I/O), pipes, closing: Close Files And Pipes.
- (line 119)
+ (line 120)
* | (vertical bar), || operator <1>: Precedence. (line 89)
* | (vertical bar), || operator: Boolean Ops. (line 57)
* ~ (tilde), ~ operator <1>: Expression Patterns. (line 24)
@@ -34095,552 +34098,552 @@ Index
Tag Table:
Node: Top1204
Node: Foreword41858
-Node: Preface46203
-Ref: Preface-Footnote-149226
-Ref: Preface-Footnote-249333
-Node: History49565
-Node: Names51939
-Ref: Names-Footnote-153033
-Node: This Manual53179
-Ref: This Manual-Footnote-158958
-Node: Conventions59058
-Node: Manual History61403
-Ref: Manual History-Footnote-164479
-Ref: Manual History-Footnote-264520
-Node: How To Contribute64594
-Node: Acknowledgments65833
-Node: Getting Started70581
-Node: Running gawk73015
-Node: One-shot74205
-Node: Read Terminal75430
-Node: Long77455
-Node: Executable Scripts78849
-Ref: Executable Scripts-Footnote-181650
-Node: Comments81752
-Node: Quoting84225
-Node: DOS Quoting89538
-Node: Sample Data Files90213
-Node: Very Simple92820
-Node: Two Rules97705
-Node: More Complex99599
-Ref: More Complex-Footnote-1102513
-Node: Statements/Lines102598
-Ref: Statements/Lines-Footnote-1107054
-Node: Other Features107319
-Node: When108250
-Ref: When-Footnote-1110006
-Node: Intro Summary110071
-Node: Invoking Gawk110954
-Node: Command Line112469
-Node: Options113260
-Ref: Options-Footnote-1128907
-Node: Other Arguments128932
-Node: Naming Standard Input131760
-Node: Environment Variables132853
-Node: AWKPATH Variable133411
-Ref: AWKPATH Variable-Footnote-1136277
-Ref: AWKPATH Variable-Footnote-2136322
-Node: AWKLIBPATH Variable136582
-Node: Other Environment Variables137341
-Node: Exit Status140793
-Node: Include Files141468
-Node: Loading Shared Libraries145046
-Node: Obsolete146430
-Node: Undocumented147127
-Node: Invoking Summary147394
-Node: Regexp148994
-Node: Regexp Usage150453
-Node: Escape Sequences152486
-Node: Regexp Operators158557
-Ref: Regexp Operators-Footnote-1165988
-Ref: Regexp Operators-Footnote-2166135
-Node: Bracket Expressions166233
-Ref: table-char-classes168251
-Node: Leftmost Longest171191
-Node: Computed Regexps172395
-Node: GNU Regexp Operators175773
-Node: Case-sensitivity179479
-Ref: Case-sensitivity-Footnote-1182369
-Ref: Case-sensitivity-Footnote-2182604
-Node: Regexp Summary182712
-Node: Reading Files184181
-Node: Records186273
-Node: awk split records186995
-Node: gawk split records191853
-Ref: gawk split records-Footnote-1196374
-Node: Fields196411
-Ref: Fields-Footnote-1199375
-Node: Nonconstant Fields199461
-Ref: Nonconstant Fields-Footnote-1201691
-Node: Changing Fields201893
-Node: Field Separators207847
-Node: Default Field Splitting210549
-Node: Regexp Field Splitting211666
-Node: Single Character Fields214993
-Node: Command Line Field Separator216052
-Node: Full Line Fields219478
-Ref: Full Line Fields-Footnote-1219986
-Node: Field Splitting Summary220032
-Ref: Field Splitting Summary-Footnote-1223164
-Node: Constant Size223265
-Node: Splitting By Content227871
-Ref: Splitting By Content-Footnote-1231944
-Node: Multiple Line231984
-Ref: Multiple Line-Footnote-1237840
-Node: Getline238019
-Node: Plain Getline240230
-Node: Getline/Variable242936
-Node: Getline/File244083
-Node: Getline/Variable/File245467
-Ref: Getline/Variable/File-Footnote-1247066
-Node: Getline/Pipe247153
-Node: Getline/Variable/Pipe249839
-Node: Getline/Coprocess250946
-Node: Getline/Variable/Coprocess252198
-Node: Getline Notes252935
-Node: Getline Summary255739
-Ref: table-getline-variants256147
-Node: Read Timeout257059
-Ref: Read Timeout-Footnote-1260886
-Node: Command-line directories260944
-Node: Input Summary261848
-Node: Input Exercises264985
-Node: Printing265713
-Node: Print267435
-Node: Print Examples268928
-Node: Output Separators271707
-Node: OFMT273723
-Node: Printf275081
-Node: Basic Printf275987
-Node: Control Letters277526
-Node: Format Modifiers281517
-Node: Printf Examples287544
-Node: Redirection290008
-Node: Special Files296980
-Node: Special FD297513
-Ref: Special FD-Footnote-1301110
-Node: Special Network301184
-Node: Special Caveats302034
-Node: Close Files And Pipes302830
-Ref: Close Files And Pipes-Footnote-1309991
-Ref: Close Files And Pipes-Footnote-2310139
-Node: Output Summary310289
-Node: Output Exercises311286
-Node: Expressions311966
-Node: Values313151
-Node: Constants313827
-Node: Scalar Constants314507
-Ref: Scalar Constants-Footnote-1315366
-Node: Nondecimal-numbers315616
-Node: Regexp Constants318616
-Node: Using Constant Regexps319141
-Node: Variables322213
-Node: Using Variables322868
-Node: Assignment Options324774
-Node: Conversion326649
-Node: Strings And Numbers327173
-Ref: Strings And Numbers-Footnote-1330235
-Node: Locale influences conversions330344
-Ref: table-locale-affects333061
-Node: All Operators333649
-Node: Arithmetic Ops334279
-Node: Concatenation336784
-Ref: Concatenation-Footnote-1339603
-Node: Assignment Ops339709
-Ref: table-assign-ops344692
-Node: Increment Ops345995
-Node: Truth Values and Conditions349433
-Node: Truth Values350516
-Node: Typing and Comparison351565
-Node: Variable Typing352358
-Node: Comparison Operators356010
-Ref: table-relational-ops356420
-Node: POSIX String Comparison359970
-Ref: POSIX String Comparison-Footnote-1361054
-Node: Boolean Ops361192
-Ref: Boolean Ops-Footnote-1365531
-Node: Conditional Exp365622
-Node: Function Calls367349
-Node: Precedence371229
-Node: Locales374898
-Node: Expressions Summary376529
-Node: Patterns and Actions379070
-Node: Pattern Overview380186
-Node: Regexp Patterns381863
-Node: Expression Patterns382406
-Node: Ranges386186
-Node: BEGIN/END389292
-Node: Using BEGIN/END390054
-Ref: Using BEGIN/END-Footnote-1392790
-Node: I/O And BEGIN/END392896
-Node: BEGINFILE/ENDFILE395167
-Node: Empty398098
-Node: Using Shell Variables398415
-Node: Action Overview400698
-Node: Statements403025
-Node: If Statement404873
-Node: While Statement406371
-Node: Do Statement408415
-Node: For Statement409571
-Node: Switch Statement412723
-Node: Break Statement415111
-Node: Continue Statement417152
-Node: Next Statement418977
-Node: Nextfile Statement421347
-Node: Exit Statement424004
-Node: Built-in Variables426408
-Node: User-modified427535
-Ref: User-modified-Footnote-1435224
-Node: Auto-set435286
-Ref: Auto-set-Footnote-1448475
-Ref: Auto-set-Footnote-2448680
-Node: ARGC and ARGV448736
-Node: Pattern Action Summary452640
-Node: Arrays454863
-Node: Array Basics456412
-Node: Array Intro457238
-Ref: figure-array-elements459211
-Ref: Array Intro-Footnote-1461735
-Node: Reference to Elements461863
-Node: Assigning Elements464313
-Node: Array Example464804
-Node: Scanning an Array466536
-Node: Controlling Scanning469537
-Ref: Controlling Scanning-Footnote-1474710
-Node: Delete475026
-Ref: Delete-Footnote-1477777
-Node: Numeric Array Subscripts477834
-Node: Uninitialized Subscripts480017
-Node: Multidimensional481644
-Node: Multiscanning484757
-Node: Arrays of Arrays486346
-Node: Arrays Summary491009
-Node: Functions493114
-Node: Built-in493987
-Node: Calling Built-in495065
-Node: Numeric Functions497053
-Ref: Numeric Functions-Footnote-1501889
-Ref: Numeric Functions-Footnote-2502246
-Ref: Numeric Functions-Footnote-3502294
-Node: String Functions502563
-Ref: String Functions-Footnote-1525560
-Ref: String Functions-Footnote-2525689
-Ref: String Functions-Footnote-3525937
-Node: Gory Details526024
-Ref: table-sub-escapes527797
-Ref: table-sub-proposed529317
-Ref: table-posix-sub530681
-Ref: table-gensub-escapes532221
-Ref: Gory Details-Footnote-1533397
-Node: I/O Functions533548
-Ref: I/O Functions-Footnote-1540658
-Node: Time Functions540805
-Ref: Time Functions-Footnote-1551269
-Ref: Time Functions-Footnote-2551337
-Ref: Time Functions-Footnote-3551495
-Ref: Time Functions-Footnote-4551606
-Ref: Time Functions-Footnote-5551718
-Ref: Time Functions-Footnote-6551945
-Node: Bitwise Functions552211
-Ref: table-bitwise-ops552773
-Ref: Bitwise Functions-Footnote-1557018
-Node: Type Functions557202
-Node: I18N Functions558344
-Node: User-defined559989
-Node: Definition Syntax560793
-Ref: Definition Syntax-Footnote-1566197
-Node: Function Example566266
-Ref: Function Example-Footnote-1568906
-Node: Function Caveats568928
-Node: Calling A Function569446
-Node: Variable Scope570401
-Node: Pass By Value/Reference573389
-Node: Return Statement576899
-Node: Dynamic Typing579883
-Node: Indirect Calls580812
-Ref: Indirect Calls-Footnote-1590528
-Node: Functions Summary590656
-Node: Library Functions593306
-Ref: Library Functions-Footnote-1596924
-Ref: Library Functions-Footnote-2597067
-Node: Library Names597238
-Ref: Library Names-Footnote-1600711
-Ref: Library Names-Footnote-2600931
-Node: General Functions601017
-Node: Strtonum Function602045
-Node: Assert Function604947
-Node: Round Function608273
-Node: Cliff Random Function609814
-Node: Ordinal Functions610830
-Ref: Ordinal Functions-Footnote-1613895
-Ref: Ordinal Functions-Footnote-2614147
-Node: Join Function614358
-Ref: Join Function-Footnote-1616129
-Node: Getlocaltime Function616329
-Node: Readfile Function620065
-Node: Data File Management621904
-Node: Filetrans Function622536
-Node: Rewind Function626605
-Node: File Checking628163
-Ref: File Checking-Footnote-1629295
-Node: Empty Files629496
-Node: Ignoring Assigns631475
-Node: Getopt Function633029
-Ref: Getopt Function-Footnote-1644293
-Node: Passwd Functions644496
-Ref: Passwd Functions-Footnote-1653475
-Node: Group Functions653563
-Ref: Group Functions-Footnote-1661494
-Node: Walking Arrays661707
-Node: Library Functions Summary663310
-Node: Library Exercises664698
-Node: Sample Programs665978
-Node: Running Examples666748
-Node: Clones667476
-Node: Cut Program668700
-Node: Egrep Program678558
-Ref: Egrep Program-Footnote-1686145
-Node: Id Program686255
-Node: Split Program689909
-Ref: Split Program-Footnote-1693447
-Node: Tee Program693575
-Node: Uniq Program696362
-Node: Wc Program703785
-Ref: Wc Program-Footnote-1708050
-Node: Miscellaneous Programs708142
-Node: Dupword Program709355
-Node: Alarm Program711386
-Node: Translate Program716190
-Ref: Translate Program-Footnote-1720763
-Ref: Translate Program-Footnote-2721033
-Node: Labels Program721172
-Ref: Labels Program-Footnote-1724533
-Node: Word Sorting724617
-Node: History Sorting728660
-Node: Extract Program730496
-Node: Simple Sed738032
-Node: Igawk Program741094
-Ref: Igawk Program-Footnote-1755398
-Ref: Igawk Program-Footnote-2755599
-Node: Anagram Program755737
-Node: Signature Program758805
-Node: Programs Summary760052
-Node: Programs Exercises761267
-Ref: Programs Exercises-Footnote-1765398
-Node: Advanced Features765489
-Node: Nondecimal Data767437
-Node: Array Sorting769014
-Node: Controlling Array Traversal769711
-Node: Array Sorting Functions777991
-Ref: Array Sorting Functions-Footnote-1781898
-Node: Two-way I/O782092
-Ref: Two-way I/O-Footnote-1787036
-Ref: Two-way I/O-Footnote-2787215
-Node: TCP/IP Networking787297
-Node: Profiling790139
-Node: Advanced Features Summary797690
-Node: Internationalization799554
-Node: I18N and L10N801034
-Node: Explaining gettext801720
-Ref: Explaining gettext-Footnote-1806746
-Ref: Explaining gettext-Footnote-2806930
-Node: Programmer i18n807095
-Ref: Programmer i18n-Footnote-1811889
-Node: Translator i18n811938
-Node: String Extraction812732
-Ref: String Extraction-Footnote-1813865
-Node: Printf Ordering813951
-Ref: Printf Ordering-Footnote-1816733
-Node: I18N Portability816797
-Ref: I18N Portability-Footnote-1819246
-Node: I18N Example819309
-Ref: I18N Example-Footnote-1822015
-Node: Gawk I18N822087
-Node: I18N Summary822725
-Node: Debugger824064
-Node: Debugging825086
-Node: Debugging Concepts825527
-Node: Debugging Terms827383
-Node: Awk Debugging829980
-Node: Sample Debugging Session830872
-Node: Debugger Invocation831392
-Node: Finding The Bug832728
-Node: List of Debugger Commands839207
-Node: Breakpoint Control840539
-Node: Debugger Execution Control844203
-Node: Viewing And Changing Data847563
-Node: Execution Stack850921
-Node: Debugger Info852434
-Node: Miscellaneous Debugger Commands856428
-Node: Readline Support861612
-Node: Limitations862504
-Node: Debugging Summary864777
-Node: Arbitrary Precision Arithmetic865945
-Node: Computer Arithmetic867432
-Ref: Computer Arithmetic-Footnote-1871819
-Node: Math Definitions871876
-Ref: table-ieee-formats875165
-Ref: Math Definitions-Footnote-1875705
-Node: MPFR features875808
-Node: FP Math Caution877425
-Ref: FP Math Caution-Footnote-1878475
-Node: Inexactness of computations878844
-Node: Inexact representation879792
-Node: Comparing FP Values881147
-Node: Errors accumulate882111
-Node: Getting Accuracy883544
-Node: Try To Round886203
-Node: Setting precision887102
-Ref: table-predefined-precision-strings887784
-Node: Setting the rounding mode889577
-Ref: table-gawk-rounding-modes889941
-Ref: Setting the rounding mode-Footnote-1893395
-Node: Arbitrary Precision Integers893574
-Ref: Arbitrary Precision Integers-Footnote-1897347
-Node: POSIX Floating Point Problems897496
-Ref: POSIX Floating Point Problems-Footnote-1901372
-Node: Floating point summary901410
-Node: Dynamic Extensions903614
-Node: Extension Intro905166
-Node: Plugin License906431
-Node: Extension Mechanism Outline907116
-Ref: figure-load-extension907540
-Ref: figure-load-new-function909025
-Ref: figure-call-new-function910027
-Node: Extension API Description912011
-Node: Extension API Functions Introduction913461
-Node: General Data Types918328
-Ref: General Data Types-Footnote-1924021
-Node: Requesting Values924320
-Ref: table-value-types-returned925057
-Node: Memory Allocation Functions926015
-Ref: Memory Allocation Functions-Footnote-1928762
-Node: Constructor Functions928858
-Node: Registration Functions930616
-Node: Extension Functions931301
-Node: Exit Callback Functions933603
-Node: Extension Version String934851
-Node: Input Parsers935501
-Node: Output Wrappers945315
-Node: Two-way processors949831
-Node: Printing Messages952035
-Ref: Printing Messages-Footnote-1953112
-Node: Updating `ERRNO'953264
-Node: Accessing Parameters954003
-Node: Symbol Table Access955233
-Node: Symbol table by name955747
-Node: Symbol table by cookie957723
-Ref: Symbol table by cookie-Footnote-1961856
-Node: Cached values961919
-Ref: Cached values-Footnote-1965423
-Node: Array Manipulation965514
-Ref: Array Manipulation-Footnote-1966612
-Node: Array Data Types966651
-Ref: Array Data Types-Footnote-1969354
-Node: Array Functions969446
-Node: Flattening Arrays973320
-Node: Creating Arrays980172
-Node: Extension API Variables984903
-Node: Extension Versioning985539
-Node: Extension API Informational Variables987440
-Node: Extension API Boilerplate988526
-Node: Finding Extensions992330
-Node: Extension Example992890
-Node: Internal File Description993620
-Node: Internal File Ops997711
-Ref: Internal File Ops-Footnote-11009143
-Node: Using Internal File Ops1009283
-Ref: Using Internal File Ops-Footnote-11011630
-Node: Extension Samples1011898
-Node: Extension Sample File Functions1013422
-Node: Extension Sample Fnmatch1020990
-Node: Extension Sample Fork1022472
-Node: Extension Sample Inplace1023685
-Node: Extension Sample Ord1025360
-Node: Extension Sample Readdir1026196
-Ref: table-readdir-file-types1027052
-Node: Extension Sample Revout1027851
-Node: Extension Sample Rev2way1028442
-Node: Extension Sample Read write array1029183
-Node: Extension Sample Readfile1031062
-Node: Extension Sample API Tests1032162
-Node: Extension Sample Time1032687
-Node: gawkextlib1034002
-Node: Extension summary1036815
-Node: Extension Exercises1040508
-Node: Language History1041230
-Node: V7/SVR3.11042873
-Node: SVR41045193
-Node: POSIX1046635
-Node: BTL1048021
-Node: POSIX/GNU1048755
-Node: Feature History1054531
-Node: Common Extensions1067622
-Node: Ranges and Locales1068934
-Ref: Ranges and Locales-Footnote-11073551
-Ref: Ranges and Locales-Footnote-21073578
-Ref: Ranges and Locales-Footnote-31073812
-Node: Contributors1074033
-Node: History summary1079458
-Node: Installation1080827
-Node: Gawk Distribution1081778
-Node: Getting1082262
-Node: Extracting1083086
-Node: Distribution contents1084728
-Node: Unix Installation1090498
-Node: Quick Installation1091115
-Node: Additional Configuration Options1093557
-Node: Configuration Philosophy1095295
-Node: Non-Unix Installation1097646
-Node: PC Installation1098104
-Node: PC Binary Installation1099415
-Node: PC Compiling1101263
-Ref: PC Compiling-Footnote-11104262
-Node: PC Testing1104367
-Node: PC Using1105543
-Node: Cygwin1109695
-Node: MSYS1110504
-Node: VMS Installation1111018
-Node: VMS Compilation1111814
-Ref: VMS Compilation-Footnote-11113036
-Node: VMS Dynamic Extensions1113094
-Node: VMS Installation Details1114467
-Node: VMS Running1116719
-Node: VMS GNV1119553
-Node: VMS Old Gawk1120276
-Node: Bugs1120746
-Node: Other Versions1124750
-Node: Installation summary1130974
-Node: Notes1132030
-Node: Compatibility Mode1132895
-Node: Additions1133677
-Node: Accessing The Source1134602
-Node: Adding Code1136038
-Node: New Ports1142216
-Node: Derived Files1146697
-Ref: Derived Files-Footnote-11152172
-Ref: Derived Files-Footnote-21152206
-Ref: Derived Files-Footnote-31152802
-Node: Future Extensions1152916
-Node: Implementation Limitations1153522
-Node: Extension Design1154770
-Node: Old Extension Problems1155924
-Ref: Old Extension Problems-Footnote-11157441
-Node: Extension New Mechanism Goals1157498
-Ref: Extension New Mechanism Goals-Footnote-11160858
-Node: Extension Other Design Decisions1161047
-Node: Extension Future Growth1163153
-Node: Old Extension Mechanism1163989
-Node: Notes summary1165751
-Node: Basic Concepts1166937
-Node: Basic High Level1167618
-Ref: figure-general-flow1167890
-Ref: figure-process-flow1168489
-Ref: Basic High Level-Footnote-11171718
-Node: Basic Data Typing1171903
-Node: Glossary1175231
-Node: Copying1200383
-Node: GNU Free Documentation License1237939
-Node: Index1263075
+Node: Preface46205
+Ref: Preface-Footnote-149100
+Ref: Preface-Footnote-249207
+Ref: Preface-Footnote-349440
+Node: History49582
+Node: Names51956
+Ref: Names-Footnote-153050
+Node: This Manual53196
+Ref: This Manual-Footnote-159031
+Node: Conventions59131
+Node: Manual History61476
+Ref: Manual History-Footnote-164552
+Ref: Manual History-Footnote-264593
+Node: How To Contribute64667
+Node: Acknowledgments65906
+Node: Getting Started70654
+Node: Running gawk73088
+Node: One-shot74278
+Node: Read Terminal75503
+Node: Long77530
+Node: Executable Scripts79046
+Ref: Executable Scripts-Footnote-181835
+Node: Comments81937
+Node: Quoting84410
+Node: DOS Quoting89920
+Node: Sample Data Files90595
+Node: Very Simple93188
+Node: Two Rules98079
+Node: More Complex99965
+Node: Statements/Lines102827
+Ref: Statements/Lines-Footnote-1107283
+Node: Other Features107548
+Node: When108479
+Ref: When-Footnote-1110235
+Node: Intro Summary110300
+Node: Invoking Gawk111183
+Node: Command Line112698
+Node: Options113489
+Ref: Options-Footnote-1129187
+Node: Other Arguments129212
+Node: Naming Standard Input132173
+Node: Environment Variables133266
+Node: AWKPATH Variable133824
+Ref: AWKPATH Variable-Footnote-1136676
+Ref: AWKPATH Variable-Footnote-2136721
+Node: AWKLIBPATH Variable136981
+Node: Other Environment Variables137740
+Node: Exit Status141213
+Node: Include Files141888
+Node: Loading Shared Libraries145466
+Node: Obsolete146893
+Node: Undocumented147590
+Node: Invoking Summary147857
+Node: Regexp149523
+Node: Regexp Usage150982
+Node: Escape Sequences153015
+Node: Regexp Operators159115
+Ref: Regexp Operators-Footnote-1166550
+Ref: Regexp Operators-Footnote-2166697
+Node: Bracket Expressions166795
+Ref: table-char-classes168812
+Node: Leftmost Longest171752
+Node: Computed Regexps173054
+Node: GNU Regexp Operators176451
+Node: Case-sensitivity180157
+Ref: Case-sensitivity-Footnote-1183047
+Ref: Case-sensitivity-Footnote-2183282
+Node: Regexp Summary183390
+Node: Reading Files184859
+Node: Records186951
+Node: awk split records187679
+Node: gawk split records192591
+Ref: gawk split records-Footnote-1197130
+Node: Fields197167
+Ref: Fields-Footnote-1199963
+Node: Nonconstant Fields200049
+Ref: Nonconstant Fields-Footnote-1202279
+Node: Changing Fields202481
+Node: Field Separators208413
+Node: Default Field Splitting211115
+Node: Regexp Field Splitting212232
+Node: Single Character Fields215582
+Node: Command Line Field Separator216641
+Node: Full Line Fields219851
+Ref: Full Line Fields-Footnote-1220359
+Node: Field Splitting Summary220405
+Ref: Field Splitting Summary-Footnote-1223536
+Node: Constant Size223637
+Node: Splitting By Content228243
+Ref: Splitting By Content-Footnote-1232316
+Node: Multiple Line232356
+Ref: Multiple Line-Footnote-1238245
+Node: Getline238424
+Node: Plain Getline240635
+Node: Getline/Variable243275
+Node: Getline/File244422
+Node: Getline/Variable/File245806
+Ref: Getline/Variable/File-Footnote-1247405
+Node: Getline/Pipe247492
+Node: Getline/Variable/Pipe250175
+Node: Getline/Coprocess251304
+Node: Getline/Variable/Coprocess252556
+Node: Getline Notes253293
+Node: Getline Summary256085
+Ref: table-getline-variants256493
+Node: Read Timeout257322
+Ref: Read Timeout-Footnote-1261136
+Node: Command-line directories261194
+Node: Input Summary262098
+Node: Input Exercises265350
+Node: Printing266078
+Node: Print267800
+Node: Print Examples269257
+Node: Output Separators272036
+Node: OFMT274052
+Node: Printf275404
+Node: Basic Printf276189
+Node: Control Letters277760
+Node: Format Modifiers281744
+Node: Printf Examples287751
+Node: Redirection290233
+Node: Special Files296967
+Node: Special FD297500
+Ref: Special FD-Footnote-1301194
+Node: Special Network301268
+Node: Special Caveats302118
+Node: Close Files And Pipes302910
+Ref: Close Files And Pipes-Footnote-1310087
+Ref: Close Files And Pipes-Footnote-2310235
+Node: Output Summary310385
+Node: Output Exercises311379
+Node: Expressions312059
+Node: Values313244
+Node: Constants313920
+Node: Scalar Constants314600
+Ref: Scalar Constants-Footnote-1315459
+Node: Nondecimal-numbers315709
+Node: Regexp Constants318709
+Node: Using Constant Regexps319234
+Node: Variables322306
+Node: Using Variables322961
+Node: Assignment Options324867
+Node: Conversion326742
+Node: Strings And Numbers327266
+Ref: Strings And Numbers-Footnote-1330328
+Node: Locale influences conversions330437
+Ref: table-locale-affects333154
+Node: All Operators333742
+Node: Arithmetic Ops334372
+Node: Concatenation336877
+Ref: Concatenation-Footnote-1339696
+Node: Assignment Ops339802
+Ref: table-assign-ops344785
+Node: Increment Ops346088
+Node: Truth Values and Conditions349526
+Node: Truth Values350609
+Node: Typing and Comparison351658
+Node: Variable Typing352451
+Node: Comparison Operators356103
+Ref: table-relational-ops356513
+Node: POSIX String Comparison360062
+Ref: POSIX String Comparison-Footnote-1361146
+Node: Boolean Ops361284
+Ref: Boolean Ops-Footnote-1365623
+Node: Conditional Exp365714
+Node: Function Calls367441
+Node: Precedence371321
+Node: Locales374989
+Node: Expressions Summary376620
+Node: Patterns and Actions379161
+Node: Pattern Overview380277
+Node: Regexp Patterns381954
+Node: Expression Patterns382497
+Node: Ranges386277
+Node: BEGIN/END389383
+Node: Using BEGIN/END390145
+Ref: Using BEGIN/END-Footnote-1392881
+Node: I/O And BEGIN/END392987
+Node: BEGINFILE/ENDFILE395258
+Node: Empty398189
+Node: Using Shell Variables398506
+Node: Action Overview400789
+Node: Statements403116
+Node: If Statement404964
+Node: While Statement406462
+Node: Do Statement408506
+Node: For Statement409662
+Node: Switch Statement412814
+Node: Break Statement415202
+Node: Continue Statement417243
+Node: Next Statement419068
+Node: Nextfile Statement421438
+Node: Exit Statement424095
+Node: Built-in Variables426499
+Node: User-modified427626
+Ref: User-modified-Footnote-1435315
+Node: Auto-set435377
+Ref: Auto-set-Footnote-1448566
+Ref: Auto-set-Footnote-2448771
+Node: ARGC and ARGV448827
+Node: Pattern Action Summary452731
+Node: Arrays454954
+Node: Array Basics456503
+Node: Array Intro457329
+Ref: figure-array-elements459302
+Ref: Array Intro-Footnote-1461826
+Node: Reference to Elements461954
+Node: Assigning Elements464404
+Node: Array Example464895
+Node: Scanning an Array466627
+Node: Controlling Scanning469628
+Ref: Controlling Scanning-Footnote-1474801
+Node: Delete475117
+Ref: Delete-Footnote-1477868
+Node: Numeric Array Subscripts477925
+Node: Uninitialized Subscripts480108
+Node: Multidimensional481735
+Node: Multiscanning484848
+Node: Arrays of Arrays486437
+Node: Arrays Summary491100
+Node: Functions493205
+Node: Built-in494078
+Node: Calling Built-in495156
+Node: Numeric Functions497144
+Ref: Numeric Functions-Footnote-1501980
+Ref: Numeric Functions-Footnote-2502337
+Ref: Numeric Functions-Footnote-3502385
+Node: String Functions502654
+Ref: String Functions-Footnote-1525651
+Ref: String Functions-Footnote-2525780
+Ref: String Functions-Footnote-3526028
+Node: Gory Details526115
+Ref: table-sub-escapes527888
+Ref: table-sub-proposed529408
+Ref: table-posix-sub530772
+Ref: table-gensub-escapes532312
+Ref: Gory Details-Footnote-1533488
+Node: I/O Functions533639
+Ref: I/O Functions-Footnote-1540749
+Node: Time Functions540896
+Ref: Time Functions-Footnote-1551360
+Ref: Time Functions-Footnote-2551428
+Ref: Time Functions-Footnote-3551586
+Ref: Time Functions-Footnote-4551697
+Ref: Time Functions-Footnote-5551809
+Ref: Time Functions-Footnote-6552036
+Node: Bitwise Functions552302
+Ref: table-bitwise-ops552864
+Ref: Bitwise Functions-Footnote-1557109
+Node: Type Functions557278
+Node: I18N Functions558420
+Node: User-defined560065
+Node: Definition Syntax560869
+Ref: Definition Syntax-Footnote-1566273
+Node: Function Example566342
+Ref: Function Example-Footnote-1568982
+Node: Function Caveats569004
+Node: Calling A Function569522
+Node: Variable Scope570477
+Node: Pass By Value/Reference573465
+Node: Return Statement576975
+Node: Dynamic Typing579959
+Node: Indirect Calls580888
+Ref: Indirect Calls-Footnote-1590604
+Node: Functions Summary590732
+Node: Library Functions593382
+Ref: Library Functions-Footnote-1597000
+Ref: Library Functions-Footnote-2597143
+Node: Library Names597314
+Ref: Library Names-Footnote-1600787
+Ref: Library Names-Footnote-2601007
+Node: General Functions601093
+Node: Strtonum Function602121
+Node: Assert Function605023
+Node: Round Function608349
+Node: Cliff Random Function609890
+Node: Ordinal Functions610906
+Ref: Ordinal Functions-Footnote-1613971
+Ref: Ordinal Functions-Footnote-2614223
+Node: Join Function614434
+Ref: Join Function-Footnote-1616205
+Node: Getlocaltime Function616405
+Node: Readfile Function620141
+Node: Data File Management621980
+Node: Filetrans Function622612
+Node: Rewind Function626681
+Node: File Checking628239
+Ref: File Checking-Footnote-1629371
+Node: Empty Files629572
+Node: Ignoring Assigns631551
+Node: Getopt Function633105
+Ref: Getopt Function-Footnote-1644369
+Node: Passwd Functions644572
+Ref: Passwd Functions-Footnote-1653551
+Node: Group Functions653639
+Ref: Group Functions-Footnote-1661570
+Node: Walking Arrays661783
+Node: Library Functions Summary663386
+Node: Library Exercises664774
+Node: Sample Programs666054
+Node: Running Examples666824
+Node: Clones667552
+Node: Cut Program668776
+Node: Egrep Program678634
+Ref: Egrep Program-Footnote-1686221
+Node: Id Program686331
+Node: Split Program689985
+Ref: Split Program-Footnote-1693523
+Node: Tee Program693651
+Node: Uniq Program696438
+Node: Wc Program703861
+Ref: Wc Program-Footnote-1708126
+Node: Miscellaneous Programs708218
+Node: Dupword Program709431
+Node: Alarm Program711462
+Node: Translate Program716266
+Ref: Translate Program-Footnote-1720839
+Ref: Translate Program-Footnote-2721109
+Node: Labels Program721248
+Ref: Labels Program-Footnote-1724609
+Node: Word Sorting724693
+Node: History Sorting728736
+Node: Extract Program730572
+Node: Simple Sed738108
+Node: Igawk Program741170
+Ref: Igawk Program-Footnote-1755474
+Ref: Igawk Program-Footnote-2755675
+Node: Anagram Program755797
+Node: Signature Program758865
+Node: Programs Summary760112
+Node: Programs Exercises761327
+Ref: Programs Exercises-Footnote-1765458
+Node: Advanced Features765549
+Node: Nondecimal Data767497
+Node: Array Sorting769074
+Node: Controlling Array Traversal769771
+Node: Array Sorting Functions778051
+Ref: Array Sorting Functions-Footnote-1781943
+Node: Two-way I/O782137
+Ref: Two-way I/O-Footnote-1787081
+Ref: Two-way I/O-Footnote-2787260
+Node: TCP/IP Networking787342
+Node: Profiling790184
+Node: Advanced Features Summary797735
+Node: Internationalization799596
+Node: I18N and L10N801076
+Node: Explaining gettext801762
+Ref: Explaining gettext-Footnote-1806788
+Ref: Explaining gettext-Footnote-2806972
+Node: Programmer i18n807137
+Ref: Programmer i18n-Footnote-1811931
+Node: Translator i18n811980
+Node: String Extraction812774
+Ref: String Extraction-Footnote-1813907
+Node: Printf Ordering813993
+Ref: Printf Ordering-Footnote-1816775
+Node: I18N Portability816839
+Ref: I18N Portability-Footnote-1819288
+Node: I18N Example819351
+Ref: I18N Example-Footnote-1822057
+Node: Gawk I18N822129
+Node: I18N Summary822767
+Node: Debugger824106
+Node: Debugging825128
+Node: Debugging Concepts825569
+Node: Debugging Terms827425
+Node: Awk Debugging830022
+Node: Sample Debugging Session830914
+Node: Debugger Invocation831434
+Node: Finding The Bug832770
+Node: List of Debugger Commands839249
+Node: Breakpoint Control840581
+Node: Debugger Execution Control844245
+Node: Viewing And Changing Data847605
+Node: Execution Stack850963
+Node: Debugger Info852476
+Node: Miscellaneous Debugger Commands856470
+Node: Readline Support861654
+Node: Limitations862546
+Node: Debugging Summary864819
+Node: Arbitrary Precision Arithmetic865987
+Node: Computer Arithmetic867474
+Ref: Computer Arithmetic-Footnote-1871861
+Node: Math Definitions871918
+Ref: table-ieee-formats875207
+Ref: Math Definitions-Footnote-1875747
+Node: MPFR features875850
+Node: FP Math Caution877467
+Ref: FP Math Caution-Footnote-1878517
+Node: Inexactness of computations878886
+Node: Inexact representation879834
+Node: Comparing FP Values881189
+Node: Errors accumulate882153
+Node: Getting Accuracy883586
+Node: Try To Round886245
+Node: Setting precision887144
+Ref: table-predefined-precision-strings887826
+Node: Setting the rounding mode889619
+Ref: table-gawk-rounding-modes889983
+Ref: Setting the rounding mode-Footnote-1893437
+Node: Arbitrary Precision Integers893616
+Ref: Arbitrary Precision Integers-Footnote-1897389
+Node: POSIX Floating Point Problems897538
+Ref: POSIX Floating Point Problems-Footnote-1901414
+Node: Floating point summary901452
+Node: Dynamic Extensions903656
+Node: Extension Intro905208
+Node: Plugin License906473
+Node: Extension Mechanism Outline907158
+Ref: figure-load-extension907582
+Ref: figure-load-new-function909067
+Ref: figure-call-new-function910069
+Node: Extension API Description912053
+Node: Extension API Functions Introduction913503
+Node: General Data Types918370
+Ref: General Data Types-Footnote-1924063
+Node: Requesting Values924362
+Ref: table-value-types-returned925099
+Node: Memory Allocation Functions926057
+Ref: Memory Allocation Functions-Footnote-1928804
+Node: Constructor Functions928900
+Node: Registration Functions930658
+Node: Extension Functions931343
+Node: Exit Callback Functions933645
+Node: Extension Version String934893
+Node: Input Parsers935543
+Node: Output Wrappers945357
+Node: Two-way processors949873
+Node: Printing Messages952077
+Ref: Printing Messages-Footnote-1953154
+Node: Updating `ERRNO'953306
+Node: Accessing Parameters954045
+Node: Symbol Table Access955275
+Node: Symbol table by name955789
+Node: Symbol table by cookie957765
+Ref: Symbol table by cookie-Footnote-1961898
+Node: Cached values961961
+Ref: Cached values-Footnote-1965465
+Node: Array Manipulation965556
+Ref: Array Manipulation-Footnote-1966654
+Node: Array Data Types966693
+Ref: Array Data Types-Footnote-1969396
+Node: Array Functions969488
+Node: Flattening Arrays973362
+Node: Creating Arrays980214
+Node: Extension API Variables984945
+Node: Extension Versioning985581
+Node: Extension API Informational Variables987482
+Node: Extension API Boilerplate988568
+Node: Finding Extensions992372
+Node: Extension Example992932
+Node: Internal File Description993662
+Node: Internal File Ops997753
+Ref: Internal File Ops-Footnote-11009185
+Node: Using Internal File Ops1009325
+Ref: Using Internal File Ops-Footnote-11011672
+Node: Extension Samples1011940
+Node: Extension Sample File Functions1013464
+Node: Extension Sample Fnmatch1021032
+Node: Extension Sample Fork1022514
+Node: Extension Sample Inplace1023727
+Node: Extension Sample Ord1025402
+Node: Extension Sample Readdir1026238
+Ref: table-readdir-file-types1027094
+Node: Extension Sample Revout1027893
+Node: Extension Sample Rev2way1028484
+Node: Extension Sample Read write array1029225
+Node: Extension Sample Readfile1031104
+Node: Extension Sample API Tests1032204
+Node: Extension Sample Time1032729
+Node: gawkextlib1034044
+Node: Extension summary1036857
+Node: Extension Exercises1040550
+Node: Language History1041272
+Node: V7/SVR3.11042915
+Node: SVR41045235
+Node: POSIX1046677
+Node: BTL1048063
+Node: POSIX/GNU1048797
+Node: Feature History1054573
+Node: Common Extensions1067664
+Node: Ranges and Locales1068976
+Ref: Ranges and Locales-Footnote-11073593
+Ref: Ranges and Locales-Footnote-21073620
+Ref: Ranges and Locales-Footnote-31073854
+Node: Contributors1074075
+Node: History summary1079500
+Node: Installation1080869
+Node: Gawk Distribution1081820
+Node: Getting1082304
+Node: Extracting1083128
+Node: Distribution contents1084770
+Node: Unix Installation1090540
+Node: Quick Installation1091157
+Node: Additional Configuration Options1093599
+Node: Configuration Philosophy1095337
+Node: Non-Unix Installation1097688
+Node: PC Installation1098146
+Node: PC Binary Installation1099457
+Node: PC Compiling1101305
+Ref: PC Compiling-Footnote-11104304
+Node: PC Testing1104409
+Node: PC Using1105585
+Node: Cygwin1109737
+Node: MSYS1110546
+Node: VMS Installation1111044
+Node: VMS Compilation1111840
+Ref: VMS Compilation-Footnote-11113062
+Node: VMS Dynamic Extensions1113120
+Node: VMS Installation Details1114493
+Node: VMS Running1116745
+Node: VMS GNV1119579
+Node: VMS Old Gawk1120302
+Node: Bugs1120772
+Node: Other Versions1124776
+Node: Installation summary1131000
+Node: Notes1132056
+Node: Compatibility Mode1132921
+Node: Additions1133703
+Node: Accessing The Source1134628
+Node: Adding Code1136064
+Node: New Ports1142242
+Node: Derived Files1146723
+Ref: Derived Files-Footnote-11152198
+Ref: Derived Files-Footnote-21152232
+Ref: Derived Files-Footnote-31152828
+Node: Future Extensions1152942
+Node: Implementation Limitations1153548
+Node: Extension Design1154796
+Node: Old Extension Problems1155950
+Ref: Old Extension Problems-Footnote-11157467
+Node: Extension New Mechanism Goals1157524
+Ref: Extension New Mechanism Goals-Footnote-11160884
+Node: Extension Other Design Decisions1161073
+Node: Extension Future Growth1163179
+Node: Old Extension Mechanism1164015
+Node: Notes summary1165777
+Node: Basic Concepts1166963
+Node: Basic High Level1167644
+Ref: figure-general-flow1167916
+Ref: figure-process-flow1168515
+Ref: Basic High Level-Footnote-11171744
+Node: Basic Data Typing1171929
+Node: Glossary1175257
+Node: Copying1200409
+Node: GNU Free Documentation License1237965
+Node: Index1263101

End Tag Table