aboutsummaryrefslogtreecommitdiffstats
path: root/doc/gawk.info
diff options
context:
space:
mode:
Diffstat (limited to 'doc/gawk.info')
-rw-r--r--doc/gawk.info2166
1 files changed, 1359 insertions, 807 deletions
diff --git a/doc/gawk.info b/doc/gawk.info
index da03f15d..cbcf450c 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -175,6 +175,7 @@ in (a) below. A copy of the license is included in the section entitled
* Computed Regexps:: Using Dynamic Regexps.
* GNU Regexp Operators:: Operators specific to GNU software.
* Case-sensitivity:: How to do case-insensitive matching.
+* Strong Regexp Constants:: Strongly typed regexp constants.
* Regexp Summary:: Regular expressions summary.
* Records:: Controlling how data is split into
records.
@@ -217,6 +218,7 @@ in (a) below. A copy of the license is included in the section entitled
'getline'.
* Getline Summary:: Summary of 'getline' Variants.
* Read Timeout:: Reading input with a timeout.
+* Retrying Input:: Retrying input after certain errors.
* Command-line directories:: What happens if you put a directory on
the command line.
* Input Summary:: Input summary.
@@ -246,6 +248,7 @@ in (a) below. A copy of the license is included in the section entitled
* Special Caveats:: Things to watch out for.
* Close Files And Pipes:: Closing Input and Output Files and
Pipes.
+* Nonfatal:: Enabling Nonfatal Output.
* Output Summary:: Output summary.
* Output Exercises:: Exercises.
* Values:: Constants, Variables, and Regular
@@ -557,6 +560,7 @@ in (a) below. A copy of the license is included in the section entitled
* Array Functions:: Functions for working with arrays.
* Flattening Arrays:: How to flatten arrays.
* Creating Arrays:: How to create and populate arrays.
+* Redirection API:: How to access and manipulate redirections.
* Extension API Variables:: Variables provided by the API.
* Extension Versioning:: API Version information.
* Extension API Informational Variables:: Variables providing information about
@@ -615,6 +619,7 @@ in (a) below. A copy of the license is included in the section entitled
* Unix Installation:: Installing 'gawk' under
various versions of Unix.
* Quick Installation:: Compiling 'gawk' under Unix.
+* Shell Startup Files:: Shell convenience functions.
* Additional Configuration Options:: Other compile-time options.
* Configuration Philosophy:: How it's all supposed to work.
* Non-Unix Installation:: Installation on Other Operating
@@ -2625,30 +2630,33 @@ The following list describes options mandated by the POSIX standard:
'-o'[FILE]
'--pretty-print'['='FILE]
- Enable pretty-printing of 'awk' programs. By default, the output
- program is created in a file named 'awkprof.out' (*note
- Profiling::). The optional FILE argument allows you to specify a
- different file name for the output. No space is allowed between
- the '-o' and FILE, if FILE is supplied.
+ Enable pretty-printing of 'awk' programs. Implies '--no-optimize'.
+ By default, the output program is created in a file named
+ 'awkprof.out' (*note Profiling::). The optional FILE argument
+ allows you to specify a different file name for the output. No
+ space is allowed between the '-o' and FILE, if FILE is supplied.
- NOTE: Due to the way 'gawk' has evolved, with this option your
- program still executes. This will change in the next major
- release, such that 'gawk' will only pretty-print the program
- and not run it.
+ NOTE: In the past, this option would also execute your
+ program. This is no longer the case.
'-O'
'--optimize'
- Enable some optimizations on the internal representation of the
- program. At the moment, this includes just simple constant
- folding.
+ Enable 'gawk''s default optimizations on the internal
+ representation of the program. At the moment, this includes simple
+ constant folding and tail recursion elimination in function calls.
+
+ These optimizations are enabled by default. This option remains
+ primarily for backwards compatibilty. However, it may be used to
+ cancel the effect of an earlier '-s' option (see later in this
+ list).
'-p'[FILE]
'--profile'['='FILE]
- Enable profiling of 'awk' programs (*note Profiling::). By
- default, profiles are created in a file named 'awkprof.out'. The
- optional FILE argument allows you to specify a different file name
- for the profile file. No space is allowed between the '-p' and
- FILE, if FILE is supplied.
+ Enable profiling of 'awk' programs (*note Profiling::). Implies
+ '--no-optimize'. By default, profiles are created in a file named
+ 'awkprof.out'. The optional FILE argument allows you to specify a
+ different file name for the profile file. No space is allowed
+ between the '-p' and FILE, if FILE is supplied.
The profile contains execution counts for each statement in the
program in the left margin, and function call counts for each
@@ -2662,9 +2670,6 @@ The following list describes options mandated by the POSIX standard:
in 'gawk' that are disabled by this option. Also, the following
additional restrictions apply:
- * Newlines do not act as whitespace to separate fields when 'FS'
- is equal to a single space (*note Fields::).
-
* Newlines are not allowed after '?' or ':' (*note Conditional
Exp::).
@@ -2685,6 +2690,11 @@ The following list describes options mandated by the POSIX standard:
remains (both for backward compatibility and for use in combination
with '--traditional').
+'-s'
+'--no-optimize'
+ Disable 'gawk''s default optimizations on the internal
+ representation of the program.
+
'-S'
'--sandbox'
Disable the 'system()' function, input redirections with 'getline',
@@ -2933,6 +2943,9 @@ Since '.' is included at the beginning, 'gawk' searches first in the
current directory and then in '/usr/local/share/awk'. In practice, this
means that you will rarely need to change the value of 'AWKPATH'.
+ *Note Shell Startup Files::, for information on functions that help
+to manipulate the 'AWKPATH' variable.
+
'gawk' places the value of the search path that it used into
'ENVIRON["AWKPATH"]'. This provides access to the actual search path
value from within an 'awk' program.
@@ -2972,6 +2985,9 @@ empty value, 'gawk' uses a default path; this is typically
'/usr/local/lib/gawk', although it can vary depending upon how 'gawk'
was built.
+ *Note Shell Startup Files::, for information on functions that help
+to manipulate the 'AWKLIBPATH' variable.
+
'gawk' places the value of the search path that it used into
'ENVIRON["AWKLIBPATH"]'. This provides access to the actual search path
value from within an 'awk' program.
@@ -2998,7 +3014,8 @@ used by regular users:
'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::.
+ Networking::. Note that when nonfatal I/O is enabled (*note
+ Nonfatal::), 'gawk' only tries to open a TCP/IP socket once.
'POSIXLY_CORRECT'
Causes 'gawk' to switch to POSIX-compatibility mode, disabling all
@@ -3048,13 +3065,6 @@ change. The variables are:
supposed to be differences, but occasionally theory and practice
don't coordinate with each other.)
-'GAWK_NO_PP_RUN'
- When 'gawk' is invoked with the '--pretty-print' option, it will
- not run the program if this environment variable exists.
-
- CAUTION: This variable will not survive into the next major
- release.
-
'GAWK_STACKSIZE'
This specifies the amount by which 'gawk' should grow its internal
evaluation stack, when needed.
@@ -3319,6 +3329,7 @@ you specify more complicated classes of strings.
* Computed Regexps:: Using Dynamic Regexps.
* GNU Regexp Operators:: Operators specific to GNU software.
* Case-sensitivity:: How to do case-insensitive matching.
+* Strong Regexp Constants:: Strongly typed regexp constants.
* Regexp Summary:: Regular expressions summary.

@@ -3445,15 +3456,18 @@ sequences apply to both string constants and regexp constants:
'\xHH...'
The hexadecimal value HH, where HH stands for a sequence of
- hexadecimal digits ('0'-'9', and either 'A'-'F' or 'a'-'f'). Like
- the same construct in ISO C, the escape sequence continues until
- the first nonhexadecimal digit is seen. (c.e.) However, using
- more than two hexadecimal digits produces undefined results. (The
- '\x' escape sequence is not allowed in POSIX 'awk'.)
-
- CAUTION: The next major release of 'gawk' will change, such
- that a maximum of two hexadecimal digits following the '\x'
- will be used.
+ hexadecimal digits ('0'-'9', and either 'A'-'F' or 'a'-'f'). A
+ maximum of two digts are allowed after the '\x'. Any further
+ hexadecimal digits are treated as simple letters or numbers.
+ (c.e.) (The '\x' escape sequence is not allowed in POSIX awk.)
+
+ CAUTION: In ISO C, the escape sequence continues until the
+ first nonhexadecimal digit is seen. For many years, 'gawk'
+ would continue incorporating hexadecimal digits into the value
+ until a non-hexadecimal digit or the end of the string was
+ encountered. However, using more than two hexadecimal digits
+ produced undefined results. As of version 4.2, only two
+ digits are processed.
'\/'
A literal slash (necessary for regexp constants only). This
@@ -4030,7 +4044,7 @@ No options
default.

-File: gawk.info, Node: Case-sensitivity, Next: Regexp Summary, Prev: GNU Regexp Operators, Up: Regexp
+File: gawk.info, Node: Case-sensitivity, Next: Strong Regexp Constants, Prev: GNU Regexp Operators, Up: Regexp
3.8 Case Sensitivity in Matching
================================
@@ -4104,10 +4118,29 @@ and we don't recommend it.
that 'gawk' does the right thing.

-File: gawk.info, Node: Regexp Summary, Prev: Case-sensitivity, Up: Regexp
+File: gawk.info, Node: Strong Regexp Constants, Next: Regexp Summary, Prev: Case-sensitivity, Up: Regexp
-3.9 Summary
-===========
+3.9 Strongly Typed Regexp Constants
+===================================
+
+This minor node describes a 'gawk'-specific feature.
+
+ Regexp constants ('/.../') hold a strange position in the 'awk'
+language. In most contexts, they act like an expression: '$0 ~ /.../'.
+In other contexts, they denote only a regexp to be matched. In no case
+are they really a "first class citizen" of the language. That is, you
+cannot define a scalar variable whose type is "regexp" in the same sense
+that you can define a variable to be a number or a string:
+
+ num = 42 Numeric variable
+ str = "hi" String variable
+ re = /foo/ Wrong! re is the result of $0 ~ /foo/
+
+
+File: gawk.info, Node: Regexp Summary, Prev: Strong Regexp Constants, Up: Regexp
+
+3.10 Summary
+============
* Regular expressions describe sets of strings to be matched. In
'awk', regular expression constants are written enclosed between
@@ -4178,6 +4211,7 @@ be named on the 'awk' command line (*note Getline::).
* Getline:: Reading files under explicit program control
using the 'getline' function.
* Read Timeout:: Reading input with a timeout.
+* Retrying Input:: Retrying input after certain errors.
* Command-line directories:: What happens if you put a directory on the
command line.
* Input Summary:: Input summary.
@@ -4439,7 +4473,7 @@ When 'awk' reads an input record, the record is automatically "parsed"
or separated by the 'awk' utility into chunks called "fields". By
default, fields are separated by "whitespace", like words in a line.
Whitespace in 'awk' means any string of one or more spaces, TABs, or
-newlines;(1) other characters that are considered whitespace by other
+newlines; other characters that are considered whitespace by other
languages (such as formfeed, vertical tab, etc.) are _not_ considered
whitespace by 'awk'.
@@ -4491,11 +4525,6 @@ record:
-| Julie F
-| Samuel A
- ---------- Footnotes ----------
-
- (1) In POSIX 'awk', newlines are not considered whitespace for
-separating fields.
-

File: gawk.info, Node: Nonconstant Fields, Next: Changing Fields, Prev: Fields, Up: Reading Files
@@ -5441,6 +5470,11 @@ record, such as a file that cannot be opened, then 'getline' returns -1.
In this case, 'gawk' sets the variable 'ERRNO' to a string describing
the error that occurred.
+ If 'ERRNO' indicates that the I/O operation may be retried, and
+'PROCINFO["INPUT", "RETRY"]' is set, then 'getline' returns -2 instead
+of -1, and further calls to 'getline' may be attemped. *Note Retrying
+Input:: for further information about this feature.
+
In the following examples, COMMAND stands for a string value that
represents a shell command.
@@ -5876,7 +5910,7 @@ VAR
Table 4.1: 'getline' variants and what they set

-File: gawk.info, Node: Read Timeout, Next: Command-line directories, Prev: Getline, Up: Reading Files
+File: gawk.info, Node: Read Timeout, Next: Retrying Input, Prev: Getline, Up: Reading Files
4.10 Reading Input with a Timeout
=================================
@@ -5955,7 +5989,8 @@ per-command or per-connection basis.
'gawk' considers a timeout event to be an error even though the
attempt to read from the underlying device may succeed in a later
attempt. This is a limitation, and it also means that you cannot use
-this to multiplex input from two or more sources.
+this to multiplex input from two or more sources. *Note Retrying
+Input:: for a way to enable later I/O attempts to succeed.
Assigning a timeout value prevents read operations from blocking
indefinitely. But bear in mind that there are other ways 'gawk' can
@@ -5969,9 +6004,36 @@ can block indefinitely until some other process opens it for writing.
(1) This assumes that standard input is the keyboard.

-File: gawk.info, Node: Command-line directories, Next: Input Summary, Prev: Read Timeout, Up: Reading Files
+File: gawk.info, Node: Retrying Input, Next: Command-line directories, Prev: Read Timeout, Up: Reading Files
+
+4.11 Retrying Reads After Certain Input Errors
+==============================================
+
+This minor node describes a feature that is specific to 'gawk'.
+
+ When 'gawk' encounters an error while reading input, by default
+'getline' returns -1, and subsequent attempts to read from that file
+result in an end-of-file indication. However, you may optionally
+instruct 'gawk' to allow I/O to be retried when certain errors are
+encountered by setting a special element in the 'PROCINFO' array (*note
+Auto-set::):
+
+ PROCINFO["INPUT_NAME", "RETRY"] = 1
+
+ When this element exists, 'gawk' checks the value of the system (C
+language) 'errno' variable when an I/O error occurs. If 'errno'
+indicates a subsequent I/O attempt may succeed, 'getline' instead
+returns -2 and further calls to 'getline' may succeed. This applies to
+the 'errno' values 'EAGAIN', 'EWOULDBLOCK', 'EINTR', or 'ETIMEDOUT'.
+
+ This feature is useful in conjunction with 'PROCINFO["INPUT_NAME",
+"READ_TIMEOUT"]' or situations where a file descriptor has been
+configured to behave in a non-blocking fashion.
+
+
+File: gawk.info, Node: Command-line directories, Next: Input Summary, Prev: Retrying Input, Up: Reading Files
-4.11 Directories on the Command Line
+4.12 Directories on the Command Line
====================================
According to the POSIX standard, files named on the 'awk' command line
@@ -5994,7 +6056,7 @@ usable data from an 'awk' program.

File: gawk.info, Node: Input Summary, Next: Input Exercises, Prev: Command-line directories, Up: Reading Files
-4.12 Summary
+4.13 Summary
============
* Input is split into records based on the value of 'RS'. The
@@ -6066,7 +6128,7 @@ File: gawk.info, Node: Input Summary, Next: Input Exercises, Prev: Command-li

File: gawk.info, Node: Input Exercises, Prev: Input Summary, Up: Reading Files
-4.13 Exercises
+4.14 Exercises
==============
1. Using the 'FIELDWIDTHS' variable (*note Constant Size::), write a
@@ -6116,6 +6178,7 @@ function.
'gawk' allows access to inherited file
descriptors.
* Close Files And Pipes:: Closing Input and Output Files and Pipes.
+* Nonfatal:: Enabling Nonfatal Output.
* Output Summary:: Output summary.
* Output Exercises:: Exercises.
@@ -7023,7 +7086,7 @@ that 'gawk' provides:
behavior.

