aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/ChangeLog23
-rw-r--r--doc/gawk.14
-rw-r--r--doc/gawk.info999
-rw-r--r--doc/gawk.texi122
4 files changed, 678 insertions, 470 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 2ae225be..53ab79a9 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,26 @@
+2011-09-24 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawk.1: Fix some spelling errors. Thanks to
+ Jeroen Schot <schot@A-Eskwadraat.nl>.
+ * gawk.texi: Some minor fixes.
+
+2011-07-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawk.texi (Gory Details): Restore text on historical behavior
+ etc. and add explanation on gawk 4.0.x.
+
+2011-07-17 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawk.texi: Add reference in node Expressions to node Precedence,
+ based on suggestion from Dan Jacobson dated 4 Jun 2001.
+
+2011-07-17 Paul Eggert <eggert@twinsun.com>
+
+ * gawk.texi: Warn up-front (indirectly) that plain gawk is not
+ compatible with SVR4 awk and with POSIX awk. Describe how
+ gawk differs from the GNU standard in its interpretation of
+ POSIXLY_CORRECT. (From mail dated 15 May 2001).
+
2011-06-24 Arnold D. Robbins <arnold@skeeve.com>
* Makefile.am (EXTRA_DIST): Add ChangeLog.0.
diff --git a/doc/gawk.1 b/doc/gawk.1
index 24d7d2d5..205eb389 100644
--- a/doc/gawk.1
+++ b/doc/gawk.1
@@ -2491,7 +2491,7 @@ source array
.I s
unchanged. The optional string
.I how
-controls the direction and the comparsion mode.
+controls the direction and the comparison mode.
Valid values for
.I how
are
@@ -3775,7 +3775,7 @@ Concatenate and line number (a variation on a theme):
Run an external command for particular lines of data:
.ft B
- tail -f access_log |
+ tail \-f access_log |
awk '/myhome.html/ { system("nmap " $1 ">> logdir/myhome.html") }'
.ft R
.fi
diff --git a/doc/gawk.info b/doc/gawk.info
index 3dd9d731..13245683 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -654,12 +654,13 @@ inconvenient. Such jobs are often easier with `awk'. The `awk'
utility interprets a special-purpose programming language that makes it
easy to handle simple data-reformatting jobs.
- The GNU implementation of `awk' is called `gawk'; it is fully
-compatible with the POSIX(1) specification of the `awk' language and
-with the Unix version of `awk' maintained by Brian Kernighan. This
-means that all properly written `awk' programs should work with `gawk'.
-Thus, we usually don't distinguish between `gawk' and other `awk'
-implementations.
+ The GNU implementation of `awk' is called `gawk'; if you invoke it
+with the proper options or environment variables (*note Options::), it
+is fully compatible with the POSIX(1) specification of the `awk'
+language and with the Unix version of `awk' maintained by Brian
+Kernighan. This means that all properly written `awk' programs should
+work with `gawk'. Thus, we usually don't distinguish between `gawk'
+and other `awk' implementations.
Using `awk' allows you to:
@@ -2443,12 +2444,15 @@ source code.
If the environment variable `POSIXLY_CORRECT' exists, then `gawk'
behaves in strict POSIX mode, exactly as if you had supplied the
`--posix' command-line option. Many GNU programs look for this
-environment variable to turn on strict POSIX mode. If `--lint' is
-supplied on the command line and `gawk' turns on POSIX mode because of
-`POSIXLY_CORRECT', then it issues a warning message indicating that
-POSIX mode is in effect. You would typically set this variable in your
-shell's startup file. For a Bourne-compatible shell (such as Bash),
-you would add these lines to the `.profile' file in your home directory:
+environment variable to suppress extensions that conflict with POSIX,
+but `gawk' behaves differently: it suppresses all extensions, even
+those that do not conflict with POSIX, and behaves in strict POSIX
+mode. If `--lint' is supplied on the command line and `gawk' turns on
+POSIX mode because of `POSIXLY_CORRECT', then it issues a warning
+message indicating that POSIX mode is in effect. You would typically
+set this variable in your shell's startup file. For a
+Bourne-compatible shell (such as Bash), you would add these lines to
+the `.profile' file in your home directory:
POSIXLY_CORRECT=true
export POSIXLY_CORRECT
@@ -8109,6 +8113,9 @@ inside Boolean patterns. Likewise, the special patterns `BEGIN', `END',
`BEGINFILE' and `ENDFILE', which never match any input record, are not
expressions and cannot appear inside Boolean patterns.
+ The precedence of the different operators which can appear in
+patterns is described in *note Precedence::.
+