-File: gawk.info, Node: Close Files And Pipes, Next: Output Summary, Prev: Special Files, Up: Printing
+File: gawk.info, Node: Close Files And Pipes, Next: Nonfatal, Prev: Special Files, Up: Printing
5.9 Closing Input and Output Redirections
=========================================
@@ -7168,11 +7231,23 @@ there is a system problem closing the file or process. In these cases,
'gawk' sets the predefined variable 'ERRNO' to a string describing the
problem.
- In 'gawk', when closing a pipe or coprocess (input or output), the
-return value is the exit status of the command.(2) Otherwise, it is the
-return value from the system's 'close()' or 'fclose()' C functions when
-closing input or output files, respectively. This value is zero if the
-close succeeds, or -1 if it fails.
+ In 'gawk', starting with version 4.2, when closing a pipe or
+coprocess (input or output), the return value is the exit status of the
+command, as described in *note Table 5.1:
+table-close-pipe-return-values.(2) Otherwise, it is the return value
+from the system's 'close()' or 'fclose()' C functions when closing input
+or output files, respectively. This value is zero if the close
+succeeds, or -1 if it fails.
+
+Situation Return value from 'close()'
+--------------------------------------------------------------------------
+Normal exit of command Command's exit status
+Death by signal of command 256 + number of murderous signal
+Death by signal of command 512 + number of murderous signal
+with core dump
+Some kind of error -1
+
+Table 5.1: Return values from 'close()' of a pipe
The POSIX standard is very vague; it says that 'close()' returns zero
on success and a nonzero value otherwise. In general, different
@@ -7186,14 +7261,73 @@ Options::), 'gawk' just returns zero when closing a pipe.
is called a "zombie," and cleaning up after it is referred to as
"reaping."
- (2) This is a full 16-bit value as returned by the 'wait()' system
-call. See the system manual pages for information on how to decode this
-value.
+ (2) Prior to version 4.2, the return value from closing a pipe or
+co-process was the full 16-bit exit value as defined by the 'wait()'
+system call.
+
+
+File: gawk.info, Node: Nonfatal, Next: Output Summary, Prev: Close Files And Pipes, Up: Printing
+
+5.10 Enabling Nonfatal Output
+=============================
+
+This minor node describes a 'gawk'-specific feature.
+
+ In standard 'awk', output with 'print' or 'printf' to a nonexistent
+file, or some other I/O error (such as filling up the disk) is a fatal
+error.
+
+ $ gawk 'BEGIN { print "hi" > "/no/such/file" }'
+ error-> gawk: cmd. line:1: fatal: can't redirect to `/no/such/file' (No such file or directory)
+
+ 'gawk' makes it possible to detect that an error has occurred,
+allowing you to possibly recover from the error, or at least print an
+error message of your choosing before exiting. You can do this in one
+of two ways:
+
+ * For all output files, by assigning any value to
+ 'PROCINFO["NONFATAL"]'.
+
+ * On a per-file basis, by assigning any value to 'PROCINFO[FILENAME,
+ "NONFATAL"]'. Here, FILENAME is the name of the file to which you
+ wish output to be nonfatal.
+
+ Once you have enabled nonfatal output, you must check 'ERRNO' after
+every relevant 'print' or 'printf' statement to see if something went
+wrong. It is also a good idea to initialize 'ERRNO' to zero before
+attempting the output. For example:
+
+ $ gawk '
+ > BEGIN {
+ > PROCINFO["NONFATAL"] = 1
+ > ERRNO = 0
+ > print "hi" > "/no/such/file"
+ > if (ERRNO) {
+ > print("Output failed:", ERRNO) > "/dev/stderr"
+ > exit 1
+ > }
+ > }'
+ error-> Output failed: No such file or directory
+
+ Here, 'gawk' did not produce a fatal error; instead it let the 'awk'
+program code detect the problem and handle it.
+
+ This mechanism works also for standard output and standard error.
+For standard output, you may use 'PROCINFO["-", "NONFATAL"]' or
+'PROCINFO["/dev/stdout", "NONFATAL"]'. For standard error, use
+'PROCINFO["/dev/stderr", "NONFATAL"]'.
+
+ When attempting to open a TCP/IP socket (*note TCP/IP Networking::),
+'gawk' tries multiple times. The 'GAWK_SOCK_RETRIES' environment
+variable (*note Other Environment Variables::) allows you to override
+'gawk''s builtin default number of attempts. However, once nonfatal I/O
+is enabled for a given socket, 'gawk' only retries once, relying on
+'awk'-level code to notice that there was a problem.

-File: gawk.info, Node: Output Summary, Next: Output Exercises, Prev: Close Files And Pipes, Up: Printing
+File: gawk.info, Node: Output Summary, Next: Output Exercises, Prev: Nonfatal, Up: Printing
-5.10 Summary
+5.11 Summary
============
* The 'print' statement prints comma-separated expressions. Each
@@ -7215,10 +7349,15 @@ File: gawk.info, Node: Output Summary, Next: Output Exercises, Prev: Close Fi
For coprocesses, it is possible to close only one direction of the
communications.
+ * Normally errors with 'print' or 'printf' are fatal. 'gawk' lets
+ you make output errors be nonfatal either for all files or on a
+ per-file basis. You must then check for errors after every
+ relevant output statement.
+

File: gawk.info, Node: Output Exercises, Prev: Output Summary, Up: Printing
-5.11 Exercises
+5.12 Exercises
==============
1. Rewrite the program:
@@ -10138,7 +10277,7 @@ each variable.)
The default value is '" "', a string consisting of a single space.
As a special exception, this value means that any sequence of
- spaces, TABs, and/or newlines is a single separator.(1) It also
+ spaces, TABs, and/or newlines is a single separator. It also
causes spaces, TABs, and newlines at the beginning and end of a
record to be ignored.
@@ -10235,10 +10374,6 @@ each variable.)
Internationalization::). The default value of 'TEXTDOMAIN' is
'"messages"'.
- ---------- Footnotes ----------
-
- (1) In POSIX 'awk', newline does not count as whitespace.
-

File: gawk.info, Node: Auto-set, Next: ARGC and ARGV, Prev: User-modified, Up: Built-in Variables
@@ -10302,10 +10437,24 @@ they are not special:
An associative array containing the values of the environment. The
array indices are the environment variable names; the elements are
the values of the particular environment variables. For example,
- 'ENVIRON["HOME"]' might be '"/home/arnold"'. Changing this array
- does not affect the environment passed on to any programs that
- 'awk' may spawn via redirection or the 'system()' function. (In a
- future version of 'gawk', it may do so.)
+ 'ENVIRON["HOME"]' might be '/home/arnold'.
+
+ For POSIX 'awk', changing this array does not affect the
+ environment passed on to any programs that 'awk' may spawn via
+ redirection or the 'system()' function.
+
+ However, beginning with version 4.2, if not in POSIX compatibility
+ mode, 'gawk' does update its own environment when 'ENVIRON' is
+ changed, thus changing the environment seen by programs that it
+ creates. You should therefore be especially careful if you modify
+ 'ENVIRON["PATH"]', which is the search path for finding executable
+ programs.
+
+ This can also affect the running 'gawk' program, since some of the
+ built-in functions may pay attention to certain environment
+ variables. The most notable instance of this is 'mktime()' (*note
+ Time Functions::), which pays attention the value of the 'TZ'
+ environment variable on many systems.
Some operating systems may not have environment variables. On such
systems, the 'ENVIRON' array is empty (except for
@@ -10328,6 +10477,11 @@ they are not special:
'getline' returning -1. You are, of course, free to clear it
yourself before doing an I/O operation.
+ If the value of 'ERRNO' corresponds to a system error in the C
+ 'errno' variable, then 'PROCINFO["errno"]' will be set to the value
+ of 'errno'. For non-system errors, 'PROCINFO["errno"]' will be
+ zero.
+
'FILENAME'
The name of the current input file. When no data files are listed
on the command line, 'awk' reads from the standard input and
@@ -10376,6 +10530,10 @@ they are not special:
'PROCINFO["egid"]'
The value of the 'getegid()' system call.
+ 'PROCINFO["errno"]'
+ The value of the C 'errno' variable when 'ERRNO' is set to the
+ associated error message.
+
'PROCINFO["euid"]'
The value of the 'geteuid()' system call.
@@ -10474,6 +10632,14 @@ they are not special:
The following elements allow you to change 'gawk''s behavior:
+ 'PROCINFO["NONFATAL"]'
+ If this element exists, then I/O errors for all output
+ redirections become nonfatal. *Note Nonfatal::.
+
+ 'PROCINFO["OUTPUT_NAME", "NONFATAL"]'
+ Make output errors for OUTPUT_NAME be nonfatal. *Note
+ Nonfatal::.
+
'PROCINFO["COMMAND", "pty"]'
For two-way communication to COMMAND, use a pseudo-tty instead
of setting up a two-way pipe. *Note Two-way I/O:: for more
@@ -11888,6 +12054,21 @@ brackets ([ ]):
truncated toward zero. For example, 'int(3)' is 3, 'int(3.9)' is
3, 'int(-3.9)' is -3, and 'int(-3)' is -3 as well.
+'intdiv(NUMERATOR, DENOMINATOR, RESULT)'
+ Perform integer division, similar to the standard C function of the
+ same name. First, truncate 'numerator' and 'denominator' towards
+ zero, creating integer values. Clear the 'result' array, and then
+ set 'result["quotient"]' to the result of 'numerator /
+ denominator', truncated towards zero to an integer, and set
+ 'result["remainder"]' to the result of 'numerator % denominator',
+ truncated towards zero to an integer. This function is primarily
+ intended for use with arbitrary length integers; it avoids creating
+ MPFR arbitrary precision floating-point values (*note Arbitrary
+ Precision Integers::).
+
+ This function is a 'gawk' extension. It is not available in
+ compatibility mode (*note Options::).
+
'log(X)'
Return the natural logarithm of X, if X is positive; otherwise,
return 'NaN' ("not a number") on IEEE 754 systems. Additionally,
@@ -13355,14 +13536,52 @@ File: gawk.info, Node: Type Functions, Next: I18N Functions, Prev: Bitwise Fu
9.1.7 Getting Type Information
------------------------------
-'gawk' provides a single function that lets you distinguish an array
-from a scalar variable. This is necessary for writing code that
-traverses every element of an array of arrays (*note Arrays of
-Arrays::).
+'gawk' provides two functions that lets you distinguish the type of a
+variable. This is necessary for writing code that traverses every
+element of an array of arrays (*note Arrays of Arrays::), and in other
+contexts.
'isarray(X)'
Return a true value if X is an array. Otherwise, return false.
+'typeof(X)'
+ Return one of the following strings, depending upon the type of X:
+
+ '"array"'
+ X is an array.
+
+ '"number"'
+ X is a number.
+
+ '"string"'
+ X is a string.
+
+ '"strnum"'
+ X is a string that might be a number, such as a field or the
+ result of calling 'split()'. (I.e., X has the STRNUM
+ attribute; *note Variable Typing::.)
+
+ '"unassigned"'
+ X is a scalar variable that has not been assigned a value yet.
+ For example:
+
+ BEGIN {
+ a[1] # creates a[1] but it has no assigned value
+ print typeof(a[1]) # scalar_u
+ }
+
+ '"untyped"'
+ X has not yet been used yet at all; it can become a scalar or
+ an array. For example:
+
+ BEGIN {
+ print typeof(x) # x never used --> untyped
+ mk_arr(x)
+ print typeof(x) # x now an array --> array
+ }
+
+ function mk_arr(a) { a[1] = 1 }
+
'isarray()' is meant for use in two circumstances. The first is when
traversing a multidimensional array: you can test if an element is
itself an array or not. The second is inside the body of a user-defined
@@ -13376,6 +13595,13 @@ parameter is an array or not.
that has not been previously used to 'isarray()', 'gawk' ends up
turning it into a scalar.
+ The 'typeof()' function is general; it allows you to determine if a
+variable or function parameter is a scalar, an array.
+
+ 'isarray()' is deprecated; you should use 'typeof()' instead. You
+should replace any existing uses of 'isarray(var)' in your code with
+'typeof(var) == "array"'.
+

File: gawk.info, Node: I18N Functions, Prev: Type Functions, Up: Built-in
@@ -19691,9 +19917,15 @@ case 'gawk' waits for the child process to exit, which may cause your
program to hang. (Thus, this particular feature is of much less use in
practice than being able to close the '"to"' end.)
- CAUTION: It is a fatal error to write to the '"to"' end of a
- two-way pipe which has been closed. It is also a fatal error to
- read from the '"from"' end of a two-way pipe that has been closed.
+ CAUTION: Normally, it is a fatal error to write to the '"to"' end
+ of a two-way pipe which has been closed, and it is also a fatal
+ error to read from the '"from"' end of a two-way pipe that has been
+ closed.
+
+ You may set 'PROCINFO["COMMAND", "NONFATAL"]' to make such
+ operations become nonfatal, in which case you then need to check
+ 'ERRNO' after each 'print', 'printf', or 'getline'. *Note
+ Nonfatal::, for more information.
You may also use pseudo-ttys (ptys) for two-way communication instead
of pipes, if your system supports them. This is done on a per-command
@@ -19981,8 +20213,7 @@ output. They are as follows:
you typed when you wrote it. This is because 'gawk' creates the
profiled version by "pretty-printing" its internal representation of the
program. The advantage to this is that 'gawk' can produce a standard
-representation. The disadvantage is that all source code comments are
-lost. Also, things such as:
+representation. Also, things such as:
/foo/
@@ -20041,8 +20272,36 @@ the 'Ctrl-\' key.
called this way, 'gawk' "pretty-prints" the program into 'awkprof.out',
without any execution counts.
- NOTE: The '--pretty-print' option still runs your program. This
- will change in the next major release.
+ NOTE: Once upon a time, the '--pretty-print' option would also run
+ your program. This is is no longer the case.
+
+ There is a significant difference between the output created when
+profiling, and that created when pretty-printing. Pretty-printed output
+preserves the original comments that were in the program, although their
+placement may not correspond exactly to their original locations in the
+source code.(1)
+
+ However, as a deliberate design decision, profiling output _omits_
+the original program's comments. This allows you to focus on the
+execution count data and helps you avoid the temptation to use the
+profiler for pretty-printing.
+
+ Additionally, pretty-printed output does not have the leading
+indentation that the profiling output does. This makes it easy to
+pretty-print your code once development is completed, and then use the
+result as the final version of your program.
+
+ Because the internal representation of your program is formatted to
+recreate an 'awk' program, profiling and pretty-printing automatically
+disable 'gawk''s default optimizations.
+
+ ---------- Footnotes ----------
+
+ (1) 'gawk' does the best it can to preserve the distinction between
+comments at the end of a statement and comments on lines by themselves.
+Due to implementation constraints, it does not always do so correctly,
+particularly for 'switch' statements. The 'gawk' maintainers hope to
+improve this in a subsequent release.

File: gawk.info, Node: Advanced Features Summary, Prev: Profiling, Up: Advanced Features
@@ -20083,8 +20342,7 @@ File: gawk.info, Node: Advanced Features Summary, Prev: Profiling, Up: Advanc
'USR1' signal while profiling causes 'gawk' to dump the profile and
keep going, including a function call stack.
- * You can also just "pretty-print" the program. This currently also
- runs the program, but that will change in the next major release.
+ * You can also just "pretty-print" the program.

File: gawk.info, Node: Internationalization, Next: Debugger, Prev: Advanced Features, Up: Top
@@ -21779,6 +22037,62 @@ some limitations. A few that it's worth being aware of are:
* The 'gawk' debugger only accepts source code supplied with the '-f'
option.
+ One other point is worth disucssing. Conventional debuggers run in a
+separate process (and thus address space) from the programs that they
+debug (the "debuggee", if you will).
+
+ The 'gawk' debugger is different; it is an integrated part of 'gawk'
+itself. This makes it possible, in rare cases, for 'gawk' to become an
+excellent demonstrator of Heisenberg Uncertainty physics, where the mere
+act of observing something can change it. Consider the following:(1)
+
+ $ cat test.awk
+ -| { print typeof($1), typeof($2) }
+ $ cat test.data
+ -| abc 123
+ $ gawk -f test.awk test.data
+ -| strnum strnum
+
+ This is all as expected: field data has the STRNUM attribute (*note
+Variable Typing::). Now watch what happens when we run this program
+under the debugger:
+
+ $ gawk -D -f test.awk test.data
+ gawk> w $1 Set watchpoint on $1
+ -| Watchpoint 1: $1
+ gawk> w $2 Set watchpoint on $2
+ -| Watchpoint 2: $2
+ gawk> r Start the program
+ -| Starting program:
+ -| Stopping in Rule ...
+ -| Watchpoint 1: $1 Watchpoint fires
+ -| Old value: ""
+ -| New value: "abc"
+ -| main() at `test.awk':1
+ -| 1 { print typeof($1), typeof($2) }
+ gawk> n Keep going ...
+ -| Watchpoint 2: $2 Watchpoint fires
+ -| Old value: ""
+ -| New value: "123"
+ -| main() at `test.awk':1
+ -| 1 { print typeof($1), typeof($2) }
+ gawk> n Get result from typeof()
+ -| strnum number Result for $2 isn't right
+ -| Program exited normally with exit value: 0
+ gawk> quit
+
+ In this case, the act of comparing the new value of '$2' with the old
+one caused 'gawk' to evaluate it and determine that it is indeed a
+number, and this is reflected in the result of 'typeof()'.
+
+ Cases like this where the debugger is not transparent to the
+program's execution should be rare. If you encounter one, please report
+it (*note Bugs::).
+
+ ---------- Footnotes ----------
+
+ (1) Thanks to Hermann Peifer for this example.
+

File: gawk.info, Node: Debugging Summary, Prev: Limitations, Up: Debugger
@@ -21807,6 +22121,9 @@ File: gawk.info, Node: Debugging Summary, Prev: Limitations, Up: Debugger
it is used by the debugger to provide command-line history and
editing.
+ * Usually, the debugger does not not affect the program being
+ debugged, but occasionally it can.
+

File: gawk.info, Node: Arbitrary Precision Arithmetic, Next: Dynamic Extensions, Prev: Debugger, Up: Top
@@ -22540,6 +22857,62 @@ the following:
gawk -M 'BEGIN { n = 13; print n % 2 }'
+ When dividing two arbitrary precision integers with either '/' or
+'%', the result is typically an arbitrary precision floating point value
+(unless the denominator evenly divides into the numerator). In order to
+do integer division or remainder with arbitrary precision integers, use
+the built-in 'intdiv()' function (*note Numeric Functions::).
+
+ You can simulate the 'intdiv()' function in standard 'awk' using this
+user-defined function:
+
+ # intdiv --- do integer division
+
+ function intdiv(numerator, denominator, result)
+ {
+ split("", result)
+
+ numerator = int(numerator)
+ denominator = int(denominator)
+ result["quotient"] = int(numerator / denominator)
+ result["remainder"] = int(numerator % denominator)
+
+ return 0.0
+ }
+
+ The following example program, contributed by Katie Wasserman, uses
+'intdiv()' to compute the digits of pi to as many places as you choose
+to set:
+
+ # pi.awk --- compute the digits of pi
+
+ BEGIN {
+ digits = 100000
+ two = 2 * 10 ^ digits
+ pi = two
+ for (m = digits * 4; m > 0; --m) {
+ d = m * 2 + 1
+ x = pi * m
+ intdiv(x, d, result)
+ pi = result["quotient"]
+ pi = pi + two
+ }
+ print pi
+ }
+
+ When asked about the algorithm used, Katie replied:
+
+ It's not that well known but it's not that obscure either. It's
+ Euler's modification to Newton's method for calculating pi. Take a
+ look at lines (23) - (25) here:
+ <http://mathworld.wolfram.com/PiFormulas.html>.
+
+ The algorithm I wrote simply expands the multiply by 2 and works
+ from the innermost expression outwards. I used this to program HP
+ calculators because it's quite easy to modify for tiny memory
+ devices with smallish word sizes. See
+ <http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=899>.
+
---------- Footnotes ----------
(1) Weisstein, Eric W. 'Sylvester's Sequence'. From MathWorld--A
@@ -22902,6 +23275,7 @@ API in detail.
* Symbol Table Access:: Functions for accessing global
variables.
* Array Manipulation:: Functions for working with arrays.
+* Redirection API:: How to access and manipulate redirections.
* Extension API Variables:: Variables provided by the API.
* Extension API Boilerplate:: Boilerplate code for using the API.
@@ -22957,6 +23331,8 @@ operations:
- Flattening an array for easy C-style looping over all its
indices and elements
+ * Accessing and manipulating redirections.
+
Some points about using the API:
* The following types, macros, and/or functions are referenced in
@@ -23314,7 +23690,7 @@ Extension functions are described by the following record:
typedef struct awk_ext_func {
const char *name;
awk_value_t *(*function)(int num_actual_args, awk_value_t *result);
- size_t num_expected_args;
+ size_t max_expected_args;
} awk_ext_func_t;
The fields are:
@@ -23341,11 +23717,17 @@ Extension functions are described by the following record:
The function must return the value of 'result'. This is for the
convenience of the calling code inside 'gawk'.
-'size_t num_expected_args;'
- This is the number of arguments the function expects to receive.
- Each extension function may decide what to do if the number of
- arguments isn't what it expected. As with real 'awk' functions, it
- is likely OK to ignore extra arguments.
+'size_t max_expected_args;'
+ This is the maximum number of arguments the function expects to
+ receive. Each extension function may decide what to do if the
+ number of arguments isn't what it expected. As with real 'awk'
+ functions, it is likely OK to ignore extra arguments. This value
+ does not affect actual program execution.
+
+ Extension functions should compare this value to the number of
+ actual arguments passed and possibly issue a lint warning if there
+ is an undesirable mismatch. Of course, if '--lint=fatal' is used,
+ this would cause the program to exit.
Once you have a record representing your extension function, you
register it with 'gawk' using this API function:
@@ -23798,6 +24180,9 @@ extension ID received from 'gawk' when the extension was loaded:(1)
'void fatal(awk_ext_id_t id, const char *format, ...);'
Print a message and then cause 'gawk' to exit immediately.
+'void nonfatal(awk_ext_id_t id, const char *format, ...);'
+ Print a nonfatal error message.
+
'void warning(awk_ext_id_t id, const char *format, ...);'
Print a warning message.
@@ -24162,7 +24547,7 @@ using 'release_value()'.
'double' to store.

-File: gawk.info, Node: Array Manipulation, Next: Extension API Variables, Prev: Symbol Table Access, Up: Extension API Description
+File: gawk.info, Node: Array Manipulation, Next: Redirection API, Prev: Symbol Table Access, Up: Extension API Description
16.4.11 Array Manipulation
--------------------------
@@ -24646,9 +25031,78 @@ array:
environment variable.)

-File: gawk.info, Node: Extension API Variables, Next: Extension API Boilerplate, Prev: Array Manipulation, Up: Extension API Description
+File: gawk.info, Node: Redirection API, Next: Extension API Variables, Prev: Array Manipulation, Up: Extension API Description
+
+16.4.12 Accessing and Manipulating Redirections
+-----------------------------------------------
+
+The following function allows extensions to access and manipulate
+redirections.
+
+'awk_bool_t get_file(const char *name,'
+' size_t name_len,'
+' const char *filetype,'
+' int fd,'
+' const awk_input_buf_t **ibufp,'
+' const awk_output_buf_t **obufp);'
+ Look up a file in 'gawk''s internal redirection table. If 'name'
+ is 'NULL' or 'name_len' is zero, return data for the currently open
+ input file corresponding to 'FILENAME'. (This does not access the
+ 'filetype' argument, so that may be undefined). If the file is not
+ already open, attempt to open it. The 'filetype' argument must be
+ zero-terminated and should be one of:
-16.4.12 API Variables
+ '">"'
+ A file opened for output.
+
+ '">>"'
+ A file opened for append.
+
+ '"<"'
+ A file opened for input.
+
+ '"|>"'
+ A pipe opened for output.
+
+ '"|<"'
+ A pipe opened for input.
+
+ '"|&"'
+ A two-way coprocess.
+
+ On error, return a 'false' value. Otherwise, return 'true', and
+ return additional information about the redirection in the 'ibufp'
+ and 'obufp' pointers. For input redirections, the '*ibufp' value
+ should be non-'NULL', and '*obufp' should be 'NULL'. For output
+ redirections, the '*obufp' value should be non-'NULL', and '*ibufp'
+ should be 'NULL'. For two-way coprocesses, both values should be
+ non-'NULL'.
+
+ In the usual case, the extension is interested in '(*ibufp)->fd'
+ and/or 'fileno((*obufp)->fp)'. If the file is not already open,
+ and the 'fd' argument is non-negative, 'gawk' will use that file
+ descriptor instead of opening the file in the usual way. If 'fd'
+ is non-negative, but the file exists already, 'gawk' ignores 'fd'
+ and returns the existing file. It is the caller's responsibility
+ to notice that neither the 'fd' in the returned 'awk_input_buf_t'
+ nor the 'fd' in the returned 'awk_output_buf_t' matches the
+ requested value.
+
+ Note that supplying a file descriptor is currently _not_ supported
+ for pipes. However, supplying a file descriptor should work for
+ input, output, append, and two-way (coprocess) sockets. If
+ 'filetype' is two-way, 'gawk' assumes that it is a socket! Note
+ that in the two-way case, the input and output file descriptors may
+ differ. To check for success, you must check whether either
+ matches.
+
+ It is anticipated that this API function will be used to implement
+I/O multiplexing and a socket library.
+
+
+File: gawk.info, Node: Extension API Variables, Next: Extension API Boilerplate, Prev: Redirection API, Up: Extension API Description
+
+16.4.13 API Variables
---------------------
The API provides two sets of variables. The first provides information
@@ -24665,7 +25119,7 @@ information about how 'gawk' was invoked.

File: gawk.info, Node: Extension Versioning, Next: Extension API Informational Variables, Up: Extension API Variables
-16.4.12.1 API Version Constants and Variables
+16.4.13.1 API Version Constants and Variables
.............................................
The API provides both a "major" and a "minor" version number. The API
@@ -24717,7 +25171,7 @@ Boilerplate::).

File: gawk.info, Node: Extension API Informational Variables, Prev: Extension Versioning, Up: Extension API Variables
-16.4.12.2 Informational Variables
+16.4.13.2 Informational Variables
.................................
The API provides access to several variables that describe whether the
@@ -24752,7 +25206,7 @@ change during execution.