File: gawk.info, Node: Ranges, Next: BEGIN/END, Prev: Expression Patterns, Up: Pattern Overview
@@ -8336,7 +8343,8 @@ would otherwise be difficult or impossible to perform:
The `ENDFILE' rule is called when `gawk' has finished processing the
last record in an input file. For the last input file, it will be
-called before any `END' rules.
+called before any `END' rules. The `ENDFILE' rule is executed even for
+empty input files.
Normally, when an error occurs when reading input in the normal input
processing loop, the error is fatal. However, if an `ENDFILE' rule is
@@ -8960,13 +8968,16 @@ implementations, or if `gawk' is in compatibility mode (*note
Options::), `nextfile' is not special.
Upon execution of the `nextfile' statement, any `ENDFILE' rules are
-executed, `FILENAME' is updated to the name of the next data file
-listed on the command line, `FNR' is reset to one, `ARGIND' is
-incremented, any `BEGINFILE' rules are executed, and processing starts
-over with the first rule in the program. (`ARGIND' hasn't been
-introduced yet. *Note Built-in Variables::.) If the `nextfile'
-statement causes the end of the input to be reached, then the code in
-any `END' rules is executed. *Note BEGIN/END::.
+executed except in the case as mentioned below, `FILENAME' is updated
+to the name of the next data file listed on the command line, `FNR' is
+reset to one, `ARGIND' is incremented, any `BEGINFILE' rules are
+executed, and processing starts over with the first rule in the program.
+(`ARGIND' hasn't been introduced yet. *Note Built-in Variables::.) If
+the `nextfile' statement causes the end of the input to be reached,
+then the code in any `END' rules is executed. An exception to this is
+when the `nextfile' is invoked during execution of any statement in an
+`END' rule; In this case, it causes the program to stop immediately.
+*Note BEGIN/END::.
The `nextfile' statement is useful when there are many data files to
process but it isn't necessary to process every record in every file.
@@ -8976,7 +8987,8 @@ accomplishes this much more efficiently.
In addition, `nextfile' is useful inside a `BEGINFILE' rule to skip
over a file that would otherwise cause `gawk' to exit with a fatal
-error. *Note BEGINFILE/ENDFILE::.
+error. In this case, `ENDFILE' rules are not executed. *Note
+BEGINFILE/ENDFILE::.
While one might think that `close(FILENAME)' would accomplish the
same as `nextfile', this isn't true. `close()' is reserved for closing
@@ -11153,6 +11165,62 @@ backslashes entered at the lexical level.)
The problem with the historical approach is that there is no way to
get a literal `\' followed by the matched text.
+ The 1992 POSIX standard attempted to fix this problem. That standard
+says that `sub()' and `gsub()' look for either a `\' or an `&' after
+the `\'. If either one follows a `\', that character is output
+literally. The interpretation of `\' and `&' then becomes as shown in
+*note table-sub-posix-92::.
+
+ You type `sub()' sees `sub()' generates
+ ------- --------- --------------
+ `&' `&' the matched text
+ `\\&' `\&' a literal `&'
+ `\\\\&' `\\&' a literal `\', then the matched text
+ `\\\\\\&' `\\\&' a literal `\&'
+
+Table 9.2: 1992 POSIX Rules for sub and gsub Escape Sequence Processing
+
+This appears to solve the problem. Unfortunately, the phrasing of the
+standard is unusual. It says, in effect, that `\' turns off the special
+meaning of any following character, but for anything other than `\' and
+`&', such special meaning is undefined. This wording leads to two
+problems:
+
+ * Backslashes must now be doubled in the REPLACEMENT string, breaking
+ historical `awk' programs.
+
+ * To make sure that an `awk' program is portable, _every_ character
+ in the REPLACEMENT string must be preceded with a backslash.(1)
+
+ Because of the problems just listed, in 1996, the `gawk' maintainer
+submitted proposed text for a revised standard that reverts to rules
+that correspond more closely to the original existing practice. The
+proposed rules have special cases that make it possible to produce a
+`\' preceding the matched text. This is shown in *note
+table-sub-proposed::.
+
+ You type `sub()' sees `sub()' generates
+ ------- --------- --------------
+ `\\\\\\&' `\\\&' a literal `\&'
+ `\\\\&' `\\&' a literal `\', followed by the matched text
+ `\\&' `\&' a literal `&'
+ `\\q' `\q' a literal `\q'
+ `\\\\' `\\' `\\'
+
+Table 9.3: Proposed rules for sub and backslash
+
+ In a nutshell, at the runtime level, there are now three special
+sequences of characters (`\\\&', `\\&' and `\&') whereas historically
+there was only one. However, as in the historical case, any `\' that
+is not part of one of these three sequences is not special and appears
+in the output literally.
+
+ `gawk' 3.0 and 3.1 follow these proposed POSIX rules for `sub()' and
+`gsub()'. The POSIX standard took much longer to be revised than was
+expected in 1996. The 2001 standard does not follow the above rules.
+Instead, the rules there are somewhat simpler. The results are similar
+except for one case.
+
The POSIX rules state that `\&' in the replacement string produces a
literal `&', `\\' produces a literal `\', and `\' followed by anything
else is not special; the `\' is placed straight into the output. These
@@ -11166,9 +11234,21 @@ rules are presented in *note table-posix-sub::.
`\\q' `\q' a literal `\q'
`\\\\' `\\' `\'
-Table 9.2: POSIX rules for `sub()' and `gsub()'
+Table 9.4: POSIX rules for `sub()' and `gsub()'
- `gawk' follows the POSIX rules.
+ The only case where the difference is noticeable is the last one:
+`\\\\' is seen as `\\' and produces `\' instead of `\\'.
+
+ Starting with version 3.1.4, `gawk' followed the POSIX rules when
+`--posix' is specified (*note Options::). Otherwise, it continued to
+follow the 1996 proposed rules, since that had been its behavior for
+many years.
+
+ When version 4.0.0, was released, the `gawk' maintainer made the
+POSIX rules the default, breaking well over a decade's worth of
+backwards compatibility.(2) Needless to say, this was a bad idea, and
+as of version 4.0.1, `gawk' resumed its historical behavior, and only
+follows the POSIX rules when `--posix' is given.
The rules for `gensub()' are considerably simpler. At the runtime
level, whenever `gawk' sees a `\', if the following character is a
@@ -11186,7 +11266,7 @@ the `\' does not, as shown in *note table-gensub-escapes::.
`\\\\\\&' `\\\&' a literal `\&'
`\\q' `\q' a literal `q'
-Table 9.3: Escape Sequence Processing for `gensub()'
+Table 9.5: Escape Sequence Processing for `gensub()'
Because of the complexity of the lexical and runtime level processing
and the special cases for `sub()' and `gsub()', we recommend the use of
@@ -11204,6 +11284,14 @@ functions. For example:
Although this makes a certain amount of sense, it can be surprising.
+ ---------- Footnotes ----------
+
+ (1) This consequence was certainly unintended.
+
+ (2) This was rather naive of him, despite there being a note in this
+section indicating that the next major version would move to the POSIX
+rules.
+

File: gawk.info, Node: I/O Functions, Next: Time Functions, Prev: String Functions, Up: Built-in
@@ -11727,7 +11815,7 @@ table-bitwise-ops::.
0 | 0 0 | 0 1 | 0 1
1 | 0 1 | 1 1 | 1 0
-Table 9.4: Bitwise Operations
+Table 9.6: Bitwise Operations
As you can see, the result of an AND operation is 1 only when _both_
bits are 1. The result of an OR operation is 1 if _either_ bit is 1.
@@ -13711,7 +13799,7 @@ affect the loop.
-| 4 4
-| 3 3
$ gawk 'BEGIN {
- > PROCINFO["sorted_in"] = "@str_ind_asc"
+ > PROCINFO["sorted_in"] = "@ind_str_asc"
> a[4] = 4
> a[3] = 3
> for (i in a)
@@ -24621,7 +24709,7 @@ Index
* * (asterisk), * operator, as regexp operator: Regexp Operators.
(line 87)
* * (asterisk), * operator, null strings, matching: Gory Details.
- (line 96)
+ (line 164)
* * (asterisk), ** operator <1>: Precedence. (line 49)
* * (asterisk), ** operator: Arithmetic Ops. (line 81)
* * (asterisk), **= operator <1>: Precedence. (line 95)
@@ -24861,7 +24949,7 @@ Index
(line 23)
* advanced features, network connections, See Also networks, connections: Advanced Features.
(line 6)
-* advanced features, null strings, matching: Gory Details. (line 96)
+* advanced features, null strings, matching: Gory Details. (line 164)
* advanced features, operators, precedence: Increment Ops. (line 61)
* advanced features, piping into sh: Redirection. (line 143)
* advanced features, regexp constants: Assignment Ops. (line 148)
@@ -24958,7 +25046,7 @@ Index
* asterisk (*), * operator, as regexp operator: Regexp Operators.
(line 87)
* asterisk (*), * operator, null strings, matching: Gory Details.
- (line 96)
+ (line 164)
* asterisk (*), ** operator <1>: Precedence. (line 49)
* asterisk (*), ** operator: Arithmetic Ops. (line 81)
* asterisk (*), **= operator <1>: Precedence. (line 95)
@@ -24992,7 +25080,7 @@ Index
(line 6)
* awk, function of: Getting Started. (line 6)
* awk, gawk and <1>: This Manual. (line 14)
-* awk, gawk and: Preface. (line 22)
+* awk, gawk and: Preface. (line 23)
* awk, history of: History. (line 17)
* awk, implementation issues, pipes: Redirection. (line 135)
* awk, implementations: Other Versions. (line 6)
@@ -25000,15 +25088,15 @@ Index
* awk, invoking: Command Line. (line 6)
* awk, new vs. old: Names. (line 6)
* awk, new vs. old, OFMT variable: Conversion. (line 55)
-* awk, POSIX and: Preface. (line 22)
-* awk, POSIX and, See Also POSIX awk: Preface. (line 22)
+* awk, POSIX and: Preface. (line 23)
+* awk, POSIX and, See Also POSIX awk: Preface. (line 23)
* awk, regexp constants and: Comparison Operators.
(line 103)
-* awk, See Also gawk: Preface. (line 35)
+* awk, See Also gawk: Preface. (line 36)
* awk, terms describing: This Manual. (line 6)
* awk, uses for <1>: When. (line 6)
* awk, uses for <2>: Getting Started. (line 12)
-* awk, uses for: Preface. (line 22)
+* awk, uses for: Preface. (line 23)
* awk, versions of <1>: V7/SVR3.1. (line 6)
* awk, versions of: Names. (line 10)
* awk, versions of, changes between SVR3.1 and SVR4: SVR4. (line 6)
@@ -25323,7 +25411,7 @@ Index
* cos() function: Numeric Functions. (line 14)
* counting: Wc Program. (line 6)
* csh utility: Statements/Lines. (line 44)
-* csh utility, POSIXLY_CORRECT environment variable: Options. (line 302)
+* csh utility, POSIXLY_CORRECT environment variable: Options. (line 305)
* csh utility, |& operator, comparison with: Two-way I/O. (line 44)
* ctime() user-defined function: Function Example. (line 72)
* currency symbols, localization: Explaining gettext. (line 103)
@@ -25925,14 +26013,14 @@ Index
* functions, user-defined, counts: Profiling. (line 132)
* functions, user-defined, library of: Library Functions. (line 6)
* functions, user-defined, next/nextfile statements and <1>: Nextfile Statement.
- (line 40)
+ (line 44)
* functions, user-defined, next/nextfile statements and: Next Statement.
(line 45)
* G-d: Acknowledgments. (line 81)
* Garfinkle, Scott: Contributors. (line 35)
* gawk, ARGIND variable in: Other Arguments. (line 12)
* gawk, awk and <1>: This Manual. (line 14)
-* gawk, awk and: Preface. (line 22)
+* gawk, awk and: Preface. (line 23)
* gawk, bitwise operations in: Bitwise Functions. (line 39)
* gawk, break statement in: Break Statement. (line 51)
* gawk, built-in variables and: Built-in Variables. (line 14)
@@ -26013,13 +26101,13 @@ Index
(line 10)
* gawk, RT variable in <3>: Multiple Line. (line 129)
* gawk, RT variable in: Records. (line 112)
-* gawk, See Also awk: Preface. (line 35)
+* gawk, See Also awk: Preface. (line 36)
* gawk, source code, obtaining: Getting. (line 6)
* gawk, splitting fields and: Constant Size. (line 87)
* gawk, string-translation functions: I18N Functions. (line 6)
* gawk, TEXTDOMAIN variable in: User-modified. (line 153)
* gawk, timestamps: Time Functions. (line 6)
-* gawk, uses for: Preface. (line 35)
+* gawk, uses for: Preface. (line 36)
* gawk, versions of, information about, printing: Options. (line 250)
* gawk, VMS version of: VMS Installation. (line 6)
* gawk, word-boundary operator: GNU Regexp Operators.
@@ -26059,7 +26147,7 @@ Index
* getline command, return values: Getline. (line 19)
* getline command, variants: Getline Summary. (line 6)
* getline statement, BEGINFILE/ENDFILE patterns and: BEGINFILE/ENDFILE.
- (line 53)
+ (line 54)
* getopt() function (C library): Getopt Function. (line 15)
* getopt() user-defined function: Getopt Function. (line 108)
* getpwent() function (C library): Passwd Functions. (line 16)
@@ -26074,7 +26162,7 @@ Index
* gettimeofday() user-defined function: Gettimeofday Function.
(line 16)
* GNITS mailing list: Acknowledgments. (line 52)
-* GNU awk, See gawk: Preface. (line 48)
+* GNU awk, See gawk: Preface. (line 49)
* GNU Free Documentation License: GNU Free Documentation License.
(line 6)
* GNU General Public License: Glossary. (line 310)
@@ -26382,7 +26470,7 @@ Index
* matching, expressions, See comparison expressions: Typing and Comparison.
(line 9)
* matching, leftmost longest: Multiple Line. (line 26)
-* matching, null strings: Gory Details. (line 96)
+* matching, null strings: Gory Details. (line 164)
* mawk program: Other Versions. (line 35)
* McPhee, Patrick: Contributors. (line 100)
* memory, releasing: Internals. (line 101)
@@ -26431,7 +26519,7 @@ Index
* next statement: Boolean Ops. (line 85)
* next statement, BEGIN/END patterns and: I/O And BEGIN/END. (line 37)
* next statement, BEGINFILE/ENDFILE patterns and: BEGINFILE/ENDFILE.
- (line 48)
+ (line 49)
* next statement, user-defined functions and: Next Statement. (line 45)
* nextfile statement: Nextfile Statement. (line 6)
* nextfile statement, BEGIN/END patterns and: I/O And BEGIN/END.
@@ -26439,7 +26527,7 @@ Index
* nextfile statement, BEGINFILE/ENDFILE patterns and: BEGINFILE/ENDFILE.
(line 26)
* nextfile statement, user-defined functions and: Nextfile Statement.
- (line 40)
+ (line 44)
* nexti debugger command: Dgawk Execution Control.
(line 49)
* NF variable <1>: Auto-set. (line 107)
@@ -26463,7 +26551,7 @@ Index
* null strings, as array subscripts: Uninitialized Subscripts.
(line 43)
* null strings, converting numbers to strings: Conversion. (line 21)
-* null strings, matching: Gory Details. (line 96)
+* null strings, matching: Gory Details. (line 164)
* null strings, quoting and: Quoting. (line 62)
* number sign (#), #! (executable scripts): Executable Scripts.
(line 6)
@@ -26642,7 +26730,7 @@ Index
* portability, NF variable, decrementing: Changing Fields. (line 115)
* portability, operators: Increment Ops. (line 61)
* portability, operators, not in POSIX awk: Precedence. (line 98)
-* portability, POSIXLY_CORRECT environment variable: Options. (line 307)
+* portability, POSIXLY_CORRECT environment variable: Options. (line 310)
* portability, substr() function: String Functions. (line 512)
* portable object files <1>: Translator i18n. (line 6)
* portable object files: Explaining gettext. (line 36)
@@ -26679,6 +26767,7 @@ Index
* POSIX awk, field separators and: Fields. (line 6)
* POSIX awk, FS variable and: User-modified. (line 66)
* POSIX awk, function keyword in: Definition Syntax. (line 83)
+* POSIX awk, functions and, gsub()/sub(): Gory Details. (line 54)
* POSIX awk, functions and, length(): String Functions. (line 175)
* POSIX awk, GNU long options and: Options. (line 15)
* POSIX awk, interval expressions in: Regexp Operators. (line 135)
@@ -26692,7 +26781,7 @@ Index
* POSIX awk, timestamps and: Time Functions. (line 6)
* POSIX awk, | I/O operator and: Getline/Pipe. (line 52)
* POSIX mode: Options. (line 199)
-* POSIX, awk and: Preface. (line 22)
+* POSIX, awk and: Preface. (line 23)
* POSIX, gawk extensions not included in: POSIX/GNU. (line 6)
* POSIX, programs, implementing in awk: Clones. (line 6)
* POSIXLY_CORRECT environment variable: Options. (line 289)
@@ -27364,411 +27453,415 @@ Tag Table:
Node: Top1346
Node: Foreword33440
Node: Preface37785
-Ref: Preface-Footnote-140752
-Ref: Preface-Footnote-240858
-Node: History41090
-Node: Names43481
-Ref: Names-Footnote-144958
-Node: This Manual45030
-Ref: This Manual-Footnote-149977
-Node: Conventions50077
-Node: Manual History52211
-Ref: Manual History-Footnote-155481
-Ref: Manual History-Footnote-255522
-Node: How To Contribute55596
-Node: Acknowledgments56740
-Node: Getting Started61071
-Node: Running gawk63450
-Node: One-shot64636
-Node: Read Terminal65861
-Ref: Read Terminal-Footnote-167511
-Ref: Read Terminal-Footnote-267787
-Node: Long67958
-Node: Executable Scripts69334
-Ref: Executable Scripts-Footnote-171203
-Ref: Executable Scripts-Footnote-271305
-Node: Comments71756
-Node: Quoting74223
-Node: DOS Quoting78846
-Node: Sample Data Files79521
-Node: Very Simple82553
-Node: Two Rules87152
-Node: More Complex89299
-Ref: More Complex-Footnote-192229
-Node: Statements/Lines92314
-Ref: Statements/Lines-Footnote-196776
-Node: Other Features97041
-Node: When97969
-Node: Invoking Gawk100116
-Node: Command Line101501
-Node: Options102284
-Ref: Options-Footnote-1115562
-Node: Other Arguments115587
-Node: Naming Standard Input118245
-Node: Environment Variables119339
-Node: AWKPATH Variable119783
-Ref: AWKPATH Variable-Footnote-1122380
-Node: Other Environment Variables122640
-Node: Exit Status124980
-Node: Include Files125655
-Node: Obsolete129140
-Node: Undocumented129826
-Node: Regexp130067
-Node: Regexp Usage131456
-Node: Escape Sequences133482
-Node: Regexp Operators139245
-Ref: Regexp Operators-Footnote-1146442
-Ref: Regexp Operators-Footnote-2146589
-Node: Bracket Expressions146687
-Ref: table-char-classes148577
-Node: GNU Regexp Operators151100
-Node: Case-sensitivity154823
-Ref: Case-sensitivity-Footnote-1157791
-Ref: Case-sensitivity-Footnote-2158026
-Node: Leftmost Longest158134
-Node: Computed Regexps159335
-Node: Reading Files162745
-Node: Records164686
-Ref: Records-Footnote-1173360
-Node: Fields173397
-Ref: Fields-Footnote-1176430
-Node: Nonconstant Fields176516
-Node: Changing Fields178718
-Node: Field Separators184696
-Node: Default Field Splitting187325
-Node: Regexp Field Splitting188442
-Node: Single Character Fields191784
-Node: Command Line Field Separator192843
-Node: Field Splitting Summary196284
-Ref: Field Splitting Summary-Footnote-1199476
-Node: Constant Size199577
-Node: Splitting By Content204161
-Ref: Splitting By Content-Footnote-1207887
-Node: Multiple Line207927
-Ref: Multiple Line-Footnote-1213774
-Node: Getline213953
-Node: Plain Getline216181
-Node: Getline/Variable218270
-Node: Getline/File219411
-Node: Getline/Variable/File220733
-Ref: Getline/Variable/File-Footnote-1222332
-Node: Getline/Pipe222419
-Node: Getline/Variable/Pipe224979
-Node: Getline/Coprocess226086
-Node: Getline/Variable/Coprocess227329
-Node: Getline Notes228043
-Node: Getline Summary229985
-Ref: table-getline-variants230328
-Node: Command line directories231184
-Node: Printing231809
-Node: Print233440
-Node: Print Examples234777
-Node: Output Separators237561
-Node: OFMT239321
-Node: Printf240679
-Node: Basic Printf241585
-Node: Control Letters243124
-Node: Format Modifiers246936
-Node: Printf Examples252945
-Node: Redirection255660
-Node: Special Files262644
-Node: Special FD263177
-Ref: Special FD-Footnote-1266802
-Node: Special Network266876
-Node: Special Caveats267726
-Node: Close Files And Pipes268522
-Ref: Close Files And Pipes-Footnote-1275545
-Ref: Close Files And Pipes-Footnote-2275693
-Node: Expressions275843
-Node: Values276975
-Node: Constants277651
-Node: Scalar Constants278331
-Ref: Scalar Constants-Footnote-1279190
-Node: Nondecimal-numbers279372
-Node: Regexp Constants282431
-Node: Using Constant Regexps282906
-Node: Variables285961
-Node: Using Variables286616
-Node: Assignment Options288340
-Node: Conversion290212
-Ref: table-locale-affects295588
-Ref: Conversion-Footnote-1296212
-Node: All Operators296321
-Node: Arithmetic Ops296951
-Node: Concatenation299456
-Ref: Concatenation-Footnote-1302249
-Node: Assignment Ops302369
-Ref: table-assign-ops307357
-Node: Increment Ops308765
-Node: Truth Values and Conditions312235
-Node: Truth Values313318
-Node: Typing and Comparison314367
-Node: Variable Typing315156
-Ref: Variable Typing-Footnote-1319053
-Node: Comparison Operators319175
-Ref: table-relational-ops319585
-Node: POSIX String Comparison323134
-Ref: POSIX String Comparison-Footnote-1324090
-Node: Boolean Ops324228
-Ref: Boolean Ops-Footnote-1328306
-Node: Conditional Exp328397
-Node: Function Calls330129
-Node: Precedence333723
-Node: Locales337392
-Node: Patterns and Actions338481
-Node: Pattern Overview339535
-Node: Regexp Patterns341201
-Node: Expression Patterns341744
-Node: Ranges345318
-Node: BEGIN/END348284
-Node: Using BEGIN/END349046
-Ref: Using BEGIN/END-Footnote-1351777
-Node: I/O And BEGIN/END351883
-Node: BEGINFILE/ENDFILE354165
-Node: Empty356998
-Node: Using Shell Variables357314
-Node: Action Overview359599
-Node: Statements361956
-Node: If Statement363810
-Node: While Statement365309
-Node: Do Statement367353
-Node: For Statement368509
-Node: Switch Statement371661
-Node: Break Statement373758
-Node: Continue Statement375748
-Node: Next Statement377535
-Node: Nextfile Statement379925
-Node: Exit Statement382222
-Node: Built-in Variables384638
-Node: User-modified385733
-Ref: User-modified-Footnote-1393759
-Node: Auto-set393821
-Ref: Auto-set-Footnote-1403112
-Node: ARGC and ARGV403317
-Node: Arrays407168
-Node: Array Basics408673
-Node: Array Intro409384
-Node: Reference to Elements413702
-Node: Assigning Elements415972
-Node: Array Example416463
-Node: Scanning an Array418195
-Node: Delete420861
-Ref: Delete-Footnote-1423296
-Node: Numeric Array Subscripts423353
-Node: Uninitialized Subscripts425536
-Node: Multi-dimensional427164
-Node: Multi-scanning430258
-Node: Arrays of Arrays431842
-Node: Functions436419
-Node: Built-in437241
-Node: Calling Built-in438319
-Node: Numeric Functions440307
-Ref: Numeric Functions-Footnote-1444072
-Ref: Numeric Functions-Footnote-2444429
-Ref: Numeric Functions-Footnote-3444477
-Node: String Functions444746
-Ref: String Functions-Footnote-1468243
-Ref: String Functions-Footnote-2468372
-Ref: String Functions-Footnote-3468620
-Node: Gory Details468707
-Ref: table-sub-escapes470386
-Ref: table-posix-sub471700
-Ref: table-gensub-escapes472613
-Node: I/O Functions473784
-Ref: I/O Functions-Footnote-1480439
-Node: Time Functions480586
-Ref: Time Functions-Footnote-1491478
-Ref: Time Functions-Footnote-2491546
-Ref: Time Functions-Footnote-3491704
-Ref: Time Functions-Footnote-4491815
-Ref: Time Functions-Footnote-5491927
-Ref: Time Functions-Footnote-6492154
-Node: Bitwise Functions492420
-Ref: table-bitwise-ops492978
-Ref: Bitwise Functions-Footnote-1497138
-Node: Type Functions497322
-Node: I18N Functions497792
-Node: User-defined499419
-Node: Definition Syntax500223
-Ref: Definition Syntax-Footnote-1505133
-Node: Function Example505202
-Node: Function Caveats507796
-Node: Calling A Function508217
-Node: Variable Scope509332
-Node: Pass By Value/Reference511307
-Node: Return Statement514747
-Node: Dynamic Typing517728
-Node: Indirect Calls518463
-Node: Internationalization528148
-Node: I18N and L10N529574
-Node: Explaining gettext530260
-Ref: Explaining gettext-Footnote-1535326
-Ref: Explaining gettext-Footnote-2535510
-Node: Programmer i18n535675
-Node: Translator i18n539875
-Node: String Extraction540668
-Ref: String Extraction-Footnote-1541629
-Node: Printf Ordering541715
-Ref: Printf Ordering-Footnote-1544499
-Node: I18N Portability544563
-Ref: I18N Portability-Footnote-1547012
-Node: I18N Example547075
-Ref: I18N Example-Footnote-1549710
-Node: Gawk I18N549782
-Node: Advanced Features550399
-Node: Nondecimal Data551912
-Node: Array Sorting553495
-Node: Controlling Array Traversal554195
-Node: Controlling Scanning With A Function554942
-Node: Controlling Scanning562645
-Ref: Controlling Scanning-Footnote-1566446
-Node: Array Sorting Functions566762
-Ref: Array Sorting Functions-Footnote-1570278
-Ref: Array Sorting Functions-Footnote-2570371
-Node: Two-way I/O570565
-Ref: Two-way I/O-Footnote-1575997
-Node: TCP/IP Networking576067
-Node: Profiling578911
-Node: Library Functions586385
-Ref: Library Functions-Footnote-1589392
-Node: Library Names589563
-Ref: Library Names-Footnote-1593034
-Ref: Library Names-Footnote-2593254
-Node: General Functions593340
-Node: Strtonum Function594293
-Node: Assert Function597223
-Node: Round Function600549
-Node: Cliff Random Function602092
-Node: Ordinal Functions603108
-Ref: Ordinal Functions-Footnote-1606178
-Ref: Ordinal Functions-Footnote-2606430
-Node: Join Function606639
-Ref: Join Function-Footnote-1608410
-Node: Gettimeofday Function608610
-Node: Data File Management612325
-Node: Filetrans Function612957
-Node: Rewind Function617096
-Node: File Checking618483
-Node: Empty Files619577
-Node: Ignoring Assigns621807
-Node: Getopt Function623360
-Ref: Getopt Function-Footnote-1634664
-Node: Passwd Functions634867
-Ref: Passwd Functions-Footnote-1643842
-Node: Group Functions643930
-Node: Walking Arrays652014
-Node: Sample Programs653583
-Node: Running Examples654248
-Node: Clones654976
-Node: Cut Program656200
-Node: Egrep Program666045
-Ref: Egrep Program-Footnote-1673818
-Node: Id Program673928
-Node: Split Program677544
-Ref: Split Program-Footnote-1681063
-Node: Tee Program681191
-Node: Uniq Program683994
-Node: Wc Program691423
-Ref: Wc Program-Footnote-1695689
-Ref: Wc Program-Footnote-2695889
-Node: Miscellaneous Programs695981
-Node: Dupword Program697169
-Node: Alarm Program699200
-Node: Translate Program703949
-Ref: Translate Program-Footnote-1708336
-Ref: Translate Program-Footnote-2708564
-Node: Labels Program708698
-Ref: Labels Program-Footnote-1712069
-Node: Word Sorting712153
-Node: History Sorting716037
-Node: Extract Program717876
-Ref: Extract Program-Footnote-1725359
-Node: Simple Sed725487
-Node: Igawk Program728549
-Ref: Igawk Program-Footnote-1743706
-Ref: Igawk Program-Footnote-2743907
-Node: Anagram Program744045
-Node: Signature Program747113
-Node: Debugger748213
-Node: Debugging749124
-Node: Debugging Concepts749537
-Node: Debugging Terms751393
-Node: Awk Debugging754016
-Node: Sample dgawk session754908
-Node: dgawk invocation755400
-Node: Finding The Bug756582
-Node: List of Debugger Commands763068
-Node: Breakpoint Control764379
-Node: Dgawk Execution Control768015
-Node: Viewing And Changing Data771366
-Node: Dgawk Stack774703
-Node: Dgawk Info776163
-Node: Miscellaneous Dgawk Commands780111
-Node: Readline Support785539
-Node: Dgawk Limitations786377
-Node: Language History788566
-Node: V7/SVR3.1790078
-Node: SVR4792399
-Node: POSIX793841
-Node: BTL794849
-Node: POSIX/GNU795583
-Node: Common Extensions800734
-Node: Ranges and Locales801841
-Ref: Ranges and Locales-Footnote-1806448
-Node: Contributors806669
-Node: Installation810931
-Node: Gawk Distribution811825
-Node: Getting812309
-Node: Extracting813135
-Node: Distribution contents814827
-Node: Unix Installation820049
-Node: Quick Installation820666
-Node: Additional Configuration Options822628
-Node: Configuration Philosophy824105
-Node: Non-Unix Installation826447
-Node: PC Installation826905
-Node: PC Binary Installation828204
-Node: PC Compiling830052
-Node: PC Testing832996
-Node: PC Using834172
-Node: Cygwin838357
-Node: MSYS839357
-Node: VMS Installation839871
-Node: VMS Compilation840474
-Ref: VMS Compilation-Footnote-1841481
-Node: VMS Installation Details841539
-Node: VMS Running843174
-Node: VMS Old Gawk844781
-Node: Bugs845255
-Node: Other Versions849108
-Node: Notes854389
-Node: Compatibility Mode855081
-Node: Additions855864
-Node: Accessing The Source856676
-Node: Adding Code858101
-Node: New Ports864068
-Node: Dynamic Extensions868181
-Node: Internals869557
-Node: Plugin License878660
-Node: Sample Library879294
-Node: Internal File Description879980
-Node: Internal File Ops883695
-Ref: Internal File Ops-Footnote-1888476
-Node: Using Internal File Ops888616
-Node: Future Extensions890993
-Node: Basic Concepts893497
-Node: Basic High Level894254
-Ref: Basic High Level-Footnote-1898289
-Node: Basic Data Typing898474
-Node: Floating Point Issues902999
-Node: String Conversion Precision904082
-Ref: String Conversion Precision-Footnote-1905782
-Node: Unexpected Results905891
-Node: POSIX Floating Point Problems907717
-Ref: POSIX Floating Point Problems-Footnote-1911422
-Node: Glossary911460
-Node: Copying936436
-Node: GNU Free Documentation License973993
-Node: Index999130
+Ref: Preface-Footnote-140838
+Ref: Preface-Footnote-240944
+Node: History41176
+Node: Names43567
+Ref: Names-Footnote-145044
+Node: This Manual45116
+Ref: This Manual-Footnote-150063
+Node: Conventions50163
+Node: Manual History52297
+Ref: Manual History-Footnote-155567
+Ref: Manual History-Footnote-255608
+Node: How To Contribute55682
+Node: Acknowledgments56826
+Node: Getting Started61157
+Node: Running gawk63536
+Node: One-shot64722
+Node: Read Terminal65947
+Ref: Read Terminal-Footnote-167597
+Ref: Read Terminal-Footnote-267873
+Node: Long68044
+Node: Executable Scripts69420
+Ref: Executable Scripts-Footnote-171289
+Ref: Executable Scripts-Footnote-271391
+Node: Comments71842
+Node: Quoting74309
+Node: DOS Quoting78932
+Node: Sample Data Files79607
+Node: Very Simple82639
+Node: Two Rules87238
+Node: More Complex89385
+Ref: More Complex-Footnote-192315
+Node: Statements/Lines92400
+Ref: Statements/Lines-Footnote-196862
+Node: Other Features97127
+Node: When98055
+Node: Invoking Gawk100202
+Node: Command Line101587
+Node: Options102370
+Ref: Options-Footnote-1115807
+Node: Other Arguments115832
+Node: Naming Standard Input118490
+Node: Environment Variables119584
+Node: AWKPATH Variable120028
+Ref: AWKPATH Variable-Footnote-1122625
+Node: Other Environment Variables122885
+Node: Exit Status125225
+Node: Include Files125900
+Node: Obsolete129385
+Node: Undocumented130071
+Node: Regexp130312
+Node: Regexp Usage131701
+Node: Escape Sequences133727
+Node: Regexp Operators139490
+Ref: Regexp Operators-Footnote-1146687
+Ref: Regexp Operators-Footnote-2146834
+Node: Bracket Expressions146932
+Ref: table-char-classes148822
+Node: GNU Regexp Operators151345
+Node: Case-sensitivity155068
+Ref: Case-sensitivity-Footnote-1158036
+Ref: Case-sensitivity-Footnote-2158271
+Node: Leftmost Longest158379
+Node: Computed Regexps159580
+Node: Reading Files162990
+Node: Records164931
+Ref: Records-Footnote-1173605
+Node: Fields173642
+Ref: Fields-Footnote-1176675
+Node: Nonconstant Fields176761
+Node: Changing Fields178963
+Node: Field Separators184941
+Node: Default Field Splitting187570
+Node: Regexp Field Splitting188687
+Node: Single Character Fields192029
+Node: Command Line Field Separator193088
+Node: Field Splitting Summary196529
+Ref: Field Splitting Summary-Footnote-1199721
+Node: Constant Size199822
+Node: Splitting By Content204406
+Ref: Splitting By Content-Footnote-1208132
+Node: Multiple Line208172
+Ref: Multiple Line-Footnote-1214019
+Node: Getline214198
+Node: Plain Getline216426
+Node: Getline/Variable218515
+Node: Getline/File219656
+Node: Getline/Variable/File220978
+Ref: Getline/Variable/File-Footnote-1222577
+Node: Getline/Pipe222664
+Node: Getline/Variable/Pipe225224
+Node: Getline/Coprocess226331
+Node: Getline/Variable/Coprocess227574
+Node: Getline Notes228288
+Node: Getline Summary230230
+Ref: table-getline-variants230573
+Node: Command line directories231429
+Node: Printing232054
+Node: Print233685
+Node: Print Examples235022
+Node: Output Separators237806
+Node: OFMT239566
+Node: Printf240924
+Node: Basic Printf241830
+Node: Control Letters243369
+Node: Format Modifiers247181
+Node: Printf Examples253190
+Node: Redirection255905
+Node: Special Files262889
+Node: Special FD263422
+Ref: Special FD-Footnote-1267047
+Node: Special Network267121
+Node: Special Caveats267971
+Node: Close Files And Pipes268767
+Ref: Close Files And Pipes-Footnote-1275790
+Ref: Close Files And Pipes-Footnote-2275938
+Node: Expressions276088
+Node: Values277220
+Node: Constants277896
+Node: Scalar Constants278576
+Ref: Scalar Constants-Footnote-1279435
+Node: Nondecimal-numbers279617
+Node: Regexp Constants282676
+Node: Using Constant Regexps283151
+Node: Variables286206
+Node: Using Variables286861
+Node: Assignment Options288585
+Node: Conversion290457
+Ref: table-locale-affects295833
+Ref: Conversion-Footnote-1296457
+Node: All Operators296566
+Node: Arithmetic Ops297196
+Node: Concatenation299701
+Ref: Concatenation-Footnote-1302494
+Node: Assignment Ops302614
+Ref: table-assign-ops307602
+Node: Increment Ops309010
+Node: Truth Values and Conditions312480
+Node: Truth Values313563
+Node: Typing and Comparison314612
+Node: Variable Typing315401
+Ref: Variable Typing-Footnote-1319298
+Node: Comparison Operators319420
+Ref: table-relational-ops319830
+Node: POSIX String Comparison323379
+Ref: POSIX String Comparison-Footnote-1324335
+Node: Boolean Ops324473
+Ref: Boolean Ops-Footnote-1328551
+Node: Conditional Exp328642
+Node: Function Calls330374
+Node: Precedence333968
+Node: Locales337637
+Node: Patterns and Actions338726
+Node: Pattern Overview339780
+Node: Regexp Patterns341446
+Node: Expression Patterns341989
+Node: Ranges345674
+Node: BEGIN/END348640
+Node: Using BEGIN/END349402
+Ref: Using BEGIN/END-Footnote-1352133
+Node: I/O And BEGIN/END352239
+Node: BEGINFILE/ENDFILE354521
+Node: Empty357414
+Node: Using Shell Variables357730
+Node: Action Overview360015
+Node: Statements362372
+Node: If Statement364226
+Node: While Statement365725
+Node: Do Statement367769
+Node: For Statement368925
+Node: Switch Statement372077
+Node: Break Statement374174
+Node: Continue Statement376164
+Node: Next Statement377951
+Node: Nextfile Statement380341
+Node: Exit Statement382886
+Node: Built-in Variables385302
+Node: User-modified386397
+Ref: User-modified-Footnote-1394423
+Node: Auto-set394485
+Ref: Auto-set-Footnote-1403776
+Node: ARGC and ARGV403981
+Node: Arrays407832
+Node: Array Basics409337
+Node: Array Intro410048
+Node: Reference to Elements414366
+Node: Assigning Elements416636
+Node: Array Example417127
+Node: Scanning an Array418859
+Node: Delete421525
+Ref: Delete-Footnote-1423960
+Node: Numeric Array Subscripts424017
+Node: Uninitialized Subscripts426200
+Node: Multi-dimensional427828
+Node: Multi-scanning430922
+Node: Arrays of Arrays432506
+Node: Functions437083
+Node: Built-in437905
+Node: Calling Built-in438983
+Node: Numeric Functions440971
+Ref: Numeric Functions-Footnote-1444736
+Ref: Numeric Functions-Footnote-2445093
+Ref: Numeric Functions-Footnote-3445141
+Node: String Functions445410
+Ref: String Functions-Footnote-1468907
+Ref: String Functions-Footnote-2469036
+Ref: String Functions-Footnote-3469284
+Node: Gory Details469371
+Ref: table-sub-escapes471050
+Ref: table-sub-posix-92472404
+Ref: table-sub-proposed473747
+Ref: table-posix-sub475097
+Ref: table-gensub-escapes476643
+Ref: Gory Details-Footnote-1477850
+Ref: Gory Details-Footnote-2477901
+Node: I/O Functions478052
+Ref: I/O Functions-Footnote-1484707
+Node: Time Functions484854
+Ref: Time Functions-Footnote-1495746
+Ref: Time Functions-Footnote-2495814
+Ref: Time Functions-Footnote-3495972
+Ref: Time Functions-Footnote-4496083
+Ref: Time Functions-Footnote-5496195
+Ref: Time Functions-Footnote-6496422
+Node: Bitwise Functions496688
+Ref: table-bitwise-ops497246
+Ref: Bitwise Functions-Footnote-1501406
+Node: Type Functions501590
+Node: I18N Functions502060
+Node: User-defined503687
+Node: Definition Syntax504491
+Ref: Definition Syntax-Footnote-1509401
+Node: Function Example509470
+Node: Function Caveats512064
+Node: Calling A Function512485
+Node: Variable Scope513600
+Node: Pass By Value/Reference515575
+Node: Return Statement519015
+Node: Dynamic Typing521996
+Node: Indirect Calls522731
+Node: Internationalization532416
+Node: I18N and L10N533842
+Node: Explaining gettext534528
+Ref: Explaining gettext-Footnote-1539594
+Ref: Explaining gettext-Footnote-2539778
+Node: Programmer i18n539943
+Node: Translator i18n544143
+Node: String Extraction544936
+Ref: String Extraction-Footnote-1545897
+Node: Printf Ordering545983
+Ref: Printf Ordering-Footnote-1548767
+Node: I18N Portability548831
+Ref: I18N Portability-Footnote-1551280
+Node: I18N Example551343
+Ref: I18N Example-Footnote-1553978
+Node: Gawk I18N554050
+Node: Advanced Features554667
+Node: Nondecimal Data556180
+Node: Array Sorting557763
+Node: Controlling Array Traversal558463
+Node: Controlling Scanning With A Function559210
+Node: Controlling Scanning566913
+Ref: Controlling Scanning-Footnote-1570714
+Node: Array Sorting Functions571030
+Ref: Array Sorting Functions-Footnote-1574546
+Ref: Array Sorting Functions-Footnote-2574639
+Node: Two-way I/O574833
+Ref: Two-way I/O-Footnote-1580265
+Node: TCP/IP Networking580335
+Node: Profiling583179
+Node: Library Functions590653
+Ref: Library Functions-Footnote-1593660
+Node: Library Names593831
+Ref: Library Names-Footnote-1597302
+Ref: Library Names-Footnote-2597522
+Node: General Functions597608
+Node: Strtonum Function598561
+Node: Assert Function601491
+Node: Round Function604817
+Node: Cliff Random Function606360
+Node: Ordinal Functions607376
+Ref: Ordinal Functions-Footnote-1610446
+Ref: Ordinal Functions-Footnote-2610698
+Node: Join Function610907
+Ref: Join Function-Footnote-1612678
+Node: Gettimeofday Function612878
+Node: Data File Management616593
+Node: Filetrans Function617225
+Node: Rewind Function621364
+Node: File Checking622751
+Node: Empty Files623845
+Node: Ignoring Assigns626075
+Node: Getopt Function627628
+Ref: Getopt Function-Footnote-1638932
+Node: Passwd Functions639135
+Ref: Passwd Functions-Footnote-1648110
+Node: Group Functions648198
+Node: Walking Arrays656282
+Node: Sample Programs657851
+Node: Running Examples658516
+Node: Clones659244
+Node: Cut Program660468
+Node: Egrep Program670313
+Ref: Egrep Program-Footnote-1678086
+Node: Id Program678196
+Node: Split Program681812
+Ref: Split Program-Footnote-1685331
+Node: Tee Program685459
+Node: Uniq Program688262
+Node: Wc Program695691
+Ref: Wc Program-Footnote-1699957
+Ref: Wc Program-Footnote-2700157
+Node: Miscellaneous Programs700249
+Node: Dupword Program701437
+Node: Alarm Program703468
+Node: Translate Program708217
+Ref: Translate Program-Footnote-1712604
+Ref: Translate Program-Footnote-2712832
+Node: Labels Program712966
+Ref: Labels Program-Footnote-1716337
+Node: Word Sorting716421
+Node: History Sorting720305
+Node: Extract Program722144
+Ref: Extract Program-Footnote-1729627
+Node: Simple Sed729755
+Node: Igawk Program732817
+Ref: Igawk Program-Footnote-1747974
+Ref: Igawk Program-Footnote-2748175
+Node: Anagram Program748313
+Node: Signature Program751381
+Node: Debugger752481
+Node: Debugging753392
+Node: Debugging Concepts753805
+Node: Debugging Terms755661
+Node: Awk Debugging758284
+Node: Sample dgawk session759176
+Node: dgawk invocation759668
+Node: Finding The Bug760850
+Node: List of Debugger Commands767336
+Node: Breakpoint Control768647
+Node: Dgawk Execution Control772283
+Node: Viewing And Changing Data775634
+Node: Dgawk Stack778971
+Node: Dgawk Info780431
+Node: Miscellaneous Dgawk Commands784379
+Node: Readline Support789807
+Node: Dgawk Limitations790645
+Node: Language History792834
+Node: V7/SVR3.1794346
+Node: SVR4796667
+Node: POSIX798109
+Node: BTL799117
+Node: POSIX/GNU799851
+Node: Common Extensions805002
+Node: Ranges and Locales806109
+Ref: Ranges and Locales-Footnote-1810716
+Node: Contributors810937
+Node: Installation815199
+Node: Gawk Distribution816093
+Node: Getting816577
+Node: Extracting817403
+Node: Distribution contents819095
+Node: Unix Installation824317
+Node: Quick Installation824934
+Node: Additional Configuration Options826896
+Node: Configuration Philosophy828373
+Node: Non-Unix Installation830715
+Node: PC Installation831173
+Node: PC Binary Installation832472
+Node: PC Compiling834320
+Node: PC Testing837264
+Node: PC Using838440
+Node: Cygwin842625
+Node: MSYS843625
+Node: VMS Installation844139
+Node: VMS Compilation844742
+Ref: VMS Compilation-Footnote-1845749
+Node: VMS Installation Details845807
+Node: VMS Running847442
+Node: VMS Old Gawk849049
+Node: Bugs849523
+Node: Other Versions853376
+Node: Notes858657
+Node: Compatibility Mode859349
+Node: Additions860132
+Node: Accessing The Source860944
+Node: Adding Code862369
+Node: New Ports868336
+Node: Dynamic Extensions872449
+Node: Internals873825
+Node: Plugin License882928
+Node: Sample Library883562
+Node: Internal File Description884248
+Node: Internal File Ops887963
+Ref: Internal File Ops-Footnote-1892744
+Node: Using Internal File Ops892884
+Node: Future Extensions895261
+Node: Basic Concepts897765
+Node: Basic High Level898522
+Ref: Basic High Level-Footnote-1902557
+Node: Basic Data Typing902742
+Node: Floating Point Issues907267
+Node: String Conversion Precision908350
+Ref: String Conversion Precision-Footnote-1910050
+Node: Unexpected Results910159
+Node: POSIX Floating Point Problems911985
+Ref: POSIX Floating Point Problems-Footnote-1915690
+Node: Glossary915728
+Node: Copying940704
+Node: GNU Free Documentation License978261
+Node: Index1003398

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index a74773ca..930f9345 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -893,7 +893,9 @@ Such jobs are often easier with @command{awk}.
The @command{awk} utility interprets a special-purpose programming language
that makes it easy to handle simple data-reformatting jobs.
-The GNU implementation of @command{awk} is called @command{gawk}; it is fully
+The GNU implementation of @command{awk} is called @command{gawk}; if you
+invoke it with the proper options or environment variables
+(@pxref{Options}), it is fully
compatible with
the POSIX@footnote{The 2008 POSIX standard can be found online at
@url{http://www.opengroup.org/onlinepubs/9699919799/}.}
@@ -3429,7 +3431,10 @@ program source code.
If the environment variable @env{POSIXLY_CORRECT} exists,
then @command{gawk} behaves in strict POSIX mode, exactly as if
you had supplied the @option{--posix} command-line option.
-Many GNU programs look for this environment variable to turn on
+Many GNU programs look for this environment variable to suppress
+extensions that conflict with POSIX, but @command{gawk} behaves
+differently: it suppresses all extensions, even those that do not
+conflict with POSIX, and behaves in
strict POSIX mode. If @option{--lint} is supplied on the command line
and @command{gawk} turns on POSIX mode because of @env{POSIXLY_CORRECT},
then it issues a warning message indicating that POSIX
@@ -11079,6 +11084,9 @@ patterns. Likewise, the special patterns @code{BEGIN}, @code{END},
which never match any input record, are not expressions and cannot
appear inside Boolean patterns.
+The precedence of the different operators which can appear in
+patterns is described in @ref{Precedence}.
+
@node Ranges
@subsection Specifying Record Ranges with Patterns
@@ -11349,6 +11357,7 @@ currently used only by the @uref{http://xmlgawk.sourceforge.net, XMLgawk project
The @code{ENDFILE} rule is called when @command{gawk} has finished processing
the last record in an input file. For the last input file,
it will be called before any @code{END} rules.
+The @code{ENDFILE} rule is executed even for empty input files.
Normally, when an error occurs when reading input in the normal input
processing loop, the error is fatal. However, if an @code{ENDFILE}
@@ -12153,16 +12162,17 @@ or if @command{gawk} is in compatibility mode
@code{nextfile} is not special.
Upon execution of the @code{nextfile} statement,
-any @code{ENDFILE} rules are executed,
-@code{FILENAME} is
+any @code{ENDFILE} rules are executed except in the case as
+mentioned below, @code{FILENAME} is
updated to the name of the next @value{DF} listed on the command line,
@code{FNR} is reset to one, @code{ARGIND} is incremented,
any @code{BEGINFILE} rules are executed, and processing
starts over with the first rule in the program.
(@code{ARGIND} hasn't been introduced yet. @xref{Built-in Variables}.)
If the @code{nextfile} statement causes the end of the input to be reached,
-then the code in any @code{END} rules is executed.
-@xref{BEGIN/END}.
+then the code in any @code{END} rules is executed. An exception to this is
+when the @code{nextfile} is invoked during execution of any statement in an
+@code{END} rule; In this case, it causes the program to stop immediately. @xref{BEGIN/END}.
The @code{nextfile} statement is useful when there are many @value{DF}s
to process but it isn't necessary to process every record in every file.
@@ -12172,7 +12182,8 @@ statement accomplishes this much more efficiently.
In addition, @code{nextfile} is useful inside a @code{BEGINFILE}
rule to skip over a file that would otherwise cause @command{gawk}
-to exit with a fatal error. @xref{BEGINFILE/ENDFILE}.
+to exit with a fatal error. In this case, @code{ENDFILE} rules are not
+executed. @xref{BEGINFILE/ENDFILE}.
While one might think that @samp{close(FILENAME)} would accomplish
the same as @code{nextfile}, this isn't true. @code{close()} is
@@ -15015,8 +15026,6 @@ case of even numbers of backslashes entered at the lexical level.)
The problem with the historical approach is that there is no way to get
a literal @samp{\} followed by the matched text.
-@c We can omit this historical stuff now
-@ignore
@c @cindex @command{awk} language, POSIX version
@cindex POSIX @command{awk}, functions and, @code{gsub()}/@code{sub()}
The 1992 POSIX standard attempted to fix this problem. That standard
@@ -15150,7 +15159,6 @@ in the output literally.
The POSIX standard took much longer to be revised than was expected in 1996.
The 2001 standard does not follow the above rules. Instead, the rules
there are somewhat simpler. The results are similar except for one case.
-@end ignore
The POSIX rules state that @samp{\&} in the replacement string produces
a literal @samp{&}, @samp{\\} produces a literal @samp{\}, and @samp{\} followed
@@ -15201,17 +15209,21 @@ These rules are presented in @ref{table-posix-sub}.
@end ifnottex
@end float
-@ignore
The only case where the difference is noticeable is the last one: @samp{\\\\}
is seen as @samp{\\} and produces @samp{\} instead of @samp{\\}.
Starting with @value{PVERSION} 3.1.4, @command{gawk} followed the POSIX rules
when @option{--posix} is specified (@pxref{Options}). Otherwise,
it continued to follow the 1996 proposed rules, since
-that had been its behavior for many seven years.
-@end ignore
+that had been its behavior for many years.
-@command{gawk} follows the POSIX rules.
+When @value{PVERSION} 4.0.0, was released, the @command{gawk} maintainer
+made the POSIX rules the default, breaking well over a decade's worth
+of backwards compatibility.@footnote{This was rather naive of him, despite
+there being a note in this section indicating that the next major version
+would move to the POSIX rules.} Needless to say, this was a bad idea,
+and as of @value{PVERSION} 4.0.1, @command{gawk} resumed its historical
+behavior, and only follows the POSIX rules when @option{--posix} is given.
The rules for @code{gensub()} are considerably simpler. At the runtime
level, whenever @command{gawk} sees a @samp{\}, if the following character
@@ -17091,6 +17103,7 @@ We can do something similar using @command{gawk}, like this:
@c file eg/lib/quicksort.awk
#
# Adapted from K&R-II, page 110
+@c endfile
@end ignore
@c file eg/lib/quicksort.awk
@@ -18532,7 +18545,7 @@ $ @kbd{gawk 'BEGIN @{}
@print{} 4 4
@print{} 3 3
$ @kbd{gawk 'BEGIN @{}
-> @kbd{ PROCINFO["sorted_in"] = "@@str_ind_asc"}
+> @kbd{ PROCINFO["sorted_in"] = "@@ind_str_asc"}
> @kbd{ a[4] = 4}
> @kbd{ a[3] = 3}
> @kbd{ for (i in a)}
@@ -20632,6 +20645,7 @@ necessary for accessing individual characters
function was written before @command{gawk} acquired the ability to
split strings into single characters using @code{""} as the separator.
We have left it alone, since using @code{substr()} is more portable.}
+@c FIXME: could use split(str, a, "") to do it more easily.
The discussion that follows walks through the code a bit at a time:
@@ -25057,6 +25071,84 @@ O+X*(o*(o+O)+O),+x+O+X*o,x*(x-o),(o+X+x)*o*o-(x-O-O),O+(X-x)*(X+O),x-O@}'
We leave it to you to determine what the program does.
+@ignore
+To: "Arnold Robbins" <arnold@skeeve.com>
+Date: Sat, 20 Aug 2011 13:50:46 -0400
+Subject: The GNU Awk User's Guide, Section 13.3.11
+From: "Chris Johansen" <johansen@main.nc.us>
+Message-ID: <op.v0iw6wlv7finx3@asusodin.thrudvang.lan>
+
+Arnold, you don't know me, but we have a tenuous connection. My wife is
+Barbara A. Field, FAIA, GIT '65 (B. Arch.).
+
+I have had a couple of paper copies of "Effective Awk Programming" for
+years, and now I'm going through a Kindle version of "The GNU Awk User's
+Guide" again. When I got to section 13.3.11, I reformatted and lightly
+commented Davide Brin's signature script to understand its workings.
+
+It occurs to me that this might have pedagogical value as an example
+(although imperfect) of the value of whitespace and comments, and a
+starting point for that discussion. It certainly helped _me_ understand
+what's going on. You are welcome to it, as-is or modified (subject to
+Davide's constraints, of course, which I think I have met).
+
+If I were to include it in a future edition, I would put it at some
+distance from section 13.3.11, say, as a note or an appendix, so as not to
+be a "spoiler" to the puzzle.
+
+Best regards,
+--
+Chris Johansen {johansen at main dot nc dot us}
+ . . . collapsing the probability wave function, sending ripples of
+certainty through the space-time continuum.
+
+
+#! /usr/bin/gawk -f
+
+# From "13.3.11 And Now For Something Completely Different"
+# http://www.gnu.org/software/gawk/manual/html_node/Signature-Program.html#Signature-Program
+
+# Copyright © 2008 Davide Brini
+
+# Copying and distribution of the code published in this page, with
+# or without modification, are permitted in any medium without
+# royalty provided the copyright notice and this notice are preserved.
+
+BEGIN {
+ O = "~" ~ "~"; # 1
+ o = "==" == "=="; # 1
+ o += +o; # 2
+ x = O "" O; # 11
+
+
+ while ( X++ <= x + o + o ) c = c "%c";
+
+ # O is 1
+ # o is 2
+ # x is 11
+ # X is 17
+ # c is "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c"
+
+ printf c,
+ ( x - O )*( x - O), # 100 d
+ x*( x - o ) - o, # 97 a
+ x*( x - O ) + x - O - o, # 118 v
+ +x*( x - O ) - x + o, # 101 e
+ X*( o*o + O ) + x - O, # 95 _
+ X*( X - x ) - o*o, # 98 b
+ ( x + X )*o*o + o, # 114 r
+ x*( X - x ) - O - O, # 64 @
+ x - O + ( O + o + X + x )*( o + O ), # 103 g
+ X*X - X*( x - O ) - x + O, # 109 m
+ O + X*( o*( o + O ) + O ), # 120 x
+ +x + O + X*o, # 46 .
+ x*( x - o), # 99 c
+ ( o + X + x )*o*o - ( x - O - O ), # 111 0
+ O + ( X - x )*( X + O ), # 109 m
+ x - O # 10 \n
+}
+@end ignore
+
@c The original text for this chapter was contributed by Efraim Yawitz.
@c FIXME: Add more indexing.