File: gawk.info, Node: Extension API Boilerplate, Prev: Extension API Variables, Up: Extension API Description
-16.4.13 Boilerplate Code
+16.4.14 Boilerplate Code
------------------------
As mentioned earlier (*note Extension Mechanism Outline::), the function
@@ -26080,15 +26534,17 @@ project.
* GD graphics library extension
+ * MPFR library extension (this provides access to a number of MPFR
+ functions that 'gawk''s native MPFR support does not)
+
* PDF extension
* PostgreSQL extension
- * MPFR library extension (this provides access to a number of MPFR
- functions that 'gawk''s native MPFR support does not)
-
* Redis extension
+ * Select extension
+
* XML parser extension, using the Expat
(http://expat.sourceforge.net) XML parsing library
@@ -26166,7 +26622,7 @@ File: gawk.info, Node: Extension summary, Next: Extension Exercises, Prev: ga
exit callbacks, a version string, input parsers, output
wrappers, and two-way processors)
- * Printing fatal, warning, and "lint" warning messages
+ * Printing fatal, nonfatal, warning, and "lint" warning messages
* Updating 'ERRNO', or unsetting it
@@ -26501,6 +26957,9 @@ current version of 'gawk'.
- Directories on the command line produce a warning and are
skipped (*note Command-line directories::)
+ - Output with 'print' and 'printf' need not be fatal (*note
+ Nonfatal::)
+
* New keywords:
- The 'BEGINFILE' and 'ENDFILE' special patterns (*note
@@ -26550,6 +27009,9 @@ current version of 'gawk'.
- The 'bindtextdomain()', 'dcgettext()', and 'dcngettext()'
functions for internationalization (*note Programmer i18n::)
+ - The 'intdiv()' function for doing integer division and
+ remainder (*note Numeric Functions::)
+
* Changes and/or additions in the command-line options:
- The 'AWKPATH' environment variable for specifying a path
@@ -26560,16 +27022,16 @@ current version of 'gawk'.
- The '-b', '-c', '-C', '-d', '-D', '-e', '-E', '-g', '-h',
'-i', '-l', '-L', '-M', '-n', '-N', '-o', '-O', '-p', '-P',
- '-r', '-S', '-t', and '-V' short options. Also, the ability
- to use GNU-style long-named options that start with '--', and
- the '--assign', '--bignum', '--characters-as-bytes',
+ '-r', '-s', '-S', '-t', and '-V' short options. Also, the
+ ability to use GNU-style long-named options that start with
+ '--', and the '--assign', '--bignum', '--characters-as-bytes',
'--copyright', '--debug', '--dump-variables', '--exec',
'--field-separator', '--file', '--gen-pot', '--help',
'--include', '--lint', '--lint-old', '--load',
- '--non-decimal-data', '--optimize', '--posix',
- '--pretty-print', '--profile', '--re-interval', '--sandbox',
- '--source', '--traditional', '--use-lc-numeric', and
- '--version' long options (*note Options::).
+ '--non-decimal-data', '--optimize', '--no-optimize',
+ '--posix', '--pretty-print', '--profile', '--re-interval',
+ '--sandbox', '--source', '--traditional', '--use-lc-numeric',
+ and '--version' long options (*note Options::).
* Support for the following obsolete systems was removed from the
code and the documentation for 'gawk' version 4.0:
@@ -26603,6 +27065,11 @@ current version of 'gawk'.
- Ultrix
+ * Support for the following systems was removed from the code for
+ 'gawk' version 4.2:
+
+ - MirBSD
+

File: gawk.info, Node: Feature History, Next: Common Extensions, Prev: POSIX/GNU, Up: Language History
@@ -26994,6 +27461,34 @@ POSIX 'awk', in the order they were added to 'gawk'.
* Support for Ultrix was removed.
+ Version 4.2 introduced the following changes:
+
+ * Changes to 'ENVIRON' are reflected into 'gawk''s environment and
+ that of programs that it runs. *Note Auto-set::.
+
+ * The '--pretty-print' option no longer runs the 'awk' program too.
+ *Note Options::.
+
+ * The 'igawk' program and its manual page are no longer installed
+ when 'gawk' is built. *Note Igawk Program::.
+
+ * The 'intdiv()' function. *Note Numeric Functions::.
+
+ * The maximum number of hexadecimal digits in '\x' escapes is now
+ two. *Note Escape Sequences::.
+
+ * Nonfatal output with 'print' and 'printf'. *Note Nonfatal::.
+
+ * For many years, POSIX specified that default field splitting only
+ allowed spaces and tabs to separate fields, and this was how 'gawk'
+ behaved with '--posix'. As of 2013, the standard restored
+ historical behavior, and now default field splitting with '--posix'
+ also allows newlines to separate fields.
+
+ * Support for MirBSD was removed.
+
+ * Support for GNU/Linux on Alpha was removed.
+

File: gawk.info, Node: Common Extensions, Next: Ranges and Locales, Prev: Feature History, Up: Language History
@@ -27512,7 +28007,9 @@ Various '.c', '.y', and '.h' files
'doc/igawk.1'
The 'troff' source for a manual page describing the 'igawk' program
- presented in *note Igawk Program::.
+ presented in *note Igawk Program::. (Since 'gawk' can do its own
+ '@include' processing, neither 'igawk' nor 'igawk.1' are
+ installed.)
'doc/Makefile.in'
The input file used during the configuration process to generate
@@ -27554,17 +28051,22 @@ Various '.c', '.y', and '.h' files
contains a 'Makefile.in' file, which 'configure' uses to generate a
'Makefile'. 'Makefile.am' is used by GNU Automake to create
'Makefile.in'. The library functions from *note Library
- Functions::, and the 'igawk' program from *note Igawk Program:: are
- included as ready-to-use files in the 'gawk' distribution. They
- are installed as part of the installation process. The rest of the
- programs in this Info file are available in appropriate
- subdirectories of 'awklib/eg'.
+ Functions::, are included as ready-to-use files in the 'gawk'
+ distribution. They are installed as part of the installation
+ process. The rest of the programs in this Info file are available
+ in appropriate subdirectories of 'awklib/eg'.
'extension/*'
The source code, manual pages, and infrastructure files for the
sample extensions included with 'gawk'. *Note Dynamic
Extensions::, for more information.
+'extras/*'
+ Additional non-essential files. Currently, this directory contains
+ some shell startup files to be installed in '/etc/profile.d' to aid
+ in manipulating the 'AWKPATH' and 'AWKLIBPATH' environment
+ variables. *Note Shell Startup Files::, for more information.
+
'posix/*'
Files needed for building 'gawk' on POSIX-compliant systems.
@@ -27595,11 +28097,12 @@ for your system yourself.
* Menu:
* Quick Installation:: Compiling 'gawk' under Unix.
+* Shell Startup Files:: Shell convenience functions.
* Additional Configuration Options:: Other compile-time options.
* Configuration Philosophy:: How it's all supposed to work.

-File: gawk.info, Node: Quick Installation, Next: Additional Configuration Options, Up: Unix Installation
+File: gawk.info, Node: Quick Installation, Next: Shell Startup Files, Up: Unix Installation
B.2.1 Compiling 'gawk' for Unix-Like Systems
--------------------------------------------
@@ -27654,9 +28157,42 @@ will be asked for your password, and you will have to have been set up
previously as a user who is allowed to run the 'sudo' command.

-File: gawk.info, Node: Additional Configuration Options, Next: Configuration Philosophy, Prev: Quick Installation, Up: Unix Installation
+File: gawk.info, Node: Shell Startup Files, Next: Additional Configuration Options, Prev: Quick Installation, Up: Unix Installation
+
+B.2.2 Shell Startup Files
+-------------------------
+
+The distribution contains shell startup files 'gawk.sh' and 'gawk.csh'
+containing functions to aid in manipulating the 'AWKPATH' and
+'AWKLIBPATH' environment variables. On a Fedora system, these files
+should be installed in '/etc/profile.d'; on other platforms, the
+appropriate location may be different.
+
+'gawkpath_default'
+ Reset the 'AWKPATH' environment variable to its default value.
+
+'gawkpath_prepend'
+ Add the argument to the front of the 'AWKPATH' environment
+ variable.
+
+'gawkpath_append'
+ Add the argument to the end of the 'AWKPATH' environment variable.
+
+'gawklibpath_default'
+ Reset the 'AWKLIBPATH' environment variable to its default value.
+
+'gawklibpath_prepend'
+ Add the argument to the front of the 'AWKLIBPATH' environment
+ variable.
+
+'gawklibpath_append'
+ Add the argument to the end of the 'AWKLIBPATH' environment
+ variable.
+
+
+File: gawk.info, Node: Additional Configuration Options, Next: Configuration Philosophy, Prev: Shell Startup Files, Up: Unix Installation
-B.2.2 Additional Configuration Options
+B.2.3 Additional Configuration Options
--------------------------------------
There are several additional options you may use on the 'configure'
@@ -27700,7 +28236,7 @@ supplied by 'configure'.

File: gawk.info, Node: Configuration Philosophy, Prev: Additional Configuration Options, Up: Unix Installation
-B.2.3 The Configuration Process
+B.2.4 The Configuration Process
-------------------------------
This minor node is of interest only if you know something about using
@@ -31694,20 +32230,21 @@ Index
* --include option: Options. (line 159)
* --lint option: Command Line. (line 20)
* --lint option <1>: Options. (line 184)
-* --lint-old option: Options. (line 294)
+* --lint-old option: Options. (line 299)
* --load option: Options. (line 172)
+* --no-optimize option: Options. (line 285)
* --non-decimal-data option: Options. (line 209)
* --non-decimal-data option <1>: Nondecimal Data. (line 6)
* --non-decimal-data option, strtonum() function and: Nondecimal Data.
(line 35)
-* --optimize option: Options. (line 236)
-* --posix option: Options. (line 254)
+* --optimize option: Options. (line 234)
+* --posix option: Options. (line 257)
* --posix option, --traditional option and: Options. (line 272)
* --pretty-print option: Options. (line 223)
-* --profile option: Options. (line 242)
+* --profile option: Options. (line 245)
* --profile option <1>: Profiling. (line 12)
* --re-interval option: Options. (line 278)
-* --sandbox option: Options. (line 285)
+* --sandbox option: Options. (line 290)
* --sandbox option, disabling system() function: I/O Functions.
(line 129)
* --sandbox option, input redirection with getline: Getline. (line 19)
@@ -31717,7 +32254,7 @@ Index
* --traditional option: Options. (line 82)
* --traditional option, --posix option and: Options. (line 272)
* --use-lc-numeric option: Options. (line 218)
-* --version option: Options. (line 299)
+* --version option: Options. (line 304)
* --with-whiny-user-strftime configuration option: Additional Configuration Options.
(line 37)
* -b option: Options. (line 69)
@@ -31727,31 +32264,32 @@ Index
* -D option: Options. (line 108)
* -e option: Options. (line 117)
* -E option: Options. (line 125)
-* -e option <1>: Options. (line 335)
+* -e option <1>: Options. (line 340)
* -f option: Long. (line 12)
* -F option: Options. (line 21)
* -f option <1>: Options. (line 25)
-* -F option, -Ft sets FS to TAB: Options. (line 307)
+* -F option, -Ft sets FS to TAB: Options. (line 312)
* -F option, command-line: Command Line Field Separator.
(line 6)
-* -f option, multiple uses: Options. (line 312)
+* -f option, multiple uses: Options. (line 317)
* -g option: Options. (line 147)
* -h option: Options. (line 154)
* -i option: Options. (line 159)
* -l option: Options. (line 172)
* -l option <1>: Options. (line 184)
-* -L option: Options. (line 294)
+* -L option: Options. (line 299)
* -M option: Options. (line 203)
* -n option: Options. (line 209)
* -N option: Options. (line 218)
* -o option: Options. (line 223)
-* -O option: Options. (line 236)
-* -p option: Options. (line 242)
-* -P option: Options. (line 254)
+* -O option: Options. (line 234)
+* -p option: Options. (line 245)
+* -P option: Options. (line 257)
* -r option: Options. (line 278)
-* -S option: Options. (line 285)
+* -s option: Options. (line 285)
+* -S option: Options. (line 290)
* -v option: Options. (line 32)
-* -V option: Options. (line 299)
+* -V option: Options. (line 304)
* -v option <1>: Assignment Options. (line 12)
* -W option: Options. (line 47)
* . (period), regexp operator: Regexp Operators. (line 44)
@@ -31824,16 +32362,16 @@ Index
(line 6)
* \ (backslash), in bracket expressions: Bracket Expressions. (line 25)
* \ (backslash), in escape sequences: Escape Sequences. (line 6)
-* \ (backslash), in escape sequences <1>: Escape Sequences. (line 100)
+* \ (backslash), in escape sequences <1>: Escape Sequences. (line 103)
* \ (backslash), in escape sequences, POSIX and: Escape Sequences.
- (line 105)
+ (line 108)
* \ (backslash), in regexp constants: Computed Regexps. (line 30)
* \ (backslash), in shell commands: Quoting. (line 48)
* \ (backslash), regexp operator: Regexp Operators. (line 18)
-* \ (backslash), \" escape sequence: Escape Sequences. (line 82)
+* \ (backslash), \" escape sequence: Escape Sequences. (line 85)
* \ (backslash), \' operator (gawk): GNU Regexp Operators.
(line 59)
-* \ (backslash), \/ escape sequence: Escape Sequences. (line 73)
+* \ (backslash), \/ escape sequence: Escape Sequences. (line 76)
* \ (backslash), \< operator (gawk): GNU Regexp Operators.
(line 33)
* \ (backslash), \> operator (gawk): GNU Regexp Operators.
@@ -32050,7 +32588,7 @@ Index
* awf (amazingly workable formatter) program: Glossary. (line 24)
* awk debugging, enabling: Options. (line 108)
* awk language, POSIX version: Assignment Ops. (line 138)
-* awk profiling, enabling: Options. (line 242)
+* awk profiling, enabling: Options. (line 245)
* awk programs: Getting Started. (line 12)
* awk programs <1>: Executable Scripts. (line 6)
* awk programs <2>: Two Rules. (line 6)
@@ -32121,16 +32659,16 @@ Index
(line 6)
* backslash (\), in bracket expressions: Bracket Expressions. (line 25)
* backslash (\), in escape sequences: Escape Sequences. (line 6)
-* backslash (\), in escape sequences <1>: Escape Sequences. (line 100)
+* backslash (\), in escape sequences <1>: Escape Sequences. (line 103)
* backslash (\), in escape sequences, POSIX and: Escape Sequences.
- (line 105)
+ (line 108)
* backslash (\), in regexp constants: Computed Regexps. (line 30)
* backslash (\), in shell commands: Quoting. (line 48)
* backslash (\), regexp operator: Regexp Operators. (line 18)
-* backslash (\), \" escape sequence: Escape Sequences. (line 82)
+* backslash (\), \" escape sequence: Escape Sequences. (line 85)
* backslash (\), \' operator (gawk): GNU Regexp Operators.
(line 59)
-* backslash (\), \/ escape sequence: Escape Sequences. (line 73)
+* backslash (\), \/ escape sequence: Escape Sequences. (line 76)
* backslash (\), \< operator (gawk): GNU Regexp Operators.
(line 33)
* backslash (\), \> operator (gawk): GNU Regexp Operators.
@@ -32249,7 +32787,7 @@ Index
* Brennan, Michael <5>: Other Versions. (line 6)
* Brennan, Michael <6>: Other Versions. (line 48)
* Brian Kernighan's awk: When. (line 21)
-* Brian Kernighan's awk <1>: Escape Sequences. (line 109)
+* Brian Kernighan's awk <1>: Escape Sequences. (line 112)
* Brian Kernighan's awk <2>: GNU Regexp Operators.
(line 85)
* Brian Kernighan's awk <3>: Regexp Field Splitting.
@@ -32457,7 +32995,7 @@ Index
* cosine: Numeric Functions. (line 16)
* counting: Wc Program. (line 6)
* csh utility: Statements/Lines. (line 43)
-* csh utility, POSIXLY_CORRECT environment variable: Options. (line 353)
+* csh utility, POSIXLY_CORRECT environment variable: Options. (line 358)
* csh utility, |& operator, comparison with: Two-way I/O. (line 27)
* ctime() user-defined function: Function Example. (line 74)
* currency symbols, localization: Explaining gettext. (line 104)
@@ -32487,12 +33025,12 @@ Index
* dark corner, CONVFMT variable: Strings And Numbers. (line 39)
* dark corner, escape sequences: Other Arguments. (line 38)
* dark corner, escape sequences, for metacharacters: Escape Sequences.
- (line 141)
+ (line 144)
* dark corner, exit statement: Exit Statement. (line 30)
* dark corner, field separators: Full Line Fields. (line 22)
* dark corner, FILENAME variable: Getline Notes. (line 19)
-* dark corner, FILENAME variable <1>: Auto-set. (line 89)
-* dark corner, FNR/NR variables: Auto-set. (line 326)
+* dark corner, FILENAME variable <1>: Auto-set. (line 108)
+* dark corner, FNR/NR variables: Auto-set. (line 357)
* dark corner, format-control characters: Control Letters. (line 18)
* dark corner, format-control characters <1>: Control Letters.
(line 93)
@@ -32687,12 +33225,12 @@ Index
(line 132)
* differences in awk and gawk, command-line directories: Command-line directories.
(line 6)
-* differences in awk and gawk, ERRNO variable: Auto-set. (line 73)
+* differences in awk and gawk, ERRNO variable: Auto-set. (line 87)
* differences in awk and gawk, error messages: Special FD. (line 19)
* differences in awk and gawk, FIELDWIDTHS variable: User-modified.
(line 37)
* differences in awk and gawk, FPAT variable: User-modified. (line 43)
-* differences in awk and gawk, FUNCTAB variable: Auto-set. (line 115)
+* differences in awk and gawk, FUNCTAB variable: Auto-set. (line 134)
* differences in awk and gawk, function arguments (gawk): Calling Built-in.
(line 16)
* differences in awk and gawk, getline command: Getline. (line 19)
@@ -32715,7 +33253,7 @@ Index
(line 262)
* differences in awk and gawk, print/printf statements: Format Modifiers.
(line 13)
-* differences in awk and gawk, PROCINFO array: Auto-set. (line 129)
+* differences in awk and gawk, PROCINFO array: Auto-set. (line 148)
* differences in awk and gawk, read timeouts: Read Timeout. (line 6)
* differences in awk and gawk, record separators: awk split records.
(line 124)
@@ -32723,9 +33261,11 @@ Index
(line 43)
* differences in awk and gawk, regular expressions: Case-sensitivity.
(line 26)
+* differences in awk and gawk, retrying input: Retrying Input.
+ (line 6)
* differences in awk and gawk, RS/RT variables: gawk split records.
(line 58)
-* differences in awk and gawk, RT variable: Auto-set. (line 264)
+* differences in awk and gawk, RT variable: Auto-set. (line 295)
* differences in awk and gawk, single-character fields: Single Character Fields.
(line 6)
* differences in awk and gawk, split() function: String Functions.
@@ -32733,7 +33273,7 @@ Index
* differences in awk and gawk, strings: Scalar Constants. (line 20)
* differences in awk and gawk, strings, storing: gawk split records.
(line 76)
-* differences in awk and gawk, SYMTAB variable: Auto-set. (line 268)
+* differences in awk and gawk, SYMTAB variable: Auto-set. (line 299)
* differences in awk and gawk, TEXTDOMAIN variable: User-modified.
(line 152)
* differences in awk and gawk, trunc-mod operation: Arithmetic Ops.
@@ -32769,12 +33309,12 @@ Index
* dump debugger command: Miscellaneous Debugger Commands.
(line 9)
* dupword.awk program: Dupword Program. (line 31)
-* dynamic profiling: Profiling. (line 178)
+* dynamic profiling: Profiling. (line 177)
* dynamically loaded extensions: Dynamic Extensions. (line 6)
* e debugger command (alias for enable): Breakpoint Control. (line 73)
* EBCDIC: Ordinal Functions. (line 45)
-* effective group ID of gawk user: Auto-set. (line 134)
-* effective user ID of gawk user: Auto-set. (line 138)
+* effective group ID of gawk user: Auto-set. (line 153)
+* effective user ID of gawk user: Auto-set. (line 161)
* egrep utility: Bracket Expressions. (line 34)
* egrep utility <1>: Egrep Program. (line 6)
* egrep.awk program: Egrep Program. (line 53)
@@ -32828,14 +33368,14 @@ Index
(line 11)
* equals sign (=), == operator <1>: Precedence. (line 64)
* EREs (Extended Regular Expressions): Bracket Expressions. (line 34)
-* ERRNO variable: Auto-set. (line 73)
+* ERRNO variable: Auto-set. (line 87)
* ERRNO variable <1>: TCP/IP Networking. (line 54)
* ERRNO variable, with BEGINFILE pattern: BEGINFILE/ENDFILE. (line 26)
* ERRNO variable, with close() function: Close Files And Pipes.
(line 140)
* ERRNO variable, with getline command: Getline. (line 19)
* error handling: Special FD. (line 19)
-* error handling, ERRNO variable and: Auto-set. (line 73)
+* error handling, ERRNO variable and: Auto-set. (line 87)
* error output: Special FD. (line 6)
* escape processing, gsub()/gensub()/sub() functions: Gory Details.
(line 6)
@@ -32876,7 +33416,7 @@ Index
(line 102)
* exp: Numeric Functions. (line 19)
* expand utility: Very Simple. (line 73)
-* Expat XML parser library: gawkextlib. (line 35)
+* Expat XML parser library: gawkextlib. (line 37)
* exponent: Numeric Functions. (line 19)
* expressions: Expressions. (line 6)
* expressions, as patterns: Expression Patterns. (line 6)
@@ -32895,7 +33435,7 @@ Index
(line 6)
* extension API version: Extension Versioning.
(line 6)
-* extension API, version number: Auto-set. (line 223)
+* extension API, version number: Auto-set. (line 246)
* extension example: Extension Example. (line 6)
* extension registration: Registration Functions.
(line 6)
@@ -32951,7 +33491,6 @@ Index
* field separators, choice of: Field Separators. (line 50)
* field separators, FIELDWIDTHS variable and: User-modified. (line 37)
* field separators, FPAT variable and: User-modified. (line 43)
-* field separators, POSIX and: Fields. (line 6)
* field separators, regular expressions as: Field Separators. (line 50)
* field separators, regular expressions as <1>: Regexp Field Splitting.
(line 6)
@@ -32979,7 +33518,7 @@ Index
* file names, in compatibility mode: Special Caveats. (line 9)
* file names, standard streams in gawk: Special FD. (line 48)
* FILENAME variable: Reading Files. (line 6)
-* FILENAME variable <1>: Auto-set. (line 89)
+* FILENAME variable <1>: Auto-set. (line 108)
* FILENAME variable, getline, setting with: Getline Notes. (line 19)
* filenames, assignments as: Ignoring Assigns. (line 6)
* files, .gmo: Explaining gettext. (line 42)
@@ -33047,8 +33586,8 @@ Index
* fnmatch() extension function: Extension Sample Fnmatch.
(line 12)
* FNR variable: Records. (line 6)
-* FNR variable <1>: Auto-set. (line 99)
-* FNR variable, changing: Auto-set. (line 326)
+* FNR variable <1>: Auto-set. (line 118)
+* FNR variable, changing: Auto-set. (line 357)
* for statement: For Statement. (line 6)
* for statement, looping over arrays: Scanning an Array. (line 20)
* fork() extension function: Extension Sample Fork.
@@ -33100,7 +33639,7 @@ Index
* FSF (Free Software Foundation) <3>: Glossary. (line 405)
* fts() extension function: Extension Sample File Functions.
(line 60)
-* FUNCTAB array: Auto-set. (line 115)
+* FUNCTAB array: Auto-set. (line 134)
* function calls: Function Calls. (line 6)
* function calls, indirect: Indirect Calls. (line 6)
* function calls, indirect, @-notation for: Indirect Calls. (line 47)
@@ -33151,8 +33690,8 @@ Index
* G., Daniel Richard: Acknowledgments. (line 60)
* G., Daniel Richard <1>: Bugs. (line 73)
* Garfinkle, Scott: Contributors. (line 35)
-* gawk program, dynamic profiling: Profiling. (line 178)
-* gawk version: Auto-set. (line 198)
+* gawk program, dynamic profiling: Profiling. (line 177)
+* gawk version: Auto-set. (line 221)
* gawk, ARGIND variable in: Other Arguments. (line 15)
* gawk, awk and: Preface. (line 21)
* gawk, awk and <1>: This Manual. (line 14)
@@ -33173,10 +33712,10 @@ Index
* gawk, ERRNO variable in <1>: Close Files And Pipes.
(line 140)
* gawk, ERRNO variable in <2>: BEGINFILE/ENDFILE. (line 26)
-* gawk, ERRNO variable in <3>: Auto-set. (line 73)
+* gawk, ERRNO variable in <3>: Auto-set. (line 87)
* gawk, ERRNO variable in <4>: TCP/IP Networking. (line 54)
-* gawk, escape sequences: Escape Sequences. (line 118)
-* gawk, extensions, disabling: Options. (line 254)
+* gawk, escape sequences: Escape Sequences. (line 121)
+* gawk, extensions, disabling: Options. (line 257)
* gawk, features, adding: Adding Code. (line 6)
* gawk, features, advanced: Advanced Features. (line 6)
* gawk, field separators and: User-modified. (line 71)
@@ -33188,7 +33727,7 @@ Index
* gawk, FPAT variable in: Splitting By Content.
(line 25)
* gawk, FPAT variable in <1>: User-modified. (line 43)
-* gawk, FUNCTAB array in: Auto-set. (line 115)
+* gawk, FUNCTAB array in: Auto-set. (line 134)
* gawk, function arguments and: Calling Built-in. (line 16)
* gawk, hexadecimal numbers and: Nondecimal-numbers. (line 41)
* gawk, IGNORECASE variable in: Case-sensitivity. (line 26)
@@ -33218,9 +33757,9 @@ Index
* gawk, octal numbers and: Nondecimal-numbers. (line 41)
* gawk, OS/2 version of: PC Using. (line 17)
* gawk, predefined variables and: Built-in Variables. (line 14)
-* gawk, PROCINFO array in: Auto-set. (line 129)
+* gawk, PROCINFO array in: Auto-set. (line 148)
* gawk, PROCINFO array in <1>: Time Functions. (line 47)
-* gawk, PROCINFO array in <2>: Two-way I/O. (line 108)
+* gawk, PROCINFO array in <2>: Two-way I/O. (line 114)
* gawk, regexp constants and: Using Constant Regexps.
(line 28)
* gawk, regular expressions, case sensitivity: Case-sensitivity.
@@ -33230,21 +33769,27 @@ Index
* gawk, regular expressions, precedence: Regexp Operators. (line 161)
* gawk, RT variable in: awk split records. (line 124)
* gawk, RT variable in <1>: Multiple Line. (line 130)
-* gawk, RT variable in <2>: Auto-set. (line 264)
+* gawk, RT variable in <2>: Auto-set. (line 295)
* gawk, See Also awk: Preface. (line 34)
* gawk, source code, obtaining: Getting. (line 6)
* gawk, splitting fields and: Constant Size. (line 86)
* gawk, string-translation functions: I18N Functions. (line 6)
-* gawk, SYMTAB array in: Auto-set. (line 268)
+* gawk, SYMTAB array in: Auto-set. (line 299)
* gawk, TEXTDOMAIN variable in: User-modified. (line 152)
* gawk, timestamps: Time Functions. (line 6)
* gawk, uses for: Preface. (line 34)
-* gawk, versions of, information about, printing: Options. (line 299)
+* gawk, versions of, information about, printing: Options. (line 304)
* gawk, VMS version of: VMS Installation. (line 6)
* gawk, word-boundary operator: GNU Regexp Operators.
(line 66)
* gawkextlib: gawkextlib. (line 6)
* gawkextlib project: gawkextlib. (line 6)
+* gawklibpath_append shell function: Shell Startup Files. (line 29)
+* gawklibpath_default shell function: Shell Startup Files. (line 22)
+* gawklibpath_prepend shell function: Shell Startup Files. (line 25)
+* gawkpath_append shell function: Shell Startup Files. (line 19)
+* gawkpath_default shell function: Shell Startup Files. (line 12)
+* gawkpath_prepend shell function: Shell Startup Files. (line 15)
* General Public License (GPL): Glossary. (line 396)
* General Public License, See GPL: Manual History. (line 11)
* generate time values: Time Functions. (line 25)
@@ -33298,7 +33843,7 @@ Index
* gettext() function (C library): Explaining gettext. (line 63)
* gettimeofday() extension function: Extension Sample Time.
(line 12)
-* git utility: gawkextlib. (line 29)
+* git utility: gawkextlib. (line 31)
* git utility <1>: Other Versions. (line 29)
* git utility <2>: Accessing The Source.
(line 10)
@@ -33326,7 +33871,7 @@ Index
* Grigera, Juan: Contributors. (line 58)
* group database, reading: Group Functions. (line 6)
* group file: Group Functions. (line 6)
-* group ID of gawk user: Auto-set. (line 147)
+* group ID of gawk user: Auto-set. (line 170)
* groups, information about: Group Functions. (line 6)
* gsub: Using Constant Regexps.
(line 43)
@@ -33348,7 +33893,7 @@ Index
* history expansion, in debugger: Readline Support. (line 6)
* histsort.awk program: History Sorting. (line 25)
* Hughes, Phil: Acknowledgments. (line 43)
-* HUP signal, for dynamic profiling: Profiling. (line 210)
+* HUP signal, for dynamic profiling: Profiling. (line 209)
* hyphen (-), - operator: Precedence. (line 51)
* hyphen (-), - operator <1>: Precedence. (line 57)
* hyphen (-), -- operator: Increment Ops. (line 48)
@@ -33430,7 +33975,9 @@ Index
* installing gawk: Installation. (line 6)
* instruction tracing, in debugger: Debugger Info. (line 90)
* int: Numeric Functions. (line 24)
-* INT signal (MS-Windows): Profiling. (line 213)
+* INT signal (MS-Windows): Profiling. (line 212)
+* intdiv: Numeric Functions. (line 29)
+* intdiv <1>: Numeric Functions. (line 29)
* integer array indices: Numeric Array Subscripts.
(line 31)
* integers, arbitrary precision: Arbitrary Precision Integers.
@@ -33486,7 +34033,7 @@ Index
* Kernighan, Brian <8>: Other Versions. (line 13)
* Kernighan, Brian <9>: Basic Data Typing. (line 54)
* Kernighan, Brian <10>: Glossary. (line 206)
-* kill command, dynamic profiling: Profiling. (line 187)
+* kill command, dynamic profiling: Profiling. (line 186)
* Knights, jedi: Undocumented. (line 6)
* Kwok, Conrad: Contributors. (line 35)
* l debugger command (alias for list): Miscellaneous Debugger Commands.
@@ -33559,7 +34106,7 @@ Index
* lint checking, empty programs: Command Line. (line 16)
* lint checking, issuing warnings: Options. (line 184)
* lint checking, POSIXLY_CORRECT environment variable: Options.
- (line 338)
+ (line 343)
* lint checking, undefined functions: Pass By Value/Reference.
(line 85)
* LINT variable: User-modified. (line 87)
@@ -33580,9 +34127,9 @@ Index
* localization: I18N and L10N. (line 6)
* localization, See internationalization, localization: I18N and L10N.
(line 6)
-* log: Numeric Functions. (line 29)
+* log: Numeric Functions. (line 44)
* log files, timestamps in: Time Functions. (line 6)
-* logarithm: Numeric Functions. (line 29)
+* logarithm: Numeric Functions. (line 44)
* logical false/true: Truth Values. (line 6)
* logical operators, See Boolean expressions: Boolean Ops. (line 6)
* login information: Passwd Functions. (line 16)
@@ -33619,12 +34166,12 @@ Index
(line 9)
* matching, leftmost longest: Multiple Line. (line 26)
* matching, null strings: String Functions. (line 537)
-* mawk utility: Escape Sequences. (line 118)
+* mawk utility: Escape Sequences. (line 121)
* mawk utility <1>: Getline/Pipe. (line 62)
* mawk utility <2>: Concatenation. (line 36)
* mawk utility <3>: Nextfile Statement. (line 47)
* mawk utility <4>: Other Versions. (line 48)
-* maximum precision supported by MPFR library: Auto-set. (line 212)
+* maximum precision supported by MPFR library: Auto-set. (line 235)
* McIlroy, Doug: Glossary. (line 257)
* McPhee, Patrick: Contributors. (line 101)
* message object files: Explaining gettext. (line 42)
@@ -33636,8 +34183,8 @@ Index
(line 48)
* messages from extensions: Printing Messages. (line 6)
* metacharacters in regular expressions: Regexp Operators. (line 6)
-* metacharacters, escape sequences for: Escape Sequences. (line 137)
-* minimum precision required by MPFR library: Auto-set. (line 215)
+* metacharacters, escape sequences for: Escape Sequences. (line 140)
+* minimum precision required by MPFR library: Auto-set. (line 238)
* mktime: Time Functions. (line 25)
* modifiers, in format specifiers: Format Modifiers. (line 6)
* monetary information, localization: Explaining gettext. (line 104)
@@ -33657,10 +34204,8 @@ Index
* networks, programming: TCP/IP Networking. (line 6)
* networks, support for: Special Network. (line 6)
* newlines: Statements/Lines. (line 6)
-* newlines <1>: Options. (line 260)
+* newlines <1>: Options. (line 263)
* newlines <2>: Boolean Ops. (line 69)
-* newlines, as field separators: Default Field Splitting.
- (line 6)
* newlines, as record separators: awk split records. (line 12)
* newlines, in dynamic regexps: Computed Regexps. (line 60)
* newlines, in regexp constants: Computed Regexps. (line 70)
@@ -33687,7 +34232,7 @@ Index
* nexti debugger command: Debugger Execution Control.
(line 49)
* NF variable: Fields. (line 33)
-* NF variable <1>: Auto-set. (line 104)
+* NF variable <1>: Auto-set. (line 123)
* NF variable, decrementing: Changing Fields. (line 107)
* ni debugger command (alias for nexti): Debugger Execution Control.
(line 49)
@@ -33696,8 +34241,8 @@ Index
(line 23)
* not Boolean-logic operator: Boolean Ops. (line 6)
* NR variable: Records. (line 6)
-* NR variable <1>: Auto-set. (line 124)
-* NR variable, changing: Auto-set. (line 326)
+* NR variable <1>: Auto-set. (line 143)
+* NR variable, changing: Auto-set. (line 357)
* null strings: awk split records. (line 114)
* null strings <1>: Regexp Field Splitting.
(line 43)
@@ -33817,7 +34362,7 @@ Index
* p debugger command (alias for print): Viewing And Changing Data.
(line 35)
* Papadopoulos, Panos: Contributors. (line 129)
-* parent process ID of gawk process: Auto-set. (line 187)
+* parent process ID of gawk process: Auto-set. (line 210)
* parentheses (), in a profile: Profiling. (line 146)
* parentheses (), regexp operator: Regexp Operators. (line 81)
* password file: Passwd Functions. (line 16)
@@ -33861,14 +34406,14 @@ Index
* plus sign (+), += operator <1>: Precedence. (line 94)
* plus sign (+), regexp operator: Regexp Operators. (line 105)
* pointers to functions: Indirect Calls. (line 6)
-* portability: Escape Sequences. (line 100)
+* portability: Escape Sequences. (line 103)
* portability, #! (executable scripts): Executable Scripts. (line 33)
* portability, ** operator and: Arithmetic Ops. (line 81)
* portability, **= operator and: Assignment Ops. (line 144)
* portability, ARGV variable: Executable Scripts. (line 59)
* portability, backslash continuation and: Statements/Lines. (line 30)
* portability, backslash in escape sequences: Escape Sequences.
- (line 105)
+ (line 108)
* portability, close() function and: Close Files And Pipes.
(line 81)
* portability, data files as single record: gawk split records.
@@ -33886,7 +34431,7 @@ Index
* portability, NF variable, decrementing: Changing Fields. (line 115)
* portability, operators: Increment Ops. (line 60)
* portability, operators, not in POSIX awk: Precedence. (line 97)
-* portability, POSIXLY_CORRECT environment variable: Options. (line 358)
+* portability, POSIXLY_CORRECT environment variable: Options. (line 363)
* portability, substr() function: String Functions. (line 513)
* portable object files: Explaining gettext. (line 37)
* portable object files <1>: Translator i18n. (line 6)
@@ -33907,7 +34452,7 @@ Index
* POSIX awk, < operator and: Getline/File. (line 26)
* POSIX awk, arithmetic operators and: Arithmetic Ops. (line 30)
* POSIX awk, backslashes in string constants: Escape Sequences.
- (line 105)
+ (line 108)
* POSIX awk, BEGIN/END patterns: I/O And BEGIN/END. (line 15)
* POSIX awk, bracket expressions and: Bracket Expressions. (line 34)
* POSIX awk, bracket expressions and, character classes: Bracket Expressions.
@@ -33919,9 +34464,7 @@ Index
* POSIX awk, continue statement and: Continue Statement. (line 44)
* POSIX awk, CONVFMT variable and: User-modified. (line 30)
* POSIX awk, date utility and: Time Functions. (line 253)
-* POSIX awk, field separators and: Fields. (line 6)
-* POSIX awk, field separators and <1>: Full Line Fields. (line 16)
-* POSIX awk, FS variable and: User-modified. (line 60)
+* POSIX awk, field separators and: Full Line Fields. (line 16)
* POSIX awk, function keyword in: Definition Syntax. (line 99)
* POSIX awk, functions and, gsub()/sub(): Gory Details. (line 90)
* POSIX awk, functions and, length(): String Functions. (line 179)
@@ -33936,12 +34479,12 @@ Index
* POSIX awk, regular expressions and: Regexp Operators. (line 161)
* POSIX awk, timestamps and: Time Functions. (line 6)
* POSIX awk, | I/O operator and: Getline/Pipe. (line 56)
-* POSIX mode: Options. (line 254)
-* POSIX mode <1>: Options. (line 338)
+* POSIX mode: Options. (line 257)
+* POSIX mode <1>: Options. (line 343)
* 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 338)
+* POSIXLY_CORRECT environment variable: Options. (line 343)
* PREC variable: User-modified. (line 124)
* precedence: Increment Ops. (line 60)
* precedence <1>: Precedence. (line 6)
@@ -33988,14 +34531,14 @@ Index
* printing, unduplicated lines of text: Uniq Program. (line 6)
* printing, user information: Id Program. (line 6)
* private variables: Library Names. (line 11)
-* process group ID of gawk process: Auto-set. (line 181)
-* process ID of gawk process: Auto-set. (line 184)
+* process group ID of gawk process: Auto-set. (line 204)
+* process ID of gawk process: Auto-set. (line 207)
* processes, two-way communications with: Two-way I/O. (line 6)
* processing data: Basic High Level. (line 6)
-* PROCINFO array: Auto-set. (line 129)
+* PROCINFO array: Auto-set. (line 148)
* PROCINFO array <1>: Time Functions. (line 47)
* PROCINFO array <2>: Passwd Functions. (line 6)
-* PROCINFO array, and communications via ptys: Two-way I/O. (line 108)
+* PROCINFO array, and communications via ptys: Two-way I/O. (line 114)
* PROCINFO array, and group membership: Group Functions. (line 6)
* PROCINFO array, and user and group ID numbers: Id Program. (line 15)
* PROCINFO array, testing the field splitting: Passwd Functions.
@@ -34003,8 +34546,8 @@ Index
* PROCINFO, values of sorted_in: Controlling Scanning.
(line 26)
* profiling awk programs: Profiling. (line 6)
-* profiling awk programs, dynamically: Profiling. (line 178)
-* program identifiers: Auto-set. (line 150)
+* profiling awk programs, dynamically: Profiling. (line 177)
+* program identifiers: Auto-set. (line 173)
* program, definition of: Getting Started. (line 21)
* programming conventions, --non-decimal-data option: Nondecimal Data.
(line 35)
@@ -34040,7 +34583,7 @@ Index
* QuikTrim Awk: Other Versions. (line 139)
* quit debugger command: Miscellaneous Debugger Commands.
(line 102)
-* QUIT signal (MS-Windows): Profiling. (line 213)
+* QUIT signal (MS-Windows): Profiling. (line 212)
* quoting in gawk command lines: Long. (line 26)
* quoting in gawk command lines, tricks for: Quoting. (line 91)
* quoting, for small awk programs: Comments. (line 27)
@@ -34049,12 +34592,12 @@ Index
* Rakitzis, Byron: History Sorting. (line 25)
* Ramey, Chet: Acknowledgments. (line 60)
* Ramey, Chet <1>: General Data Types. (line 6)
-* rand: Numeric Functions. (line 34)
+* rand: Numeric Functions. (line 49)
* random numbers, Cliff: Cliff Random Function.
(line 6)
* random numbers, rand()/srand() functions: Numeric Functions.
- (line 34)
-* random numbers, seed of: Numeric Functions. (line 64)
+ (line 49)
+* random numbers, seed of: Numeric Functions. (line 79)
* range expressions (regexps): Bracket Expressions. (line 6)
* range patterns: Ranges. (line 6)
* range patterns, line continuation and: Ranges. (line 64)
@@ -34141,6 +34684,7 @@ Index
* relational operators, See comparison operators: Typing and Comparison.
(line 9)
* replace in string: String Functions. (line 409)
+* retrying input: Retrying Input. (line 6)
* return debugger command: Debugger Execution Control.
(line 54)
* return statement, user-defined functions: Return Statement. (line 6)
@@ -34164,7 +34708,7 @@ Index
* right shift: Bitwise Functions. (line 54)
* right shift, bitwise: Bitwise Functions. (line 32)
* Ritchie, Dennis: Basic Data Typing. (line 54)
-* RLENGTH variable: Auto-set. (line 251)
+* RLENGTH variable: Auto-set. (line 282)
* RLENGTH variable, match() function and: String Functions. (line 227)
* Robbins, Arnold: Command Line Field Separator.
(line 71)
@@ -34190,11 +34734,11 @@ Index
* RS variable <1>: User-modified. (line 133)
* RS variable, multiline records and: Multiple Line. (line 17)
* rshift: Bitwise Functions. (line 54)
-* RSTART variable: Auto-set. (line 257)
+* RSTART variable: Auto-set. (line 288)
* RSTART variable, match() function and: String Functions. (line 227)
* RT variable: awk split records. (line 124)
* RT variable <1>: Multiple Line. (line 130)
-* RT variable <2>: Auto-set. (line 264)
+* RT variable <2>: Auto-set. (line 295)
* Rubin, Paul: History. (line 30)
* Rubin, Paul <1>: Contributors. (line 16)
* rule, definition of: Getting Started. (line 21)
@@ -34205,14 +34749,14 @@ Index
(line 68)
* sample debugging session: Sample Debugging Session.
(line 6)
-* sandbox mode: Options. (line 285)
+* sandbox mode: Options. (line 290)
* save debugger options: Debugger Info. (line 85)
* scalar or array: Type Functions. (line 11)
* scalar values: Basic Data Typing. (line 13)
* scanning arrays: Scanning an Array. (line 6)
* scanning multidimensional arrays: Multiscanning. (line 11)
* Schorr, Andrew: Acknowledgments. (line 60)
-* Schorr, Andrew <1>: Auto-set. (line 296)
+* Schorr, Andrew <1>: Auto-set. (line 327)
* Schorr, Andrew <2>: Contributors. (line 134)
* Schreiber, Bert: Acknowledgments. (line 38)
* Schreiber, Rita: Acknowledgments. (line 38)
@@ -34231,7 +34775,7 @@ Index
* sed utility: Full Line Fields. (line 22)
* sed utility <1>: Simple Sed. (line 6)
* sed utility <2>: Glossary. (line 16)
-* seeding random number generator: Numeric Functions. (line 64)
+* seeding random number generator: Numeric Functions. (line 79)
* semicolon (;), AWKPATH variable and: PC Using. (line 10)
* semicolon (;), separating statements in actions: Statements/Lines.
(line 90)
@@ -34243,7 +34787,6 @@ Index
* separators, field <1>: User-modified. (line 113)
* separators, field, FIELDWIDTHS variable and: User-modified. (line 37)
* separators, field, FPAT variable and: User-modified. (line 43)
-* separators, field, POSIX and: Fields. (line 6)
* separators, for records: awk split records. (line 6)
* separators, for records <1>: awk split records. (line 85)
* separators, for records <2>: User-modified. (line 133)
@@ -34295,14 +34838,14 @@ Index
* sidebar, A Constant's Base Does Not Affect Its Value: Nondecimal-numbers.
(line 63)
* sidebar, Backslash Before Regular Characters: Escape Sequences.
- (line 103)
+ (line 106)
* sidebar, Changing FS Does Not Affect the Fields: Full Line Fields.
(line 14)
-* sidebar, Changing NR and FNR: Auto-set. (line 324)
+* sidebar, Changing NR and FNR: Auto-set. (line 355)
* sidebar, Controlling Output Buffering with system(): I/O Functions.
(line 164)
* sidebar, Escape Sequences for Metacharacters: Escape Sequences.
- (line 135)
+ (line 138)
* sidebar, FS and IGNORECASE: Field Splitting Summary.
(line 37)
* sidebar, Interactive Versus Noninteractive Buffering: I/O Functions.
@@ -34324,19 +34867,19 @@ Index
(line 130)
* sidebar, Using \n in Bracket Expressions of Dynamic Regexps: Computed Regexps.
(line 58)
-* SIGHUP signal, for dynamic profiling: Profiling. (line 210)
-* SIGINT signal (MS-Windows): Profiling. (line 213)
-* signals, HUP/SIGHUP, for profiling: Profiling. (line 210)
-* signals, INT/SIGINT (MS-Windows): Profiling. (line 213)
-* signals, QUIT/SIGQUIT (MS-Windows): Profiling. (line 213)
-* signals, USR1/SIGUSR1, for profiling: Profiling. (line 187)
+* SIGHUP signal, for dynamic profiling: Profiling. (line 209)
+* SIGINT signal (MS-Windows): Profiling. (line 212)
+* signals, HUP/SIGHUP, for profiling: Profiling. (line 209)
+* signals, INT/SIGINT (MS-Windows): Profiling. (line 212)
+* signals, QUIT/SIGQUIT (MS-Windows): Profiling. (line 212)
+* signals, USR1/SIGUSR1, for profiling: Profiling. (line 186)
* signature program: Signature Program. (line 6)
-* SIGQUIT signal (MS-Windows): Profiling. (line 213)
-* SIGUSR1 signal, for dynamic profiling: Profiling. (line 187)
+* SIGQUIT signal (MS-Windows): Profiling. (line 212)
+* SIGUSR1 signal, for dynamic profiling: Profiling. (line 186)
* silent debugger command: Debugger Execution Control.
(line 10)
-* sin: Numeric Functions. (line 75)
-* sine: Numeric Functions. (line 75)
+* sin: Numeric Functions. (line 90)
+* sine: Numeric Functions. (line 90)
* single quote ('): One-shot. (line 15)
* single quote (') in gawk command lines: Long. (line 35)
* single quote ('), in shell commands: Quoting. (line 48)
@@ -34386,10 +34929,10 @@ Index
* sprintf() function, OFMT variable and: User-modified. (line 113)
* sprintf() function, print/printf statements and: Round Function.
(line 6)
-* sqrt: Numeric Functions. (line 78)
+* sqrt: Numeric Functions. (line 93)
* square brackets ([]), regexp operator: Regexp Operators. (line 56)
-* square root: Numeric Functions. (line 78)
-* srand: Numeric Functions. (line 82)
+* square root: Numeric Functions. (line 93)
+* srand: Numeric Functions. (line 97)
* stack frame: Debugging Terms. (line 10)
* Stallman, Richard: Manual History. (line 6)
* Stallman, Richard <1>: Acknowledgments. (line 18)
@@ -34461,9 +35004,9 @@ Index
* substr: String Functions. (line 482)
* substring: String Functions. (line 482)
* Sumner, Andrew: Other Versions. (line 68)
-* supplementary groups of gawk process: Auto-set. (line 228)
+* supplementary groups of gawk process: Auto-set. (line 251)
* switch statement: Switch Statement. (line 6)
-* SYMTAB array: Auto-set. (line 268)
+* SYMTAB array: Auto-set. (line 299)
* syntactic ambiguity: /= operator vs. /=.../ regexp constant: Assignment Ops.
(line 149)
* system: I/O Functions. (line 107)
@@ -34533,7 +35076,7 @@ Index
(line 37)
* troubleshooting, awk uses FS not IFS: Field Separators. (line 29)
* troubleshooting, backslash before nonspecial character: Escape Sequences.
- (line 105)
+ (line 108)
* troubleshooting, division: Arithmetic Ops. (line 44)
* troubleshooting, fatal errors, field widths, specifying: Constant Size.
(line 22)
@@ -34567,6 +35110,8 @@ Index
* trunc-mod operation: Arithmetic Ops. (line 66)
* truth values: Truth Values. (line 6)
* type conversion: Strings And Numbers. (line 21)
+* type, of variable: Type Functions. (line 14)
+* typeof: Type Functions. (line 14)
* u debugger command (alias for until): Debugger Execution Control.
(line 82)
* unassigned array elements: Reference to Elements.
@@ -34589,7 +35134,7 @@ Index
* uniq.awk program: Uniq Program. (line 65)
* Unix: Glossary. (line 748)
* Unix awk, backslashes in escape sequences: Escape Sequences.
- (line 118)
+ (line 121)
* Unix awk, close() function and: Close Files And Pipes.
(line 132)
* Unix awk, password files, field separators and: Command Line Field Separator.
@@ -34609,10 +35154,11 @@ Index
* user-modifiable variables: User-modified. (line 6)
* users, information about, printing: Id Program. (line 6)
* users, information about, retrieving: Passwd Functions. (line 16)
-* USR1 signal, for dynamic profiling: Profiling. (line 187)
+* USR1 signal, for dynamic profiling: Profiling. (line 186)
* values, numeric: Basic Data Typing. (line 13)
* values, string: Basic Data Typing. (line 13)
* variable assignments and input files: Other Arguments. (line 26)
+* variable type: Type Functions. (line 14)
* variable typing: Typing and Comparison.
(line 9)
* variables: Other Features. (line 6)
@@ -34643,10 +35189,10 @@ Index
* variables, uninitialized, as array subscripts: Uninitialized Subscripts.
(line 6)
* variables, user-defined: Variables. (line 6)
-* version of gawk: Auto-set. (line 198)
-* version of gawk extension API: Auto-set. (line 223)
-* version of GNU MP library: Auto-set. (line 206)
-* version of GNU MPFR library: Auto-set. (line 208)
+* version of gawk: Auto-set. (line 221)
+* version of gawk extension API: Auto-set. (line 246)
+* version of GNU MP library: Auto-set. (line 229)
+* version of GNU MPFR library: Auto-set. (line 231)
* vertical bar (|): Regexp Operators. (line 70)
* vertical bar (|), | operator (I/O): Getline/Pipe. (line 10)
* vertical bar (|), | operator (I/O) <1>: Precedence. (line 64)
@@ -34683,7 +35229,7 @@ Index
* whitespace, as field separators: Default Field Splitting.
(line 6)
* whitespace, functions, calling: Calling Built-in. (line 10)
-* whitespace, newlines as: Options. (line 260)
+* whitespace, newlines as: Options. (line 263)
* Williams, Kent: Contributors. (line 35)
* Woehlke, Matthew: Contributors. (line 80)
* Woods, John: Contributors. (line 28)
@@ -34713,563 +35259,569 @@ Index

Tag Table:
Node: Top1200
-Node: Foreword342138
-Node: Foreword446580
-Node: Preface48112
-Ref: Preface-Footnote-150984
-Ref: Preface-Footnote-251091
-Ref: Preface-Footnote-351325
-Node: History51467
-Node: Names53819
-Ref: Names-Footnote-154913
-Node: This Manual55060
-Ref: This Manual-Footnote-161545
-Node: Conventions61645
-Node: Manual History63999
-Ref: Manual History-Footnote-166994
-Ref: Manual History-Footnote-267035
-Node: How To Contribute67109
-Node: Acknowledgments68238
-Node: Getting Started73124
-Node: Running gawk75563
-Node: One-shot76753
-Node: Read Terminal78016
-Node: Long80048
-Node: Executable Scripts81561
-Ref: Executable Scripts-Footnote-184356
-Node: Comments84459
-Node: Quoting86943
-Node: DOS Quoting92460
-Node: Sample Data Files93135
-Node: Very Simple95730
-Node: Two Rules100632
-Node: More Complex102517
-Node: Statements/Lines105383
-Ref: Statements/Lines-Footnote-1109842
-Node: Other Features110107
-Node: When111043
-Ref: When-Footnote-1112797
-Node: Intro Summary112862
-Node: Invoking Gawk113746
-Node: Command Line115260
-Node: Options116058
-Ref: Options-Footnote-1131965
-Ref: Options-Footnote-2132195
-Node: Other Arguments132220
-Node: Naming Standard Input135167
-Node: Environment Variables136260
-Node: AWKPATH Variable136818
-Ref: AWKPATH Variable-Footnote-1140119
-Ref: AWKPATH Variable-Footnote-2140164
-Node: AWKLIBPATH Variable140425
-Node: Other Environment Variables141569
-Node: Exit Status145517
-Node: Include Files146194
-Node: Loading Shared Libraries149789
-Node: Obsolete151217
-Node: Undocumented151909
-Node: Invoking Summary152206
-Node: Regexp153866
-Node: Regexp Usage155320
-Node: Escape Sequences157357
-Node: Regexp Operators163371
-Ref: Regexp Operators-Footnote-1170787
-Ref: Regexp Operators-Footnote-2170934
-Node: Bracket Expressions171032
-Ref: table-char-classes173508
-Node: Leftmost Longest176645
-Node: Computed Regexps177948
-Node: GNU Regexp Operators181375
-Node: Case-sensitivity185054
-Ref: Case-sensitivity-Footnote-1187941
-Ref: Case-sensitivity-Footnote-2188176
-Node: Regexp Summary188284
-Node: Reading Files189750
-Node: Records191844
-Node: awk split records192577
-Node: gawk split records197508
-Ref: gawk split records-Footnote-1202048
-Node: Fields202085
-Ref: Fields-Footnote-1204865
-Node: Nonconstant Fields204951
-Ref: Nonconstant Fields-Footnote-1207187
-Node: Changing Fields207391
-Node: Field Separators213319
-Node: Default Field Splitting216017
-Node: Regexp Field Splitting217135
-Node: Single Character Fields220488
-Node: Command Line Field Separator221548
-Node: Full Line Fields224766
-Ref: Full Line Fields-Footnote-1226288
-Ref: Full Line Fields-Footnote-2226334
-Node: Field Splitting Summary226435
-Node: Constant Size228509
-Node: Splitting By Content233087
-Ref: Splitting By Content-Footnote-1237058
-Node: Multiple Line237221
-Ref: Multiple Line-Footnote-1243103
-Node: Getline243282
-Node: Plain Getline245486
-Node: Getline/Variable248125
-Node: Getline/File249274
-Node: Getline/Variable/File250660
-Ref: Getline/Variable/File-Footnote-1252263
-Node: Getline/Pipe252351
-Node: Getline/Variable/Pipe255056
-Node: Getline/Coprocess256189
-Node: Getline/Variable/Coprocess257454
-Node: Getline Notes258194
-Node: Getline Summary260989
-Ref: table-getline-variants261411
-Node: Read Timeout262159
-Ref: Read Timeout-Footnote-1266000
-Node: Command-line directories266058
-Node: Input Summary266962
-Node: Input Exercises270134
-Node: Printing270862
-Node: Print272638
-Node: Print Examples274095
-Node: Output Separators276875
-Node: OFMT278892
-Node: Printf280248
-Node: Basic Printf281033
-Node: Control Letters282607
-Node: Format Modifiers286595
-Node: Printf Examples292610
-Node: Redirection295096
-Node: Special FD301937
-Ref: Special FD-Footnote-1305105
-Node: Special Files305179
-Node: Other Inherited Files305796
-Node: Special Network306797
-Node: Special Caveats307657
-Node: Close Files And Pipes308606
-Ref: Close Files And Pipes-Footnote-1315799
-Ref: Close Files And Pipes-Footnote-2315947
-Node: Output Summary316098
-Node: Output Exercises317096
-Node: Expressions317775
-Node: Values318963
-Node: Constants319641
-Node: Scalar Constants320332
-Ref: Scalar Constants-Footnote-1321196
-Node: Nondecimal-numbers321446
-Node: Regexp Constants324459
-Node: Using Constant Regexps324985
-Node: Variables328148
-Node: Using Variables328805
-Node: Assignment Options330715
-Node: Conversion332588
-Node: Strings And Numbers333112
-Ref: Strings And Numbers-Footnote-1336175
-Node: Locale influences conversions336284
-Ref: table-locale-affects339042
-Node: All Operators339660
-Node: Arithmetic Ops340289
-Node: Concatenation342795
-Ref: Concatenation-Footnote-1345642
-Node: Assignment Ops345749
-Ref: table-assign-ops350740
-Node: Increment Ops352053
-Node: Truth Values and Conditions355513
-Node: Truth Values356587
-Node: Typing and Comparison357635
-Node: Variable Typing358455
-Node: Comparison Operators362079
-Ref: table-relational-ops362498
-Node: POSIX String Comparison365993
-Ref: POSIX String Comparison-Footnote-1367067
-Node: Boolean Ops367206
-Ref: Boolean Ops-Footnote-1371688
-Node: Conditional Exp371780
-Node: Function Calls373516
-Node: Precedence377393
-Node: Locales381052
-Node: Expressions Summary382684
-Node: Patterns and Actions385257
-Node: Pattern Overview386377
-Node: Regexp Patterns388054
-Node: Expression Patterns388596
-Node: Ranges392377
-Node: BEGIN/END395485
-Node: Using BEGIN/END396246
-Ref: Using BEGIN/END-Footnote-1398982
-Node: I/O And BEGIN/END399088
-Node: BEGINFILE/ENDFILE401402
-Node: Empty404309
-Node: Using Shell Variables404626
-Node: Action Overview406900
-Node: Statements409225
-Node: If Statement411073
-Node: While Statement412568
-Node: Do Statement414596
-Node: For Statement415744
-Node: Switch Statement418902
-Node: Break Statement421288
-Node: Continue Statement423380
-Node: Next Statement425207
-Node: Nextfile Statement427590
-Node: Exit Statement430242
-Node: Built-in Variables432645
-Node: User-modified433778
-Ref: User-modified-Footnote-1441403
-Node: Auto-set441465
-Ref: Auto-set-Footnote-1454821
-Ref: Auto-set-Footnote-2455027
-Node: ARGC and ARGV455083
-Node: Pattern Action Summary459296
-Node: Arrays461726
-Node: Array Basics463055
-Node: Array Intro463899
-Ref: figure-array-elements465874
-Ref: Array Intro-Footnote-1468578
-Node: Reference to Elements468706
-Node: Assigning Elements471170
-Node: Array Example471661
-Node: Scanning an Array473420
-Node: Controlling Scanning476442
-Ref: Controlling Scanning-Footnote-1481841
-Node: Numeric Array Subscripts482157
-Node: Uninitialized Subscripts484341
-Node: Delete485960
-Ref: Delete-Footnote-1488712
-Node: Multidimensional488769
-Node: Multiscanning491864
-Node: Arrays of Arrays493455
-Node: Arrays Summary498222
-Node: Functions500315
-Node: Built-in501353
-Node: Calling Built-in502434
-Node: Numeric Functions504430
-Ref: Numeric Functions-Footnote-1508458
-Ref: Numeric Functions-Footnote-2508815
-Ref: Numeric Functions-Footnote-3508863
-Node: String Functions509135
-Ref: String Functions-Footnote-1532639
-Ref: String Functions-Footnote-2532767
-Ref: String Functions-Footnote-3533015
-Node: Gory Details533102
-Ref: table-sub-escapes534893
-Ref: table-sub-proposed536412
-Ref: table-posix-sub537775
-Ref: table-gensub-escapes539316
-Ref: Gory Details-Footnote-1540139
-Node: I/O Functions540293
-Ref: table-system-return-values546875
-Ref: I/O Functions-Footnote-1548855
-Ref: I/O Functions-Footnote-2549003
-Node: Time Functions549123
-Ref: Time Functions-Footnote-1559628
-Ref: Time Functions-Footnote-2559696
-Ref: Time Functions-Footnote-3559854
-Ref: Time Functions-Footnote-4559965
-Ref: Time Functions-Footnote-5560077
-Ref: Time Functions-Footnote-6560304
-Node: Bitwise Functions560570
-Ref: table-bitwise-ops561164
-Ref: Bitwise Functions-Footnote-1565502
-Node: Type Functions565675
-Node: I18N Functions566831
-Node: User-defined568482
-Node: Definition Syntax569287
-Ref: Definition Syntax-Footnote-1574974
-Node: Function Example575045
-Ref: Function Example-Footnote-1577967
-Node: Function Caveats577989
-Node: Calling A Function578507
-Node: Variable Scope579465
-Node: Pass By Value/Reference582459
-Node: Return Statement585958
-Node: Dynamic Typing588937
-Node: Indirect Calls589867
-Ref: Indirect Calls-Footnote-1600118
-Node: Functions Summary600246
-Node: Library Functions602951
-Ref: Library Functions-Footnote-1606558
-Ref: Library Functions-Footnote-2606701
-Node: Library Names606872
-Ref: Library Names-Footnote-1610332
-Ref: Library Names-Footnote-2610555
-Node: General Functions610641
-Node: Strtonum Function611744
-Node: Assert Function614766
-Node: Round Function618092
-Node: Cliff Random Function619633
-Node: Ordinal Functions620649
-Ref: Ordinal Functions-Footnote-1623712
-Ref: Ordinal Functions-Footnote-2623964
-Node: Join Function624174
-Ref: Join Function-Footnote-1625944
-Node: Getlocaltime Function626144
-Node: Readfile Function629886
-Node: Shell Quoting631858
-Node: Data File Management633259
-Node: Filetrans Function633891
-Node: Rewind Function637987
-Node: File Checking639892
-Ref: File Checking-Footnote-1641226
-Node: Empty Files641427
-Node: Ignoring Assigns643406
-Node: Getopt Function644956
-Ref: Getopt Function-Footnote-1656425
-Node: Passwd Functions656625
-Ref: Passwd Functions-Footnote-1665464
-Node: Group Functions665552
-Ref: Group Functions-Footnote-1673449
-Node: Walking Arrays673656
-Node: Library Functions Summary676664
-Node: Library Exercises678070
-Node: Sample Programs678535
-Node: Running Examples679305
-Node: Clones680033
-Node: Cut Program681257
-Node: Egrep Program691186
-Ref: Egrep Program-Footnote-1698698
-Node: Id Program698808
-Node: Split Program702488
-Ref: Split Program-Footnote-1705947
-Node: Tee Program706076
-Node: Uniq Program708866
-Node: Wc Program716292
-Ref: Wc Program-Footnote-1720547
-Node: Miscellaneous Programs720641
-Node: Dupword Program721854
-Node: Alarm Program723884
-Node: Translate Program728739
-Ref: Translate Program-Footnote-1733304
-Node: Labels Program733574
-Ref: Labels Program-Footnote-1736925
-Node: Word Sorting737009
-Node: History Sorting741081
-Node: Extract Program742916
-Node: Simple Sed750445
-Node: Igawk Program753519
-Ref: Igawk Program-Footnote-1767850
-Ref: Igawk Program-Footnote-2768052
-Ref: Igawk Program-Footnote-3768174
-Node: Anagram Program768289
-Node: Signature Program771351
-Node: Programs Summary772598
-Node: Programs Exercises773812
-Ref: Programs Exercises-Footnote-1777941
-Node: Advanced Features778032
-Node: Nondecimal Data780022
-Node: Array Sorting781613
-Node: Controlling Array Traversal782313
-Ref: Controlling Array Traversal-Footnote-1790680
-Node: Array Sorting Functions790798
-Ref: Array Sorting Functions-Footnote-1795889
-Node: Two-way I/O796085
-Ref: Two-way I/O-Footnote-1802379
-Ref: Two-way I/O-Footnote-2802566
-Node: TCP/IP Networking802648
-Node: Profiling805766
-Node: Advanced Features Summary813305
-Node: Internationalization815241
-Node: I18N and L10N816721
-Node: Explaining gettext817408
-Ref: Explaining gettext-Footnote-1823300
-Ref: Explaining gettext-Footnote-2823485
-Node: Programmer i18n823650
-Ref: Programmer i18n-Footnote-1828505
-Node: Translator i18n828554
-Node: String Extraction829348
-Ref: String Extraction-Footnote-1830480
-Node: Printf Ordering830566
-Ref: Printf Ordering-Footnote-1833352
-Node: I18N Portability833416
-Ref: I18N Portability-Footnote-1835872
-Node: I18N Example835935
-Ref: I18N Example-Footnote-1838741
-Node: Gawk I18N838814
-Node: I18N Summary839459
-Node: Debugger840800
-Node: Debugging841822
-Node: Debugging Concepts842263
-Node: Debugging Terms844072
-Node: Awk Debugging846647
-Node: Sample Debugging Session847553
-Node: Debugger Invocation848087
-Node: Finding The Bug849473
-Node: List of Debugger Commands855951
-Node: Breakpoint Control857284
-Node: Debugger Execution Control860978
-Node: Viewing And Changing Data864340
-Node: Execution Stack867714
-Node: Debugger Info869351
-Node: Miscellaneous Debugger Commands873422
-Node: Readline Support878510
-Node: Limitations879406
-Node: Debugging Summary881515
-Node: Arbitrary Precision Arithmetic882688
-Node: Computer Arithmetic884104
-Ref: table-numeric-ranges887695
-Ref: Computer Arithmetic-Footnote-1888417
-Node: Math Definitions888474
-Ref: table-ieee-formats891788
-Ref: Math Definitions-Footnote-1892391
-Node: MPFR features892496
-Node: FP Math Caution894213
-Ref: FP Math Caution-Footnote-1895285
-Node: Inexactness of computations895654
-Node: Inexact representation896614
-Node: Comparing FP Values897974
-Node: Errors accumulate899056
-Node: Getting Accuracy900489
-Node: Try To Round903199
-Node: Setting precision904098
-Ref: table-predefined-precision-strings904795
-Node: Setting the rounding mode906625
-Ref: table-gawk-rounding-modes906999
-Ref: Setting the rounding mode-Footnote-1910407
-Node: Arbitrary Precision Integers910586
-Ref: Arbitrary Precision Integers-Footnote-1913570
-Node: POSIX Floating Point Problems913719
-Ref: POSIX Floating Point Problems-Footnote-1917601
-Node: Floating point summary917639
-Node: Dynamic Extensions919829
-Node: Extension Intro921382
-Node: Plugin License922648
-Node: Extension Mechanism Outline923445
-Ref: figure-load-extension923884
-Ref: figure-register-new-function925449
-Ref: figure-call-new-function926541
-Node: Extension API Description928603
-Node: Extension API Functions Introduction930051
-Node: General Data Types934863
-Ref: General Data Types-Footnote-1940818
-Node: Memory Allocation Functions941117
-Ref: Memory Allocation Functions-Footnote-1943962
-Node: Constructor Functions944061
-Node: Registration Functions945806
-Node: Extension Functions946491
-Node: Exit Callback Functions948790
-Node: Extension Version String950040
-Node: Input Parsers950703
-Node: Output Wrappers960585
-Node: Two-way processors965097
-Node: Printing Messages967362
-Ref: Printing Messages-Footnote-1968436
-Node: Updating ERRNO968589
-Node: Requesting Values969328
-Ref: table-value-types-returned970065
-Node: Accessing Parameters970948
-Node: Symbol Table Access972183
-Node: Symbol table by name972695
-Node: Symbol table by cookie974716
-Ref: Symbol table by cookie-Footnote-1978868
-Node: Cached values978932
-Ref: Cached values-Footnote-1982439
-Node: Array Manipulation982530
-Ref: Array Manipulation-Footnote-1983629
-Node: Array Data Types983666
-Ref: Array Data Types-Footnote-1986324
-Node: Array Functions986416
-Node: Flattening Arrays990274
-Node: Creating Arrays997182
-Node: Extension API Variables1001951
-Node: Extension Versioning1002587
-Ref: gawk-api-version1003024
-Node: Extension API Informational Variables1004780
-Node: Extension API Boilerplate1005844
-Node: Finding Extensions1009658
-Node: Extension Example1010217
-Node: Internal File Description1011015
-Node: Internal File Ops1015095
-Ref: Internal File Ops-Footnote-11026857
-Node: Using Internal File Ops1026997
-Ref: Using Internal File Ops-Footnote-11029380
-Node: Extension Samples1029654
-Node: Extension Sample File Functions1031183
-Node: Extension Sample Fnmatch1038832
-Node: Extension Sample Fork1040319
-Node: Extension Sample Inplace1041537
-Node: Extension Sample Ord1044747
-Node: Extension Sample Readdir1045583
-Ref: table-readdir-file-types1046472
-Node: Extension Sample Revout1047277
-Node: Extension Sample Rev2way1047866
-Node: Extension Sample Read write array1048606
-Node: Extension Sample Readfile1050548
-Node: Extension Sample Time1051643
-Node: Extension Sample API Tests1052991
-Node: gawkextlib1053483
-Node: Extension summary1055907
-Node: Extension Exercises1059599
-Node: Language History1061097
-Node: V7/SVR3.11062753
-Node: SVR41064905
-Node: POSIX1066339
-Node: BTL1067718
-Node: POSIX/GNU1068447
-Node: Feature History1073968
-Node: Common Extensions1087297
-Node: Ranges and Locales1088580
-Ref: Ranges and Locales-Footnote-11093196
-Ref: Ranges and Locales-Footnote-21093223
-Ref: Ranges and Locales-Footnote-31093458
-Node: Contributors1093679
-Node: History summary1099239
-Node: Installation1100619
-Node: Gawk Distribution1101563
-Node: Getting1102047
-Node: Extracting1103008
-Node: Distribution contents1104646
-Node: Unix Installation1110397
-Node: Quick Installation1111013
-Node: Additional Configuration Options1113440
-Node: Configuration Philosophy1115244
-Node: Non-Unix Installation1117613
-Node: PC Installation1118071
-Node: PC Binary Installation1119391
-Node: PC Compiling1121243
-Ref: PC Compiling-Footnote-11124037
-Node: PC Testing1124146
-Node: PC Using1125326
-Ref: PC Using-Footnote-11129479
-Node: Cygwin1129552
-Node: MSYS1130322
-Node: VMS Installation1130823
-Node: VMS Compilation1131614
-Ref: VMS Compilation-Footnote-11132843
-Node: VMS Dynamic Extensions1132901
-Node: VMS Installation Details1134586
-Node: VMS Running1136839
-Node: VMS GNV1141118
-Node: VMS Old Gawk1141853
-Node: Bugs1142324
-Node: Other Versions1146639
-Node: Installation summary1153223
-Node: Notes1154274
-Node: Compatibility Mode1155139
-Node: Additions1155921
-Node: Accessing The Source1156846
-Node: Adding Code1158281
-Node: New Ports1164500
-Node: Derived Files1168988
-Ref: Derived Files-Footnote-11174473
-Ref: Derived Files-Footnote-21174508
-Ref: Derived Files-Footnote-31175106
-Node: Future Extensions1175220
-Node: Implementation Limitations1175878
-Node: Extension Design1177061
-Node: Old Extension Problems1178215
-Ref: Old Extension Problems-Footnote-11179733
-Node: Extension New Mechanism Goals1179790
-Ref: Extension New Mechanism Goals-Footnote-11183154
-Node: Extension Other Design Decisions1183343
-Node: Extension Future Growth1185456
-Node: Old Extension Mechanism1186292
-Node: Notes summary1188055
-Node: Basic Concepts1189237
-Node: Basic High Level1189918
-Ref: figure-general-flow1190200
-Ref: figure-process-flow1190885
-Ref: Basic High Level-Footnote-11194186
-Node: Basic Data Typing1194371
-Node: Glossary1197699
-Node: Copying1229645
-Node: GNU Free Documentation License1267184
-Node: Index1292302
+Node: Foreword342506
+Node: Foreword446948
+Node: Preface48480
+Ref: Preface-Footnote-151352
+Ref: Preface-Footnote-251459
+Ref: Preface-Footnote-351693
+Node: History51835
+Node: Names54187
+Ref: Names-Footnote-155281
+Node: This Manual55428
+Ref: This Manual-Footnote-161913
+Node: Conventions62013
+Node: Manual History64367
+Ref: Manual History-Footnote-167362
+Ref: Manual History-Footnote-267403
+Node: How To Contribute67477
+Node: Acknowledgments68606
+Node: Getting Started73492
+Node: Running gawk75931
+Node: One-shot77121
+Node: Read Terminal78384
+Node: Long80416
+Node: Executable Scripts81929
+Ref: Executable Scripts-Footnote-184724
+Node: Comments84827
+Node: Quoting87311
+Node: DOS Quoting92828
+Node: Sample Data Files93503
+Node: Very Simple96098
+Node: Two Rules101000
+Node: More Complex102885
+Node: Statements/Lines105751
+Ref: Statements/Lines-Footnote-1110210
+Node: Other Features110475
+Node: When111411
+Ref: When-Footnote-1113165
+Node: Intro Summary113230
+Node: Invoking Gawk114114
+Node: Command Line115628
+Node: Options116426
+Ref: Options-Footnote-1132524
+Ref: Options-Footnote-2132754
+Node: Other Arguments132779
+Node: Naming Standard Input135726
+Node: Environment Variables136819
+Node: AWKPATH Variable137377
+Ref: AWKPATH Variable-Footnote-1140788
+Ref: AWKPATH Variable-Footnote-2140833
+Node: AWKLIBPATH Variable141094
+Node: Other Environment Variables142351
+Node: Exit Status146172
+Node: Include Files146849
+Node: Loading Shared Libraries150444
+Node: Obsolete151872
+Node: Undocumented152564
+Node: Invoking Summary152861
+Node: Regexp154521
+Node: Regexp Usage156040
+Node: Escape Sequences158077
+Node: Regexp Operators164309
+Ref: Regexp Operators-Footnote-1171725
+Ref: Regexp Operators-Footnote-2171872
+Node: Bracket Expressions171970
+Ref: table-char-classes174446
+Node: Leftmost Longest177583
+Node: Computed Regexps178886
+Node: GNU Regexp Operators182313
+Node: Case-sensitivity185992
+Ref: Case-sensitivity-Footnote-1188888
+Ref: Case-sensitivity-Footnote-2189123
+Node: Strong Regexp Constants189231
+Node: Regexp Summary190020
+Node: Reading Files191495
+Node: Records193658
+Node: awk split records194391
+Node: gawk split records199322
+Ref: gawk split records-Footnote-1203862
+Node: Fields203899
+Node: Nonconstant Fields206640
+Ref: Nonconstant Fields-Footnote-1208876
+Node: Changing Fields209080
+Node: Field Separators215008
+Node: Default Field Splitting217706
+Node: Regexp Field Splitting218824
+Node: Single Character Fields222177
+Node: Command Line Field Separator223237
+Node: Full Line Fields226455
+Ref: Full Line Fields-Footnote-1227977
+Ref: Full Line Fields-Footnote-2228023
+Node: Field Splitting Summary228124
+Node: Constant Size230198
+Node: Splitting By Content234776
+Ref: Splitting By Content-Footnote-1238747
+Node: Multiple Line238910
+Ref: Multiple Line-Footnote-1244792
+Node: Getline244971
+Node: Plain Getline247437
+Node: Getline/Variable250076
+Node: Getline/File251225
+Node: Getline/Variable/File252611
+Ref: Getline/Variable/File-Footnote-1254214
+Node: Getline/Pipe254302
+Node: Getline/Variable/Pipe257007
+Node: Getline/Coprocess258140
+Node: Getline/Variable/Coprocess259405
+Node: Getline Notes260145
+Node: Getline Summary262940
+Ref: table-getline-variants263362
+Node: Read Timeout264110
+Ref: Read Timeout-Footnote-1268016
+Node: Retrying Input268074
+Node: Command-line directories269273
+Node: Input Summary270179
+Node: Input Exercises273351
+Node: Printing274079
+Node: Print275913
+Node: Print Examples277370
+Node: Output Separators280150
+Node: OFMT282167
+Node: Printf283523
+Node: Basic Printf284308
+Node: Control Letters285882
+Node: Format Modifiers289870
+Node: Printf Examples295885
+Node: Redirection298371
+Node: Special FD305212
+Ref: Special FD-Footnote-1308380
+Node: Special Files308454
+Node: Other Inherited Files309071
+Node: Special Network310072
+Node: Special Caveats310932
+Node: Close Files And Pipes311881
+Ref: table-close-pipe-return-values318788
+Ref: Close Files And Pipes-Footnote-1319571
+Ref: Close Files And Pipes-Footnote-2319719
+Node: Nonfatal319871
+Node: Output Summary322196
+Node: Output Exercises323418
+Node: Expressions324097
+Node: Values325285
+Node: Constants325963
+Node: Scalar Constants326654
+Ref: Scalar Constants-Footnote-1327518
+Node: Nondecimal-numbers327768
+Node: Regexp Constants330781
+Node: Using Constant Regexps331307
+Node: Variables334470
+Node: Using Variables335127
+Node: Assignment Options337037
+Node: Conversion338910
+Node: Strings And Numbers339434
+Ref: Strings And Numbers-Footnote-1342497
+Node: Locale influences conversions342606
+Ref: table-locale-affects345364
+Node: All Operators345982
+Node: Arithmetic Ops346611
+Node: Concatenation349117
+Ref: Concatenation-Footnote-1351964
+Node: Assignment Ops352071
+Ref: table-assign-ops357062
+Node: Increment Ops358375
+Node: Truth Values and Conditions361835
+Node: Truth Values362909
+Node: Typing and Comparison363957
+Node: Variable Typing364777
+Node: Comparison Operators368401
+Ref: table-relational-ops368820
+Node: POSIX String Comparison372315
+Ref: POSIX String Comparison-Footnote-1373389
+Node: Boolean Ops373528
+Ref: Boolean Ops-Footnote-1378010
+Node: Conditional Exp378102
+Node: Function Calls379838
+Node: Precedence383715
+Node: Locales387374
+Node: Expressions Summary389006
+Node: Patterns and Actions391579
+Node: Pattern Overview392699
+Node: Regexp Patterns394376
+Node: Expression Patterns394918
+Node: Ranges398699
+Node: BEGIN/END401807
+Node: Using BEGIN/END402568
+Ref: Using BEGIN/END-Footnote-1405304
+Node: I/O And BEGIN/END405410
+Node: BEGINFILE/ENDFILE407724
+Node: Empty410631
+Node: Using Shell Variables410948
+Node: Action Overview413222
+Node: Statements415547
+Node: If Statement417395
+Node: While Statement418890
+Node: Do Statement420918
+Node: For Statement422066
+Node: Switch Statement425224
+Node: Break Statement427610
+Node: Continue Statement429702
+Node: Next Statement431529
+Node: Nextfile Statement433912
+Node: Exit Statement436564
+Node: Built-in Variables438967
+Node: User-modified440100
+Node: Auto-set447686
+Ref: Auto-set-Footnote-1462339
+Ref: Auto-set-Footnote-2462545
+Node: ARGC and ARGV462601
+Node: Pattern Action Summary466814
+Node: Arrays469244
+Node: Array Basics470573
+Node: Array Intro471417
+Ref: figure-array-elements473392
+Ref: Array Intro-Footnote-1476096
+Node: Reference to Elements476224
+Node: Assigning Elements478688
+Node: Array Example479179
+Node: Scanning an Array480938
+Node: Controlling Scanning483960
+Ref: Controlling Scanning-Footnote-1489359
+Node: Numeric Array Subscripts489675
+Node: Uninitialized Subscripts491859
+Node: Delete493478
+Ref: Delete-Footnote-1496230
+Node: Multidimensional496287
+Node: Multiscanning499382
+Node: Arrays of Arrays500973
+Node: Arrays Summary505740
+Node: Functions507833
+Node: Built-in508871
+Node: Calling Built-in509952
+Node: Numeric Functions511948
+Ref: Numeric Functions-Footnote-1516781
+Ref: Numeric Functions-Footnote-2517138
+Ref: Numeric Functions-Footnote-3517186
+Node: String Functions517458
+Ref: String Functions-Footnote-1540962
+Ref: String Functions-Footnote-2541090
+Ref: String Functions-Footnote-3541338
+Node: Gory Details541425
+Ref: table-sub-escapes543216
+Ref: table-sub-proposed544735
+Ref: table-posix-sub546098
+Ref: table-gensub-escapes547639
+Ref: Gory Details-Footnote-1548462
+Node: I/O Functions548616
+Ref: table-system-return-values555198
+Ref: I/O Functions-Footnote-1557178
+Ref: I/O Functions-Footnote-2557326
+Node: Time Functions557446
+Ref: Time Functions-Footnote-1567951
+Ref: Time Functions-Footnote-2568019
+Ref: Time Functions-Footnote-3568177
+Ref: Time Functions-Footnote-4568288
+Ref: Time Functions-Footnote-5568400
+Ref: Time Functions-Footnote-6568627
+Node: Bitwise Functions568893
+Ref: table-bitwise-ops569487
+Ref: Bitwise Functions-Footnote-1573825
+Node: Type Functions573998
+Node: I18N Functions576530
+Node: User-defined578181
+Node: Definition Syntax578986
+Ref: Definition Syntax-Footnote-1584673
+Node: Function Example584744
+Ref: Function Example-Footnote-1587666
+Node: Function Caveats587688
+Node: Calling A Function588206
+Node: Variable Scope589164
+Node: Pass By Value/Reference592158
+Node: Return Statement595657
+Node: Dynamic Typing598636
+Node: Indirect Calls599566
+Ref: Indirect Calls-Footnote-1609817
+Node: Functions Summary609945
+Node: Library Functions612650
+Ref: Library Functions-Footnote-1616257
+Ref: Library Functions-Footnote-2616400
+Node: Library Names616571
+Ref: Library Names-Footnote-1620031
+Ref: Library Names-Footnote-2620254
+Node: General Functions620340
+Node: Strtonum Function621443
+Node: Assert Function624465
+Node: Round Function627791
+Node: Cliff Random Function629332
+Node: Ordinal Functions630348
+Ref: Ordinal Functions-Footnote-1633411
+Ref: Ordinal Functions-Footnote-2633663
+Node: Join Function633873
+Ref: Join Function-Footnote-1635643
+Node: Getlocaltime Function635843
+Node: Readfile Function639585
+Node: Shell Quoting641557
+Node: Data File Management642958
+Node: Filetrans Function643590
+Node: Rewind Function647686
+Node: File Checking649591
+Ref: File Checking-Footnote-1650925
+Node: Empty Files651126
+Node: Ignoring Assigns653105
+Node: Getopt Function654655
+Ref: Getopt Function-Footnote-1666124
+Node: Passwd Functions666324
+Ref: Passwd Functions-Footnote-1675163
+Node: Group Functions675251
+Ref: Group Functions-Footnote-1683148
+Node: Walking Arrays683355
+Node: Library Functions Summary686363
+Node: Library Exercises687769
+Node: Sample Programs688234
+Node: Running Examples689004
+Node: Clones689732
+Node: Cut Program690956
+Node: Egrep Program700885
+Ref: Egrep Program-Footnote-1708397
+Node: Id Program708507
+Node: Split Program712187
+Ref: Split Program-Footnote-1715646
+Node: Tee Program715775
+Node: Uniq Program718565
+Node: Wc Program725991
+Ref: Wc Program-Footnote-1730246
+Node: Miscellaneous Programs730340
+Node: Dupword Program731553
+Node: Alarm Program733583
+Node: Translate Program738438
+Ref: Translate Program-Footnote-1743003
+Node: Labels Program743273
+Ref: Labels Program-Footnote-1746624
+Node: Word Sorting746708
+Node: History Sorting750780
+Node: Extract Program752615
+Node: Simple Sed760144
+Node: Igawk Program763218
+Ref: Igawk Program-Footnote-1777549
+Ref: Igawk Program-Footnote-2777751
+Ref: Igawk Program-Footnote-3777873
+Node: Anagram Program777988
+Node: Signature Program781050
+Node: Programs Summary782297
+Node: Programs Exercises783511
+Ref: Programs Exercises-Footnote-1787640
+Node: Advanced Features787731
+Node: Nondecimal Data789721
+Node: Array Sorting791312
+Node: Controlling Array Traversal792012
+Ref: Controlling Array Traversal-Footnote-1800379
+Node: Array Sorting Functions800497
+Ref: Array Sorting Functions-Footnote-1805588
+Node: Two-way I/O805784
+Ref: Two-way I/O-Footnote-1812334
+Ref: Two-way I/O-Footnote-2812521
+Node: TCP/IP Networking812603
+Node: Profiling815721
+Ref: Profiling-Footnote-1824214
+Node: Advanced Features Summary824537
+Node: Internationalization826381
+Node: I18N and L10N827861
+Node: Explaining gettext828548
+Ref: Explaining gettext-Footnote-1834440
+Ref: Explaining gettext-Footnote-2834625
+Node: Programmer i18n834790
+Ref: Programmer i18n-Footnote-1839645
+Node: Translator i18n839694
+Node: String Extraction840488
+Ref: String Extraction-Footnote-1841620
+Node: Printf Ordering841706
+Ref: Printf Ordering-Footnote-1844492
+Node: I18N Portability844556
+Ref: I18N Portability-Footnote-1847012
+Node: I18N Example847075
+Ref: I18N Example-Footnote-1849881
+Node: Gawk I18N849954
+Node: I18N Summary850599
+Node: Debugger851940
+Node: Debugging852962
+Node: Debugging Concepts853403
+Node: Debugging Terms855212
+Node: Awk Debugging857787
+Node: Sample Debugging Session858693
+Node: Debugger Invocation859227
+Node: Finding The Bug860613
+Node: List of Debugger Commands867091
+Node: Breakpoint Control868424
+Node: Debugger Execution Control872118
+Node: Viewing And Changing Data875480
+Node: Execution Stack878854
+Node: Debugger Info880491
+Node: Miscellaneous Debugger Commands884562
+Node: Readline Support889650
+Node: Limitations890546
+Ref: Limitations-Footnote-1894777
+Node: Debugging Summary894828
+Node: Arbitrary Precision Arithmetic896107
+Node: Computer Arithmetic897523
+Ref: table-numeric-ranges901114
+Ref: Computer Arithmetic-Footnote-1901836
+Node: Math Definitions901893
+Ref: table-ieee-formats905207
+Ref: Math Definitions-Footnote-1905810
+Node: MPFR features905915
+Node: FP Math Caution907632
+Ref: FP Math Caution-Footnote-1908704
+Node: Inexactness of computations909073
+Node: Inexact representation910033
+Node: Comparing FP Values911393
+Node: Errors accumulate912475
+Node: Getting Accuracy913908
+Node: Try To Round916618
+Node: Setting precision917517
+Ref: table-predefined-precision-strings918214
+Node: Setting the rounding mode920044
+Ref: table-gawk-rounding-modes920418
+Ref: Setting the rounding mode-Footnote-1923826
+Node: Arbitrary Precision Integers924005
+Ref: Arbitrary Precision Integers-Footnote-1928922
+Node: POSIX Floating Point Problems929071
+Ref: POSIX Floating Point Problems-Footnote-1932953
+Node: Floating point summary932991
+Node: Dynamic Extensions935181
+Node: Extension Intro936734
+Node: Plugin License938000
+Node: Extension Mechanism Outline938797
+Ref: figure-load-extension939236
+Ref: figure-register-new-function940801
+Ref: figure-call-new-function941893
+Node: Extension API Description943955
+Node: Extension API Functions Introduction945487
+Node: General Data Types950346
+Ref: General Data Types-Footnote-1956301
+Node: Memory Allocation Functions956600
+Ref: Memory Allocation Functions-Footnote-1959445
+Node: Constructor Functions959544
+Node: Registration Functions961289
+Node: Extension Functions961974
+Node: Exit Callback Functions964597
+Node: Extension Version String965847
+Node: Input Parsers966510
+Node: Output Wrappers976392
+Node: Two-way processors980904
+Node: Printing Messages983169
+Ref: Printing Messages-Footnote-1984340
+Node: Updating ERRNO984493
+Node: Requesting Values985232
+Ref: table-value-types-returned985969
+Node: Accessing Parameters986852
+Node: Symbol Table Access988087
+Node: Symbol table by name988599
+Node: Symbol table by cookie990620
+Ref: Symbol table by cookie-Footnote-1994772
+Node: Cached values994836
+Ref: Cached values-Footnote-1998343
+Node: Array Manipulation998434
+Ref: Array Manipulation-Footnote-1999525
+Node: Array Data Types999562
+Ref: Array Data Types-Footnote-11002220
+Node: Array Functions1002312
+Node: Flattening Arrays1006170
+Node: Creating Arrays1013078
+Node: Redirection API1017847
+Node: Extension API Variables1020678
+Node: Extension Versioning1021311
+Ref: gawk-api-version1021748
+Node: Extension API Informational Variables1023504
+Node: Extension API Boilerplate1024568
+Node: Finding Extensions1028382
+Node: Extension Example1028941
+Node: Internal File Description1029739
+Node: Internal File Ops1033819
+Ref: Internal File Ops-Footnote-11045581
+Node: Using Internal File Ops1045721
+Ref: Using Internal File Ops-Footnote-11048104
+Node: Extension Samples1048378
+Node: Extension Sample File Functions1049907
+Node: Extension Sample Fnmatch1057556
+Node: Extension Sample Fork1059043
+Node: Extension Sample Inplace1060261
+Node: Extension Sample Ord1063471
+Node: Extension Sample Readdir1064307
+Ref: table-readdir-file-types1065196
+Node: Extension Sample Revout1066001
+Node: Extension Sample Rev2way1066590
+Node: Extension Sample Read write array1067330
+Node: Extension Sample Readfile1069272
+Node: Extension Sample Time1070367
+Node: Extension Sample API Tests1071715
+Node: gawkextlib1072207
+Node: Extension summary1074654
+Node: Extension Exercises1078356
+Node: Language History1079854
+Node: V7/SVR3.11081510
+Node: SVR41083662
+Node: POSIX1085096
+Node: BTL1086475
+Node: POSIX/GNU1087204
+Node: Feature History1093066
+Node: Common Extensions1107436
+Node: Ranges and Locales1108719
+Ref: Ranges and Locales-Footnote-11113335
+Ref: Ranges and Locales-Footnote-21113362
+Ref: Ranges and Locales-Footnote-31113597
+Node: Contributors1113818
+Node: History summary1119378
+Node: Installation1120758
+Node: Gawk Distribution1121702
+Node: Getting1122186
+Node: Extracting1123147
+Node: Distribution contents1124785
+Node: Unix Installation1130879
+Node: Quick Installation1131561
+Node: Shell Startup Files1133975
+Node: Additional Configuration Options1135053
+Node: Configuration Philosophy1136858
+Node: Non-Unix Installation1139227
+Node: PC Installation1139685
+Node: PC Binary Installation1141005
+Node: PC Compiling1142857
+Ref: PC Compiling-Footnote-11145651
+Node: PC Testing1145760
+Node: PC Using1146940
+Ref: PC Using-Footnote-11151093
+Node: Cygwin1151166
+Node: MSYS1151936
+Node: VMS Installation1152437
+Node: VMS Compilation1153228
+Ref: VMS Compilation-Footnote-11154457
+Node: VMS Dynamic Extensions1154515
+Node: VMS Installation Details1156200
+Node: VMS Running1158453
+Node: VMS GNV1162732
+Node: VMS Old Gawk1163467
+Node: Bugs1163938
+Node: Other Versions1168253
+Node: Installation summary1174837
+Node: Notes1175888
+Node: Compatibility Mode1176753
+Node: Additions1177535
+Node: Accessing The Source1178460
+Node: Adding Code1179895
+Node: New Ports1186114
+Node: Derived Files1190602
+Ref: Derived Files-Footnote-11196087
+Ref: Derived Files-Footnote-21196122
+Ref: Derived Files-Footnote-31196720
+Node: Future Extensions1196834
+Node: Implementation Limitations1197492
+Node: Extension Design1198675
+Node: Old Extension Problems1199829
+Ref: Old Extension Problems-Footnote-11201347
+Node: Extension New Mechanism Goals1201404
+Ref: Extension New Mechanism Goals-Footnote-11204768
+Node: Extension Other Design Decisions1204957
+Node: Extension Future Growth1207070
+Node: Old Extension Mechanism1207906
+Node: Notes summary1209669
+Node: Basic Concepts1210851
+Node: Basic High Level1211532
+Ref: figure-general-flow1211814
+Ref: figure-process-flow1212499
+Ref: Basic High Level-Footnote-11215800
+Node: Basic Data Typing1215985
+Node: Glossary1219313
+Node: Copying1251259
+Node: GNU Free Documentation License1288798
+Node: Index1313916

End Tag Table