aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2014-03-07 10:48:10 +0200
committerArnold D. Robbins <arnold@skeeve.com>2014-03-07 10:48:10 +0200
commit586bb71fdbeb5041263a3e48392d79c5931df3c4 (patch)
treefb5de05fc8bc8a8b1f396aaf5f70b5445bff2da8
parent74b2c04497f27bd292b9789c6ae1e8cf0177bdbc (diff)
parent4c0b1ddb06fd9329fd34db65a93e067d6426a7d1 (diff)
downloadegawk-586bb71fdbeb5041263a3e48392d79c5931df3c4.tar.gz
egawk-586bb71fdbeb5041263a3e48392d79c5931df3c4.tar.bz2
egawk-586bb71fdbeb5041263a3e48392d79c5931df3c4.zip
Merge branch 'gawk-4.1-stable'
-rw-r--r--doc/ChangeLog6
-rw-r--r--doc/gawk.info850
-rw-r--r--doc/gawk.texi118
-rw-r--r--doc/gawktexi.in116
4 files changed, 640 insertions, 450 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 90bec542..71ca6a1f 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,6 +1,10 @@
+2014-03-07 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Indexing improvements.
+
2014-03-02 John E. Malmberg <wb8tyw@qsl.net>
- * gawktext.in: Remove paragraph about obsolete VMS
+ * gawktexi.in: Remove paragraph about obsolete VMS
compilers. Update reference about building PCSI kit.
2014-02-27 Arnold D. Robbins <arnold@skeeve.com>
diff --git a/doc/gawk.info b/doc/gawk.info
index 273f8a7a..c3565d3c 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -8559,6 +8559,10 @@ worked around; range patterns do not combine with other patterns:
error--> gawk: cmd. line:1: (/1/,/2/) || /Yes/
error--> gawk: cmd. line:1: ^ syntax error
+ As a minor point of interest, although it is poor style, POSIX
+allows you to put a newline after the comma in a range pattern.
+(d.c.)
+

File: gawk.info, Node: BEGIN/END, Next: BEGINFILE/ENDFILE, Prev: Ranges, Up: Pattern Overview
@@ -9379,12 +9383,12 @@ listed in `ARGV'.
standard. See the Austin Group website
(http://austingroupbugs.net/view.php?id=607).
- The current version of the Brian Kernighan's `awk' (*note Other
-Versions::) also supports `nextfile'. However, it doesn't allow the
-`nextfile' statement inside function bodies (*note User-defined::).
-`gawk' does; a `nextfile' inside a function body reads the next record
-and starts processing it with the first rule in the program, just as
-any other `nextfile' statement.
+ The current version of the Brian Kernighan's `awk', and `mawk'
+(*note Other Versions::) also support `nextfile'. However, they don't
+allow the `nextfile' statement inside function bodies (*note
+User-defined::). `gawk' does; a `nextfile' inside a function body
+reads the next record and starts processing it with the first rule in
+the program, just as any other `nextfile' statement.

File: gawk.info, Node: Exit Statement, Prev: Nextfile Statement, Up: Statements
@@ -29973,11 +29977,11 @@ Index
* # (number sign), #! (executable scripts): Executable Scripts.
(line 6)
* # (number sign), commenting: Comments. (line 6)
-* $ (dollar sign): Regexp Operators. (line 35)
* $ (dollar sign), $ field operator <1>: Precedence. (line 43)
* $ (dollar sign), $ field operator: Fields. (line 19)
* $ (dollar sign), incrementing fields and arrays: Increment Ops.
(line 30)
+* $ (dollar sign), regexp operator: Regexp Operators. (line 35)
* % (percent sign), % operator: Precedence. (line 55)
* % (percent sign), %= operator <1>: Precedence. (line 95)
* % (percent sign), %= operator: Assignment Ops. (line 129)
@@ -30004,12 +30008,12 @@ Index
* * (asterisk), **= operator: Assignment Ops. (line 129)
* * (asterisk), *= operator <1>: Precedence. (line 95)
* * (asterisk), *= operator: Assignment Ops. (line 129)
-* + (plus sign): Regexp Operators. (line 102)
* + (plus sign), + operator: Precedence. (line 52)
* + (plus sign), ++ operator <1>: Precedence. (line 46)
* + (plus sign), ++ operator: Increment Ops. (line 11)
* + (plus sign), += operator <1>: Precedence. (line 95)
* + (plus sign), += operator: Assignment Ops. (line 82)
+* + (plus sign), regexp operator: Regexp Operators. (line 102)
* , (comma), in range patterns: Ranges. (line 6)
* - (hyphen), - operator: Precedence. (line 52)
* - (hyphen), -- operator <1>: Precedence. (line 46)
@@ -30115,17 +30119,18 @@ Index
(line 147)
* / (forward slash), patterns and: Expression Patterns. (line 24)
* /= operator vs. /=.../ regexp constant: Assignment Ops. (line 147)
-* /dev/... special files (gawk): Special FD. (line 46)
-* /dev/fd/N special files: Special FD. (line 46)
+* /dev/... special files: Special FD. (line 46)
+* /dev/fd/N special files (gawk): Special FD. (line 46)
* /inet/... special files (gawk): TCP/IP Networking. (line 6)
* /inet4/... special files (gawk): TCP/IP Networking. (line 6)
* /inet6/... special files (gawk): TCP/IP Networking. (line 6)
-* ; (semicolon): Statements/Lines. (line 91)
* ; (semicolon), AWKPATH variable and: PC Using. (line 10)
* ; (semicolon), separating statements in actions <1>: Statements.
(line 10)
-* ; (semicolon), separating statements in actions: Action Overview.
+* ; (semicolon), separating statements in actions <2>: Action Overview.
(line 19)
+* ; (semicolon), separating statements in actions: Statements/Lines.
+ (line 91)
* < (left angle bracket), < operator <1>: Precedence. (line 65)
* < (left angle bracket), < operator: Comparison Operators.
(line 11)
@@ -30146,10 +30151,10 @@ Index
(line 11)
* > (right angle bracket), >> operator (I/O) <1>: Precedence. (line 65)
* > (right angle bracket), >> operator (I/O): Redirection. (line 50)
-* ? (question mark) regexp operator <1>: GNU Regexp Operators.
- (line 59)
-* ? (question mark) regexp operator: Regexp Operators. (line 111)
* ? (question mark), ?: operator: Precedence. (line 92)
+* ? (question mark), regexp operator <1>: GNU Regexp Operators.
+ (line 59)
+* ? (question mark), regexp operator: Regexp Operators. (line 111)
* [] (square brackets): Regexp Operators. (line 55)
* \ (backslash) <1>: Regexp Operators. (line 18)
* \ (backslash) <2>: Quoting. (line 31)
@@ -30201,20 +30206,21 @@ Index
* \ (backslash), in escape sequences, POSIX and: Escape Sequences.
(line 112)
* \ (backslash), in regexp constants: Computed Regexps. (line 28)
-* ^ (caret): GNU Regexp Operators.
- (line 59)
* ^ (caret), ^ operator: Precedence. (line 49)
* ^ (caret), ^= operator <1>: Precedence. (line 95)
* ^ (caret), ^= operator: Assignment Ops. (line 129)
* ^ (caret), in bracket expressions: Bracket Expressions. (line 17)
-* ^ (caret), regexp operator: Regexp Operators. (line 22)
-* ^, in FS: Regexp Field Splitting.
+* ^ (caret), in FS: Regexp Field Splitting.
+ (line 59)
+* ^ (caret), regexp operator <1>: GNU Regexp Operators.
(line 59)
+* ^ (caret), regexp operator: Regexp Operators. (line 22)
* _ (underscore), C macro: Explaining gettext. (line 70)
* _ (underscore), in names of private variables: Library Names.
(line 29)
* _ (underscore), translatable string: Programmer i18n. (line 69)
* _gr_init() user-defined function: Group Functions. (line 82)
+* _ord_init() user-defined function: Ordinal Functions. (line 16)
* _pw_init() user-defined function: Passwd Functions. (line 105)
* accessing fields: Fields. (line 6)
* account information <1>: Group Functions. (line 6)
@@ -30228,8 +30234,6 @@ Index
* adding, fields: Changing Fields. (line 53)
* advanced features, fixed-width data: Constant Size. (line 10)
* advanced features, gawk: Advanced Features. (line 6)
-* advanced features, network connections, See Also networks, connections: Advanced Features.
- (line 6)
* advanced features, network programming: TCP/IP Networking. (line 6)
* advanced features, nondecimal input data: Nondecimal Data. (line 6)
* advanced features, processes, communicating with: Two-way I/O.
@@ -30251,6 +30255,7 @@ Index
* ampersand (&), gsub()/gensub()/sub() functions and: Gory Details.
(line 6)
* anagram.awk program: Anagram Program. (line 22)
+* anagrams, finding: Anagram Program. (line 6)
* AND bitwise operation: Bitwise Functions. (line 6)
* and Boolean-logic operator: Boolean Ops. (line 6)
* and() function (gawk): Bitwise Functions. (line 39)
@@ -30449,8 +30454,8 @@ Index
* backslash (\), in regexp constants: Computed Regexps. (line 28)
* backtrace debugger command: Execution Stack. (line 13)
* BBS-list file: Sample Data Files. (line 6)
-* Beebe, Nelson <1>: Other Versions. (line 78)
-* Beebe, Nelson: Acknowledgments. (line 60)
+* Beebe, Nelson H.F. <1>: Other Versions. (line 78)
+* Beebe, Nelson H.F.: Acknowledgments. (line 60)
* BEGIN pattern <1>: Profiling. (line 62)
* BEGIN pattern <2>: BEGIN/END. (line 6)
* BEGIN pattern <3>: Field Separators. (line 45)
@@ -30476,7 +30481,9 @@ Index
* BEGINFILE pattern, Boolean patterns and: Expression Patterns.
(line 73)
* beginfile() user-defined function: Filetrans Function. (line 62)
+* Bentley, Jon: Glossary. (line 151)
* Benzinger, Michael: Contributors. (line 97)
+* Berry, Karl <1>: Ranges and Locales. (line 74)
* Berry, Karl: Acknowledgments. (line 33)
* binary input/output: User-modified. (line 10)
* bindtextdomain() function (C library): Explaining gettext. (line 49)
@@ -30518,9 +30525,28 @@ Index
* Brennan, Michael <1>: Other Versions. (line 6)
* Brennan, Michael <2>: Two-way I/O. (line 6)
* Brennan, Michael <3>: Simple Sed. (line 25)
-* Brennan, Michael: Delete. (line 56)
-* Brian Kernighan's awk: Other Versions. (line 13)
+* Brennan, Michael <4>: Delete. (line 56)
+* Brennan, Michael: Foreword. (line 83)
+* Brian Kernighan's awk <1>: I/O Functions. (line 40)
+* Brian Kernighan's awk <2>: Gory Details. (line 15)
+* Brian Kernighan's awk <3>: String Functions. (line 489)
+* Brian Kernighan's awk <4>: Delete. (line 48)
+* Brian Kernighan's awk <5>: Nextfile Statement. (line 47)
+* Brian Kernighan's awk <6>: Continue Statement. (line 43)
+* Brian Kernighan's awk <7>: Break Statement. (line 51)
+* Brian Kernighan's awk <8>: I/O And BEGIN/END. (line 16)
+* Brian Kernighan's awk <9>: Concatenation. (line 36)
+* Brian Kernighan's awk <10>: Getline/Pipe. (line 62)
+* Brian Kernighan's awk <11>: Regexp Field Splitting.
+ (line 67)
+* Brian Kernighan's awk <12>: GNU Regexp Operators.
+ (line 83)
+* Brian Kernighan's awk <13>: Escape Sequences. (line 116)
+* Brian Kernighan's awk <14>: When. (line 21)
+* Brian Kernighan's awk: Preface. (line 15)
* Brian Kernighan's awk, extensions: BTL. (line 6)
+* Brian Kernighan's awk, source code: Other Versions. (line 13)
+* Brini, Davide: Signature Program. (line 6)
* Broder, Alan J.: Contributors. (line 88)
* Brown, Martin: Contributors. (line 82)
* BSD-based operating systems: Glossary. (line 624)
@@ -30547,12 +30573,12 @@ Index
(line 47)
* call by value: Pass By Value/Reference.
(line 18)
-* caret (^): GNU Regexp Operators.
- (line 59)
* caret (^), ^ operator: Precedence. (line 49)
* caret (^), ^= operator <1>: Precedence. (line 95)
* caret (^), ^= operator: Assignment Ops. (line 129)
* caret (^), in bracket expressions: Bracket Expressions. (line 17)
+* caret (^), regexp operator <1>: GNU Regexp Operators.
+ (line 59)
* caret (^), regexp operator: Regexp Operators. (line 22)
* case keyword: Switch Statement. (line 6)
* case sensitivity, array indices and: Array Intro. (line 91)
@@ -30563,6 +30589,8 @@ Index
* case sensitivity, regexps and: Case-sensitivity. (line 6)
* case sensitivity, string comparisons and: User-modified. (line 82)
* CGI, awk scripts for: Options. (line 125)
+* character classes, See bracket expressions: Regexp Operators.
+ (line 55)
* character lists, See bracket expressions: Regexp Operators. (line 55)
* character sets (machine character encodings) <1>: Glossary. (line 141)
* character sets (machine character encodings): Ordinal Functions.
@@ -30903,6 +30931,8 @@ Index
(line 23)
* differences in awk and gawk, close() function: Close Files And Pipes.
(line 81)
+* differences in awk and gawk, command line directories: Command line directories.
+ (line 6)
* differences in awk and gawk, ERRNO variable: Auto-set. (line 82)
* differences in awk and gawk, error messages: Special FD. (line 16)
* differences in awk and gawk, FIELDWIDTHS variable: User-modified.
@@ -30945,8 +30975,6 @@ Index
(line 346)
* differences in awk and gawk, strings: Scalar Constants. (line 20)
* differences in awk and gawk, strings, storing: Records. (line 191)
-* differences in awk and gawk, strtonum() function (gawk): String Functions.
- (line 401)
* differences in awk and gawk, SYMTAB variable: Auto-set. (line 283)
* differences in awk and gawk, TEXTDOMAIN variable: User-modified.
(line 162)
@@ -30966,11 +30994,11 @@ Index
* documentation, of awk programs: Library Names. (line 6)
* documentation, online: Manual History. (line 11)
* documents, searching: Dupword Program. (line 6)
-* dollar sign ($): Regexp Operators. (line 35)
* dollar sign ($), $ field operator <1>: Precedence. (line 43)
* dollar sign ($), $ field operator: Fields. (line 19)
* dollar sign ($), incrementing fields and arrays: Increment Ops.
(line 30)
+* dollar sign ($), regexp operator: Regexp Operators. (line 35)
* double precision floating-point: General Arithmetic. (line 21)
* double quote (") <1>: Quoting. (line 37)
* double quote ("): Read Terminal. (line 25)
@@ -31087,6 +31115,7 @@ Index
* extensions, common, \x escape sequence: Escape Sequences. (line 61)
* extensions, common, BINMODE variable: PC Using. (line 33)
* extensions, common, delete to delete entire arrays: Delete. (line 39)
+* extensions, common, fflush() function: I/O Functions. (line 40)
* extensions, common, func keyword: Definition Syntax. (line 83)
* extensions, common, length() applied to an array: String Functions.
(line 193)
@@ -31208,10 +31237,10 @@ Index
* fixed-width data: Constant Size. (line 10)
* flag variables <1>: Tee Program. (line 20)
* flag variables: Boolean Ops. (line 67)
-* floating-point numbers, arbitrary precision: Arbitrary Precision Arithmetic.
- (line 6)
* floating-point, numbers <1>: Unexpected Results. (line 6)
* floating-point, numbers: General Arithmetic. (line 6)
+* floating-point, numbers, arbitrary precision: Arbitrary Precision Arithmetic.
+ (line 6)
* floating-point, VAX/VMS: VMS Running. (line 51)
* fnmatch() extension function: Extension Sample Fnmatch.
(line 12)
@@ -31614,14 +31643,16 @@ Index
* Kahrs, Ju"rgen: Acknowledgments. (line 60)
* Kasal, Stepan: Acknowledgments. (line 60)
* Kenobi, Obi-Wan: Undocumented. (line 6)
-* Kernighan, Brian <1>: Basic Data Typing. (line 55)
-* Kernighan, Brian <2>: Other Versions. (line 13)
-* Kernighan, Brian <3>: Contributors. (line 11)
-* Kernighan, Brian <4>: BTL. (line 6)
-* Kernighan, Brian <5>: Library Functions. (line 12)
-* Kernighan, Brian <6>: Concatenation. (line 6)
-* Kernighan, Brian <7>: Acknowledgments. (line 72)
-* Kernighan, Brian <8>: Conventions. (line 34)
+* Kernighan, Brian <1>: Glossary. (line 151)
+* Kernighan, Brian <2>: Basic Data Typing. (line 55)
+* Kernighan, Brian <3>: Other Versions. (line 13)
+* Kernighan, Brian <4>: Contributors. (line 11)
+* Kernighan, Brian <5>: BTL. (line 6)
+* Kernighan, Brian <6>: Library Functions. (line 12)
+* Kernighan, Brian <7>: Concatenation. (line 6)
+* Kernighan, Brian <8>: Getline/Pipe. (line 6)
+* Kernighan, Brian <9>: Acknowledgments. (line 72)
+* Kernighan, Brian <10>: Conventions. (line 34)
* Kernighan, Brian: History. (line 17)
* kill command, dynamic profiling: Profiling. (line 188)
* Knights, jedi: Undocumented. (line 6)
@@ -31742,7 +31773,11 @@ Index
(line 9)
* matching, leftmost longest: Multiple Line. (line 26)
* matching, null strings: Gory Details. (line 164)
-* mawk utility: Other Versions. (line 44)
+* mawk utility <1>: Other Versions. (line 44)
+* mawk utility <2>: Nextfile Statement. (line 47)
+* mawk utility <3>: Concatenation. (line 36)
+* mawk utility <4>: Getline/Pipe. (line 62)
+* mawk utility: Escape Sequences. (line 124)
* McPhee, Patrick: Contributors. (line 100)
* message object files: Explaining gettext. (line 41)
* message object files, converting from portable object files: I18N Example.
@@ -31961,12 +31996,12 @@ Index
* Pitts, Dave <1>: Bugs. (line 73)
* Pitts, Dave: Acknowledgments. (line 60)
* Plauger, P.J.: Library Functions. (line 12)
-* plus sign (+): Regexp Operators. (line 102)
* plus sign (+), + operator: Precedence. (line 52)
* plus sign (+), ++ operator <1>: Precedence. (line 46)
* plus sign (+), ++ operator: Increment Ops. (line 11)
* plus sign (+), += operator <1>: Precedence. (line 95)
* plus sign (+), += operator: Assignment Ops. (line 82)
+* plus sign (+), regexp operator: Regexp Operators. (line 102)
* pointers to functions: Indirect Calls. (line 6)
* portability: Escape Sequences. (line 94)
* portability, #! (executable scripts): Executable Scripts. (line 33)
@@ -32126,10 +32161,10 @@ Index
(line 99)
* QSE Awk: Other Versions. (line 130)
* Quanstrom, Erik: Alarm Program. (line 8)
-* question mark (?) regexp operator <1>: GNU Regexp Operators.
- (line 59)
-* question mark (?) regexp operator: Regexp Operators. (line 111)
* question mark (?), ?: operator: Precedence. (line 92)
+* question mark (?), regexp operator <1>: GNU Regexp Operators.
+ (line 59)
+* question mark (?), regexp operator: Regexp Operators. (line 111)
* QuikTrim Awk: Other Versions. (line 134)
* quit debugger command: Miscellaneous Debugger Commands.
(line 99)
@@ -32152,6 +32187,7 @@ Index
* random numbers, seed of: Numeric Functions. (line 64)
* range expressions (regexps): Bracket Expressions. (line 6)
* range patterns: Ranges. (line 6)
+* range patterns, line continuation and: Ranges. (line 65)
* Rankin, Pat <1>: Bugs. (line 72)
* Rankin, Pat <2>: Contributors. (line 37)
* Rankin, Pat <3>: Assignment Ops. (line 100)
@@ -32316,12 +32352,13 @@ Index
* sed utility <2>: Simple Sed. (line 6)
* sed utility: Field Splitting Summary.
(line 46)
-* semicolon (;): Statements/Lines. (line 91)
* semicolon (;), AWKPATH variable and: PC Using. (line 10)
* semicolon (;), separating statements in actions <1>: Statements.
(line 10)
-* semicolon (;), separating statements in actions: Action Overview.
+* semicolon (;), separating statements in actions <2>: Action Overview.
(line 19)
+* semicolon (;), separating statements in actions: Statements/Lines.
+ (line 91)
* separators, field: User-modified. (line 56)
* separators, field, FIELDWIDTHS variable and: User-modified. (line 35)
* separators, field, FPAT variable and: User-modified. (line 45)
@@ -32394,6 +32431,7 @@ Index
* signals, INT/SIGINT (MS-Windows): Profiling. (line 214)
* signals, QUIT/SIGQUIT (MS-Windows): Profiling. (line 214)
* signals, USR1/SIGUSR1: Profiling. (line 188)
+* signature program: Signature Program. (line 6)
* SIGQUIT signal (MS-Windows): Profiling. (line 214)
* SIGUSR1 signal: Profiling. (line 188)
* silent debugger command: Debugger Execution Control.
@@ -32614,7 +32652,9 @@ Index
* undisplay debugger command: Viewing And Changing Data.
(line 80)
* undocumented features: Undocumented. (line 6)
-* Unicode: Glossary. (line 141)
+* Unicode <1>: Glossary. (line 141)
+* Unicode <2>: Ranges and Locales. (line 61)
+* Unicode: Ordinal Functions. (line 45)
* uninitialized variables, as array subscripts: Uninitialized Subscripts.
(line 6)
* uniq utility: Uniq Program. (line 6)
@@ -32925,362 +32965,362 @@ Node: Pattern Overview358484
Node: Regexp Patterns360153
Node: Expression Patterns360696
Node: Ranges364381
-Node: BEGIN/END367347
-Node: Using BEGIN/END368109
-Ref: Using BEGIN/END-Footnote-1370840
-Node: I/O And BEGIN/END370946
-Node: BEGINFILE/ENDFILE373228
-Node: Empty376142
-Node: Using Shell Variables376458
-Node: Action Overview378743
-Node: Statements381100
-Node: If Statement382954
-Node: While Statement384453
-Node: Do Statement386497
-Node: For Statement387653
-Node: Switch Statement390805
-Node: Break Statement392959
-Node: Continue Statement394949
-Node: Next Statement396742
-Node: Nextfile Statement399132
-Node: Exit Statement401775
-Node: Built-in Variables404191
-Node: User-modified405286
-Ref: User-modified-Footnote-1413644
-Node: Auto-set413706
-Ref: Auto-set-Footnote-1427176
-Ref: Auto-set-Footnote-2427381
-Node: ARGC and ARGV427437
-Node: Arrays431288
-Node: Array Basics432793
-Node: Array Intro433619
-Node: Reference to Elements437936
-Node: Assigning Elements440206
-Node: Array Example440697
-Node: Scanning an Array442429
-Node: Controlling Scanning444743
-Ref: Controlling Scanning-Footnote-1449830
-Node: Delete450146
-Ref: Delete-Footnote-1452911
-Node: Numeric Array Subscripts452968
-Node: Uninitialized Subscripts455151
-Node: Multidimensional456778
-Node: Multiscanning459871
-Node: Arrays of Arrays461460
-Node: Functions466100
-Node: Built-in466919
-Node: Calling Built-in467997
-Node: Numeric Functions469985
-Ref: Numeric Functions-Footnote-1473817
-Ref: Numeric Functions-Footnote-2474174
-Ref: Numeric Functions-Footnote-3474222
-Node: String Functions474491
-Ref: String Functions-Footnote-1497411
-Ref: String Functions-Footnote-2497540
-Ref: String Functions-Footnote-3497788
-Node: Gory Details497875
-Ref: table-sub-escapes499554
-Ref: table-sub-posix-92500908
-Ref: table-sub-proposed502259
-Ref: table-posix-sub503613
-Ref: table-gensub-escapes505158
-Ref: Gory Details-Footnote-1506334
-Ref: Gory Details-Footnote-2506385
-Node: I/O Functions506536
-Ref: I/O Functions-Footnote-1513526
-Node: Time Functions513673
-Ref: Time Functions-Footnote-1524606
-Ref: Time Functions-Footnote-2524674
-Ref: Time Functions-Footnote-3524832
-Ref: Time Functions-Footnote-4524943
-Ref: Time Functions-Footnote-5525055
-Ref: Time Functions-Footnote-6525282
-Node: Bitwise Functions525548
-Ref: table-bitwise-ops526110
-Ref: Bitwise Functions-Footnote-1530331
-Node: Type Functions530515
-Node: I18N Functions531666
-Node: User-defined533293
-Node: Definition Syntax534097
-Ref: Definition Syntax-Footnote-1539011
-Node: Function Example539080
-Ref: Function Example-Footnote-1541729
-Node: Function Caveats541751
-Node: Calling A Function542269
-Node: Variable Scope543224
-Node: Pass By Value/Reference546187
-Node: Return Statement549695
-Node: Dynamic Typing552676
-Node: Indirect Calls553607
-Node: Library Functions563294
-Ref: Library Functions-Footnote-1566807
-Ref: Library Functions-Footnote-2566950
-Node: Library Names567121
-Ref: Library Names-Footnote-1570594
-Ref: Library Names-Footnote-2570814
-Node: General Functions570900
-Node: Strtonum Function571928
-Node: Assert Function574858
-Node: Round Function578184
-Node: Cliff Random Function579725
-Node: Ordinal Functions580741
-Ref: Ordinal Functions-Footnote-1583818
-Ref: Ordinal Functions-Footnote-2584070
-Node: Join Function584281
-Ref: Join Function-Footnote-1586052
-Node: Getlocaltime Function586252
-Node: Readfile Function589993
-Node: Data File Management591832
-Node: Filetrans Function592464
-Node: Rewind Function596533
-Node: File Checking597920
-Node: Empty Files599014
-Node: Ignoring Assigns601244
-Node: Getopt Function602798
-Ref: Getopt Function-Footnote-1614101
-Node: Passwd Functions614304
-Ref: Passwd Functions-Footnote-1623282
-Node: Group Functions623370
-Node: Walking Arrays631454
-Node: Sample Programs633590
-Node: Running Examples634264
-Node: Clones634992
-Node: Cut Program636216
-Node: Egrep Program646067
-Ref: Egrep Program-Footnote-1653840
-Node: Id Program653950
-Node: Split Program657566
-Ref: Split Program-Footnote-1661085
-Node: Tee Program661213
-Node: Uniq Program664016
-Node: Wc Program671445
-Ref: Wc Program-Footnote-1675711
-Ref: Wc Program-Footnote-2675911
-Node: Miscellaneous Programs676003
-Node: Dupword Program677191
-Node: Alarm Program679222
-Node: Translate Program684029
-Ref: Translate Program-Footnote-1688416
-Ref: Translate Program-Footnote-2688664
-Node: Labels Program688798
-Ref: Labels Program-Footnote-1692169
-Node: Word Sorting692253
-Node: History Sorting696137
-Node: Extract Program697976
-Ref: Extract Program-Footnote-1705479
-Node: Simple Sed705607
-Node: Igawk Program708669
-Ref: Igawk Program-Footnote-1723826
-Ref: Igawk Program-Footnote-2724027
-Node: Anagram Program724165
-Node: Signature Program727233
-Node: Advanced Features728333
-Node: Nondecimal Data730219
-Node: Array Sorting731802
-Node: Controlling Array Traversal732499
-Node: Array Sorting Functions740783
-Ref: Array Sorting Functions-Footnote-1744652
-Node: Two-way I/O744846
-Ref: Two-way I/O-Footnote-1750278
-Node: TCP/IP Networking750360
-Node: Profiling753204
-Node: Internationalization760707
-Node: I18N and L10N762132
-Node: Explaining gettext762818
-Ref: Explaining gettext-Footnote-1767886
-Ref: Explaining gettext-Footnote-2768070
-Node: Programmer i18n768235
-Node: Translator i18n772437
-Node: String Extraction773231
-Ref: String Extraction-Footnote-1774192
-Node: Printf Ordering774278
-Ref: Printf Ordering-Footnote-1777060
-Node: I18N Portability777124
-Ref: I18N Portability-Footnote-1779573
-Node: I18N Example779636
-Ref: I18N Example-Footnote-1782274
-Node: Gawk I18N782346
-Node: Debugger782967
-Node: Debugging783938
-Node: Debugging Concepts784371
-Node: Debugging Terms786227
-Node: Awk Debugging788824
-Node: Sample Debugging Session789716
-Node: Debugger Invocation790236
-Node: Finding The Bug791569
-Node: List of Debugger Commands798056
-Node: Breakpoint Control799390
-Node: Debugger Execution Control803054
-Node: Viewing And Changing Data806414
-Node: Execution Stack809770
-Node: Debugger Info811237
-Node: Miscellaneous Debugger Commands815219
-Node: Readline Support820395
-Node: Limitations821226
-Node: Arbitrary Precision Arithmetic823478
-Ref: Arbitrary Precision Arithmetic-Footnote-1825127
-Node: General Arithmetic825275
-Node: Floating Point Issues826995
-Node: String Conversion Precision827876
-Ref: String Conversion Precision-Footnote-1829581
-Node: Unexpected Results829690
-Node: POSIX Floating Point Problems831843
-Ref: POSIX Floating Point Problems-Footnote-1835668
-Node: Integer Programming835706
-Node: Floating-point Programming837445
-Ref: Floating-point Programming-Footnote-1843776
-Ref: Floating-point Programming-Footnote-2844046
-Node: Floating-point Representation844310
-Node: Floating-point Context845475
-Ref: table-ieee-formats846314
-Node: Rounding Mode847698
-Ref: table-rounding-modes848177
-Ref: Rounding Mode-Footnote-1851192
-Node: Gawk and MPFR851371
-Node: Arbitrary Precision Floats852626
-Ref: Arbitrary Precision Floats-Footnote-1855069
-Node: Setting Precision855385
-Ref: table-predefined-precision-strings856071
-Node: Setting Rounding Mode858216
-Ref: table-gawk-rounding-modes858620
-Node: Floating-point Constants859807
-Node: Changing Precision861236
-Ref: Changing Precision-Footnote-1862633
-Node: Exact Arithmetic862807
-Node: Arbitrary Precision Integers865945
-Ref: Arbitrary Precision Integers-Footnote-1868960
-Node: Dynamic Extensions869107
-Node: Extension Intro870565
-Node: Plugin License871830
-Node: Extension Mechanism Outline872515
-Ref: load-extension872932
-Ref: load-new-function874410
-Ref: call-new-function875405
-Node: Extension API Description877420
-Node: Extension API Functions Introduction878633
-Node: General Data Types883499
-Ref: General Data Types-Footnote-1889101
-Node: Requesting Values889400
-Ref: table-value-types-returned890131
-Node: Constructor Functions891085
-Node: Registration Functions894105
-Node: Extension Functions894790
-Node: Exit Callback Functions897016
-Node: Extension Version String898265
-Node: Input Parsers898915
-Node: Output Wrappers908672
-Node: Two-way processors913182
-Node: Printing Messages915390
-Ref: Printing Messages-Footnote-1916467
-Node: Updating `ERRNO'916619
-Node: Accessing Parameters917358
-Node: Symbol Table Access918588
-Node: Symbol table by name919100
-Node: Symbol table by cookie920847
-Ref: Symbol table by cookie-Footnote-1924977
-Node: Cached values925040
-Ref: Cached values-Footnote-1928489
-Node: Array Manipulation928580
-Ref: Array Manipulation-Footnote-1929678
-Node: Array Data Types929717
-Ref: Array Data Types-Footnote-1932420
-Node: Array Functions932512
-Node: Flattening Arrays936278
-Node: Creating Arrays943130
-Node: Extension API Variables947855
-Node: Extension Versioning948491
-Node: Extension API Informational Variables950392
-Node: Extension API Boilerplate951478
-Node: Finding Extensions955282
-Node: Extension Example955842
-Node: Internal File Description956572
-Node: Internal File Ops960663
-Ref: Internal File Ops-Footnote-1972172
-Node: Using Internal File Ops972312
-Ref: Using Internal File Ops-Footnote-1974665
-Node: Extension Samples974931
-Node: Extension Sample File Functions976455
-Node: Extension Sample Fnmatch984940
-Node: Extension Sample Fork986709
-Node: Extension Sample Inplace987922
-Node: Extension Sample Ord989700
-Node: Extension Sample Readdir990536
-Node: Extension Sample Revout992068
-Node: Extension Sample Rev2way992661
-Node: Extension Sample Read write array993351
-Node: Extension Sample Readfile995234
-Node: Extension Sample API Tests996052
-Node: Extension Sample Time996577
-Node: gawkextlib997941
-Node: Language History1000722
-Node: V7/SVR3.11002315
-Node: SVR41004635
-Node: POSIX1006077
-Node: BTL1007463
-Node: POSIX/GNU1008197
-Node: Feature History1013796
-Node: Common Extensions1026772
-Node: Ranges and Locales1028084
-Ref: Ranges and Locales-Footnote-11032701
-Ref: Ranges and Locales-Footnote-21032728
-Ref: Ranges and Locales-Footnote-31032962
-Node: Contributors1033183
-Node: Installation1038328
-Node: Gawk Distribution1039222
-Node: Getting1039706
-Node: Extracting1040532
-Node: Distribution contents1042224
-Node: Unix Installation1047929
-Node: Quick Installation1048546
-Node: Additional Configuration Options1050992
-Node: Configuration Philosophy1052728
-Node: Non-Unix Installation1055082
-Node: PC Installation1055540
-Node: PC Binary Installation1056839
-Node: PC Compiling1058687
-Node: PC Testing1061631
-Node: PC Using1062807
-Node: Cygwin1066975
-Node: MSYS1067784
-Node: VMS Installation1068298
-Node: VMS Compilation1069062
-Ref: VMS Compilation-Footnote-11070314
-Node: VMS Dynamic Extensions1070372
-Node: VMS Installation Details1071745
-Node: VMS Running1073996
-Node: VMS GNV1076830
-Node: VMS Old Gawk1077553
-Node: Bugs1078023
-Node: Other Versions1081941
-Node: Notes1088025
-Node: Compatibility Mode1088825
-Node: Additions1089608
-Node: Accessing The Source1090535
-Node: Adding Code1091975
-Node: New Ports1098020
-Node: Derived Files1102155
-Ref: Derived Files-Footnote-11107476
-Ref: Derived Files-Footnote-21107510
-Ref: Derived Files-Footnote-31108110
-Node: Future Extensions1108208
-Node: Implementation Limitations1108791
-Node: Extension Design1110043
-Node: Old Extension Problems1111197
-Ref: Old Extension Problems-Footnote-11112705
-Node: Extension New Mechanism Goals1112762
-Ref: Extension New Mechanism Goals-Footnote-11116127
-Node: Extension Other Design Decisions1116313
-Node: Extension Future Growth1118419
-Node: Old Extension Mechanism1119255
-Node: Basic Concepts1120995
-Node: Basic High Level1121676
-Ref: figure-general-flow1121947
-Ref: figure-process-flow1122546
-Ref: Basic High Level-Footnote-11125775
-Node: Basic Data Typing1125960
-Node: Glossary1129315
-Node: Copying1154777
-Node: GNU Free Documentation License1192334
-Node: Index1217471
+Node: BEGIN/END367485
+Node: Using BEGIN/END368247
+Ref: Using BEGIN/END-Footnote-1370978
+Node: I/O And BEGIN/END371084
+Node: BEGINFILE/ENDFILE373366
+Node: Empty376280
+Node: Using Shell Variables376596
+Node: Action Overview378881
+Node: Statements381238
+Node: If Statement383092
+Node: While Statement384591
+Node: Do Statement386635
+Node: For Statement387791
+Node: Switch Statement390943
+Node: Break Statement393097
+Node: Continue Statement395087
+Node: Next Statement396880
+Node: Nextfile Statement399270
+Node: Exit Statement401925
+Node: Built-in Variables404341
+Node: User-modified405436
+Ref: User-modified-Footnote-1413794
+Node: Auto-set413856
+Ref: Auto-set-Footnote-1427326
+Ref: Auto-set-Footnote-2427531
+Node: ARGC and ARGV427587
+Node: Arrays431438
+Node: Array Basics432943
+Node: Array Intro433769
+Node: Reference to Elements438086
+Node: Assigning Elements440356
+Node: Array Example440847
+Node: Scanning an Array442579
+Node: Controlling Scanning444893
+Ref: Controlling Scanning-Footnote-1449980
+Node: Delete450296
+Ref: Delete-Footnote-1453061
+Node: Numeric Array Subscripts453118
+Node: Uninitialized Subscripts455301
+Node: Multidimensional456928
+Node: Multiscanning460021
+Node: Arrays of Arrays461610
+Node: Functions466250
+Node: Built-in467069
+Node: Calling Built-in468147
+Node: Numeric Functions470135
+Ref: Numeric Functions-Footnote-1473967
+Ref: Numeric Functions-Footnote-2474324
+Ref: Numeric Functions-Footnote-3474372
+Node: String Functions474641
+Ref: String Functions-Footnote-1497561
+Ref: String Functions-Footnote-2497690
+Ref: String Functions-Footnote-3497938
+Node: Gory Details498025
+Ref: table-sub-escapes499704
+Ref: table-sub-posix-92501058
+Ref: table-sub-proposed502409
+Ref: table-posix-sub503763
+Ref: table-gensub-escapes505308
+Ref: Gory Details-Footnote-1506484
+Ref: Gory Details-Footnote-2506535
+Node: I/O Functions506686
+Ref: I/O Functions-Footnote-1513676
+Node: Time Functions513823
+Ref: Time Functions-Footnote-1524756
+Ref: Time Functions-Footnote-2524824
+Ref: Time Functions-Footnote-3524982
+Ref: Time Functions-Footnote-4525093
+Ref: Time Functions-Footnote-5525205
+Ref: Time Functions-Footnote-6525432
+Node: Bitwise Functions525698
+Ref: table-bitwise-ops526260
+Ref: Bitwise Functions-Footnote-1530481
+Node: Type Functions530665
+Node: I18N Functions531816
+Node: User-defined533443
+Node: Definition Syntax534247
+Ref: Definition Syntax-Footnote-1539161
+Node: Function Example539230
+Ref: Function Example-Footnote-1541879
+Node: Function Caveats541901
+Node: Calling A Function542419
+Node: Variable Scope543374
+Node: Pass By Value/Reference546337
+Node: Return Statement549845
+Node: Dynamic Typing552826
+Node: Indirect Calls553757
+Node: Library Functions563444
+Ref: Library Functions-Footnote-1566957
+Ref: Library Functions-Footnote-2567100
+Node: Library Names567271
+Ref: Library Names-Footnote-1570744
+Ref: Library Names-Footnote-2570964
+Node: General Functions571050
+Node: Strtonum Function572078
+Node: Assert Function575008
+Node: Round Function578334
+Node: Cliff Random Function579875
+Node: Ordinal Functions580891
+Ref: Ordinal Functions-Footnote-1583968
+Ref: Ordinal Functions-Footnote-2584220
+Node: Join Function584431
+Ref: Join Function-Footnote-1586202
+Node: Getlocaltime Function586402
+Node: Readfile Function590143
+Node: Data File Management591982
+Node: Filetrans Function592614
+Node: Rewind Function596683
+Node: File Checking598070
+Node: Empty Files599164
+Node: Ignoring Assigns601394
+Node: Getopt Function602948
+Ref: Getopt Function-Footnote-1614251
+Node: Passwd Functions614454
+Ref: Passwd Functions-Footnote-1623432
+Node: Group Functions623520
+Node: Walking Arrays631604
+Node: Sample Programs633740
+Node: Running Examples634414
+Node: Clones635142
+Node: Cut Program636366
+Node: Egrep Program646217
+Ref: Egrep Program-Footnote-1653990
+Node: Id Program654100
+Node: Split Program657716
+Ref: Split Program-Footnote-1661235
+Node: Tee Program661363
+Node: Uniq Program664166
+Node: Wc Program671595
+Ref: Wc Program-Footnote-1675861
+Ref: Wc Program-Footnote-2676061
+Node: Miscellaneous Programs676153
+Node: Dupword Program677341
+Node: Alarm Program679372
+Node: Translate Program684179
+Ref: Translate Program-Footnote-1688566
+Ref: Translate Program-Footnote-2688814
+Node: Labels Program688948
+Ref: Labels Program-Footnote-1692319
+Node: Word Sorting692403
+Node: History Sorting696287
+Node: Extract Program698126
+Ref: Extract Program-Footnote-1705629
+Node: Simple Sed705757
+Node: Igawk Program708819
+Ref: Igawk Program-Footnote-1723976
+Ref: Igawk Program-Footnote-2724177
+Node: Anagram Program724315
+Node: Signature Program727383
+Node: Advanced Features728483
+Node: Nondecimal Data730369
+Node: Array Sorting731952
+Node: Controlling Array Traversal732649
+Node: Array Sorting Functions740933
+Ref: Array Sorting Functions-Footnote-1744802
+Node: Two-way I/O744996
+Ref: Two-way I/O-Footnote-1750428
+Node: TCP/IP Networking750510
+Node: Profiling753354
+Node: Internationalization760857
+Node: I18N and L10N762282
+Node: Explaining gettext762968
+Ref: Explaining gettext-Footnote-1768036
+Ref: Explaining gettext-Footnote-2768220
+Node: Programmer i18n768385
+Node: Translator i18n772587
+Node: String Extraction773381
+Ref: String Extraction-Footnote-1774342
+Node: Printf Ordering774428
+Ref: Printf Ordering-Footnote-1777210
+Node: I18N Portability777274
+Ref: I18N Portability-Footnote-1779723
+Node: I18N Example779786
+Ref: I18N Example-Footnote-1782424
+Node: Gawk I18N782496
+Node: Debugger783117
+Node: Debugging784088
+Node: Debugging Concepts784521
+Node: Debugging Terms786377
+Node: Awk Debugging788974
+Node: Sample Debugging Session789866
+Node: Debugger Invocation790386
+Node: Finding The Bug791719
+Node: List of Debugger Commands798206
+Node: Breakpoint Control799540
+Node: Debugger Execution Control803204
+Node: Viewing And Changing Data806564
+Node: Execution Stack809920
+Node: Debugger Info811387
+Node: Miscellaneous Debugger Commands815369
+Node: Readline Support820545
+Node: Limitations821376
+Node: Arbitrary Precision Arithmetic823628
+Ref: Arbitrary Precision Arithmetic-Footnote-1825277
+Node: General Arithmetic825425
+Node: Floating Point Issues827145
+Node: String Conversion Precision828026
+Ref: String Conversion Precision-Footnote-1829731
+Node: Unexpected Results829840
+Node: POSIX Floating Point Problems831993
+Ref: POSIX Floating Point Problems-Footnote-1835818
+Node: Integer Programming835856
+Node: Floating-point Programming837595
+Ref: Floating-point Programming-Footnote-1843926
+Ref: Floating-point Programming-Footnote-2844196
+Node: Floating-point Representation844460
+Node: Floating-point Context845625
+Ref: table-ieee-formats846464
+Node: Rounding Mode847848
+Ref: table-rounding-modes848327
+Ref: Rounding Mode-Footnote-1851342
+Node: Gawk and MPFR851521
+Node: Arbitrary Precision Floats852776
+Ref: Arbitrary Precision Floats-Footnote-1855219
+Node: Setting Precision855535
+Ref: table-predefined-precision-strings856221
+Node: Setting Rounding Mode858366
+Ref: table-gawk-rounding-modes858770
+Node: Floating-point Constants859957
+Node: Changing Precision861386
+Ref: Changing Precision-Footnote-1862783
+Node: Exact Arithmetic862957
+Node: Arbitrary Precision Integers866095
+Ref: Arbitrary Precision Integers-Footnote-1869110
+Node: Dynamic Extensions869257
+Node: Extension Intro870715
+Node: Plugin License871980
+Node: Extension Mechanism Outline872665
+Ref: load-extension873082
+Ref: load-new-function874560
+Ref: call-new-function875555
+Node: Extension API Description877570
+Node: Extension API Functions Introduction878783
+Node: General Data Types883649
+Ref: General Data Types-Footnote-1889251
+Node: Requesting Values889550
+Ref: table-value-types-returned890281
+Node: Constructor Functions891235
+Node: Registration Functions894255
+Node: Extension Functions894940
+Node: Exit Callback Functions897166
+Node: Extension Version String898415
+Node: Input Parsers899065
+Node: Output Wrappers908822
+Node: Two-way processors913332
+Node: Printing Messages915540
+Ref: Printing Messages-Footnote-1916617
+Node: Updating `ERRNO'916769
+Node: Accessing Parameters917508
+Node: Symbol Table Access918738
+Node: Symbol table by name919250
+Node: Symbol table by cookie920997
+Ref: Symbol table by cookie-Footnote-1925127
+Node: Cached values925190
+Ref: Cached values-Footnote-1928639
+Node: Array Manipulation928730
+Ref: Array Manipulation-Footnote-1929828
+Node: Array Data Types929867
+Ref: Array Data Types-Footnote-1932570
+Node: Array Functions932662
+Node: Flattening Arrays936428
+Node: Creating Arrays943280
+Node: Extension API Variables948005
+Node: Extension Versioning948641
+Node: Extension API Informational Variables950542
+Node: Extension API Boilerplate951628
+Node: Finding Extensions955432
+Node: Extension Example955992
+Node: Internal File Description956722
+Node: Internal File Ops960813
+Ref: Internal File Ops-Footnote-1972322
+Node: Using Internal File Ops972462
+Ref: Using Internal File Ops-Footnote-1974815
+Node: Extension Samples975081
+Node: Extension Sample File Functions976605
+Node: Extension Sample Fnmatch985090
+Node: Extension Sample Fork986859
+Node: Extension Sample Inplace988072
+Node: Extension Sample Ord989850
+Node: Extension Sample Readdir990686
+Node: Extension Sample Revout992218
+Node: Extension Sample Rev2way992811
+Node: Extension Sample Read write array993501
+Node: Extension Sample Readfile995384
+Node: Extension Sample API Tests996202
+Node: Extension Sample Time996727
+Node: gawkextlib998091
+Node: Language History1000872
+Node: V7/SVR3.11002465
+Node: SVR41004785
+Node: POSIX1006227
+Node: BTL1007613
+Node: POSIX/GNU1008347
+Node: Feature History1013946
+Node: Common Extensions1026922
+Node: Ranges and Locales1028234
+Ref: Ranges and Locales-Footnote-11032851
+Ref: Ranges and Locales-Footnote-21032878
+Ref: Ranges and Locales-Footnote-31033112
+Node: Contributors1033333
+Node: Installation1038478
+Node: Gawk Distribution1039372
+Node: Getting1039856
+Node: Extracting1040682
+Node: Distribution contents1042374
+Node: Unix Installation1048079
+Node: Quick Installation1048696
+Node: Additional Configuration Options1051142
+Node: Configuration Philosophy1052878
+Node: Non-Unix Installation1055232
+Node: PC Installation1055690
+Node: PC Binary Installation1056989
+Node: PC Compiling1058837
+Node: PC Testing1061781
+Node: PC Using1062957
+Node: Cygwin1067125
+Node: MSYS1067934
+Node: VMS Installation1068448
+Node: VMS Compilation1069212
+Ref: VMS Compilation-Footnote-11070464
+Node: VMS Dynamic Extensions1070522
+Node: VMS Installation Details1071895
+Node: VMS Running1074146
+Node: VMS GNV1076980
+Node: VMS Old Gawk1077703
+Node: Bugs1078173
+Node: Other Versions1082091
+Node: Notes1088175
+Node: Compatibility Mode1088975
+Node: Additions1089758
+Node: Accessing The Source1090685
+Node: Adding Code1092125
+Node: New Ports1098170
+Node: Derived Files1102305
+Ref: Derived Files-Footnote-11107626
+Ref: Derived Files-Footnote-21107660
+Ref: Derived Files-Footnote-31108260
+Node: Future Extensions1108358
+Node: Implementation Limitations1108941
+Node: Extension Design1110193
+Node: Old Extension Problems1111347
+Ref: Old Extension Problems-Footnote-11112855
+Node: Extension New Mechanism Goals1112912
+Ref: Extension New Mechanism Goals-Footnote-11116277
+Node: Extension Other Design Decisions1116463
+Node: Extension Future Growth1118569
+Node: Old Extension Mechanism1119405
+Node: Basic Concepts1121145
+Node: Basic High Level1121826
+Ref: figure-general-flow1122097
+Ref: figure-process-flow1122696
+Ref: Basic High Level-Footnote-11125925
+Node: Basic Data Typing1126110
+Node: Glossary1129465
+Node: Copying1154927
+Node: GNU Free Documentation License1192484
+Node: Index1217621

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 5d7f8b58..f326bd1a 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -1000,6 +1000,7 @@ Arnold has distilled over a decade of experience writing and
using AWK programs, and developing @command{gawk}, into this book. If you use
AWK or want to learn how, then read this book.
+@cindex Brennan, Michael
@display
Michael Brennan
Author of @command{mawk}
@@ -1024,6 +1025,7 @@ 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.
+@cindex Brian Kernighan's @command{awk}
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
@@ -1774,7 +1776,7 @@ significant editorial help for this @value{DOCUMENT} for the
3.1 release of @command{gawk}.
@end quotation
-@cindex Beebe, Nelson
+@cindex Beebe, Nelson H.F.@:
@cindex Buening, Andreas
@cindex Collado, Manuel
@cindex Colombo, Antonio
@@ -3033,8 +3035,8 @@ noticed because it is ``hidden'' inside the comment. Thus, the
@code{BEGIN} is noted as a syntax error.
@cindex statements, multiple
-@cindex @code{;} (semicolon)
-@cindex semicolon (@code{;})
+@cindex @code{;} (semicolon), separating statements in actions
+@cindex semicolon (@code{;}), separating statements in actions
When @command{awk} statements within one rule are short, you might want to put
more than one of them on a line. This is accomplished by separating the statements
with a semicolon (@samp{;}).
@@ -3094,6 +3096,7 @@ used once, and thrown away. Because @command{awk} programs are interpreted, you
can avoid the (usually lengthy) compilation part of the typical
edit-compile-test-debug cycle of software development.
+@cindex Brian Kernighan's @command{awk}
Complex programs have been written in @command{awk}, including a complete
retargetable assembler for eight-bit microprocessors (@pxref{Glossary}, for
more information), and a microcode assembler for a special-purpose Prolog
@@ -4585,6 +4588,7 @@ leaves what happens as undefined. There are two choices:
@c @cindex automatic warnings
@c @cindex warnings, automatic
+@cindex Brian Kernighan's @command{awk}
@table @asis
@item Strip the backslash out
This is what Brian Kernighan's @command{awk} and @command{gawk} both do.
@@ -4598,6 +4602,7 @@ two backslashes in the string: @samp{FS = @w{"[ \t]+\\|[ \t]+"}}.)
@cindex @command{gawk}, escape sequences
@cindex Unix @command{awk}, backslashes in escape sequences
+@cindex @command{mawk} utility
@item Leave the backslash alone
Some other @command{awk} implementations do this.
In such implementations, typing @code{"a\qc"} is the same as typing
@@ -4626,6 +4631,7 @@ leaves what happens as undefined. There are two choices:
@c @cindex automatic warnings
@c @cindex warnings, automatic
+@cindex Brian Kernighan's @command{awk}
@table @asis
@item Strip the backslash out
This is what Brian Kernighan's @command{awk} and @command{gawk} both do.
@@ -4639,6 +4645,7 @@ two backslashes in the string: @samp{FS = @w{"[ \t]+\\|[ \t]+"}}.)
@cindex @command{gawk}, escape sequences
@cindex Unix @command{awk}, backslashes in escape sequences
+@cindex @command{mawk} utility
@item Leave the backslash alone
Some other @command{awk} implementations do this.
In such implementations, typing @code{"a\qc"} is the same as typing
@@ -4749,8 +4756,8 @@ The condition is not true in the following example:
if ("line1\nLINE 2" ~ /^L/) @dots{}
@end example
-@cindex @code{$} (dollar sign)
-@cindex dollar sign (@code{$})
+@cindex @code{$} (dollar sign), regexp operator
+@cindex dollar sign (@code{$}), regexp operator
@item $
This is similar to @samp{^}, but it matches only at the end of a string.
For example, @samp{p$}
@@ -4784,6 +4791,7 @@ may not be able to match the @sc{nul} character.
@cindex bracket expressions
@cindex character sets, See Also bracket expressions
@cindex character lists, See bracket expressions
+@cindex character classes, See bracket expressions
@item [@dots{}]
This is called a @dfn{bracket expression}.@footnote{In other literature,
you may see a bracket expression referred to as either a
@@ -4845,8 +4853,8 @@ prints every record in @file{sample} containing a string of the form
Notice the escaping of the parentheses by preceding them
with backslashes.
-@cindex @code{+} (plus sign)
-@cindex plus sign (@code{+})
+@cindex @code{+} (plus sign), regexp operator
+@cindex plus sign (@code{+}), regexp operator
@item +
This symbol is similar to @samp{*}, except that the preceding expression must be
matched at least once. This means that @samp{wh+y}
@@ -4859,8 +4867,8 @@ way of writing the last @samp{*} example:
awk '/\(c[ad]+r x\)/ @{ print @}' sample
@end example
-@cindex @code{?} (question mark) regexp operator
-@cindex question mark (@code{?}) regexp operator
+@cindex @code{?} (question mark), regexp operator
+@cindex question mark (@code{?}), regexp operator
@item ?
This symbol is similar to @samp{*}, except that the preceding expression can be
matched either once or not at all. For example, @samp{fe?d}
@@ -5182,10 +5190,10 @@ Matches the empty string at the
end of a buffer (string).
@end table
-@cindex @code{^} (caret)
-@cindex caret (@code{^})
-@cindex @code{?} (question mark) regexp operator
-@cindex question mark (@code{?}) regexp operator
+@cindex @code{^} (caret), regexp operator
+@cindex caret (@code{^}), regexp operator
+@cindex @code{?} (question mark), regexp operator
+@cindex question mark (@code{?}), regexp operator
Because @samp{^} and @samp{$} always work in terms of the beginning
and end of strings, these operators don't add any new capabilities
for @command{awk}. They are provided for compatibility with other
@@ -5229,6 +5237,7 @@ Only POSIX regexps are supported; the GNU operators are not special
(e.g., @samp{\w} matches a literal @samp{w}). Interval expressions
are allowed.
+@cindex Brian Kernighan's @command{awk}
@item @code{--traditional}
Traditional Unix @command{awk} regexps are matched. The GNU operators
are not special, and interval expressions are not available.
@@ -6505,7 +6514,7 @@ was ignored when finding @code{$1}, it is not part of the new @code{$0}.
Finally, the last @code{print} statement prints the new @code{$0}.
@cindex @code{FS}, containing @code{^}
-@cindex @code{^}, in @code{FS}
+@cindex @code{^} (caret), in @code{FS}
@cindex dark corner, @code{^}, in @code{FS}
There is an additional subtlety to be aware of when using regular expressions
for field splitting.
@@ -6516,6 +6525,7 @@ different @command{awk} versions answer this question differently, and you
should not rely on any specific behavior in your programs.
@value{DARKCORNER}
+@cindex Brian Kernighan's @command{awk}
As a point of information, Brian Kernighan's @command{awk} allows @samp{^}
to match only at the beginning of the record. @command{gawk}
also works this way. For example:
@@ -7596,6 +7606,7 @@ that does handle nested @samp{@@include} statements.
@subsection Using @code{getline} from a Pipe
@c From private email, dated October 2, 1988. Used by permission, March 2013.
+@cindex Kernighan, Brian
@quotation
@i{Omniscience has much to recommend it.
Failing that, attention to details would be useful.}
@@ -7683,6 +7694,8 @@ because the concatenation operator is not parenthesized. You should
write it as @samp{(@w{"echo "} "date") | getline} if you want your program
to be portable to all @command{awk} implementations.
+@cindex Brian Kernighan's @command{awk}
+@cindex @command{mawk} utility
@quotation NOTE
Unfortunately, @command{gawk} has not been consistent in its treatment
of a construct like @samp{@w{"echo "} "date" | getline}.
@@ -8007,6 +8020,7 @@ indefinitely until some other process opens it for writing.
@node Command line directories
@section Directories On The Command Line
+@cindex differences in @command{awk} and @command{gawk}, command line directories
@cindex directories, command line
@cindex command line, directories on
@@ -9159,9 +9173,9 @@ has been ported to, not just those that are POSIX-compliant:
@cindex extensions, common@comma{} @code{/dev/stdout} special file
@cindex extensions, common@comma{} @code{/dev/stderr} special file
@cindex file names, standard streams in @command{gawk}
-@cindex @code{/dev/@dots{}} special files (@command{gawk})
+@cindex @code{/dev/@dots{}} special files
@cindex files, @code{/dev/@dots{}} special files
-@cindex @code{/dev/fd/@var{N}} special files
+@cindex @code{/dev/fd/@var{N}} special files (@command{gawk})
@table @file
@item /dev/stdin
The standard input (file descriptor 0).
@@ -10346,6 +10360,8 @@ name = "name"
print "something meaningful" > file name
@end example
+@cindex Brian Kernighan's @command{awk}
+@cindex @command{mawk} utility
@noindent
This produces a syntax error with some versions of Unix
@command{awk}.@footnote{It happens that Brian Kernighan's
@@ -12191,6 +12207,11 @@ $ @kbd{echo Yes | gawk '(/1/,/2/) || /Yes/'}
@error{} gawk: cmd. line:1: ^ syntax error
@end example
+@cindex range patterns, line continuation and
+As a minor point of interest, although it is poor style,
+POSIX allows you to put a newline after the comma in
+a range pattern. @value{DARKCORNER}
+
@node BEGIN/END
@subsection The @code{BEGIN} and @code{END} Special Patterns
@@ -12289,6 +12310,7 @@ to give @code{$0} a real value is to execute a @code{getline} command
without a variable (@pxref{Getline}).
Another way is simply to assign a value to @code{$0}.
+@cindex Brian Kernighan's @command{awk}
@cindex differences in @command{awk} and @command{gawk}, @code{BEGIN}/@code{END} patterns
@cindex POSIX @command{awk}, @code{BEGIN}/@code{END} patterns
@cindex @code{print} statement, @code{BEGIN}/@code{END} patterns and
@@ -13019,6 +13041,7 @@ This is discussed in @ref{Switch Statement}.
@cindex POSIX @command{awk}, @code{break} statement and
@cindex dark corner, @code{break} statement
@cindex @command{gawk}, @code{break} statement in
+@cindex Brian Kernighan's @command{awk}
The @code{break} statement has no meaning when
used outside the body of a loop or @code{switch}.
However, although it was never documented,
@@ -13083,6 +13106,7 @@ This program loops forever once @code{x} reaches 5.
@cindex POSIX @command{awk}, @code{continue} statement and
@cindex dark corner, @code{continue} statement
@cindex @command{gawk}, @code{continue} statement in
+@cindex Brian Kernighan's @command{awk}
The @code{continue} statement has no special meaning with respect to the
@code{switch} statement, nor does it have any meaning when used outside the
body of a loop. Historical versions of @command{awk} treated a @code{continue}
@@ -13220,8 +13244,10 @@ See @uref{http://austingroupbugs.net/view.php?id=607, the Austin Group website}.
@cindex functions, user-defined, @code{next}/@code{nextfile} statements and
@cindex @code{nextfile} statement, user-defined functions and
-The current version of the Brian Kernighan's @command{awk} (@pxref{Other
-Versions}) also supports @code{nextfile}. However, it doesn't allow the
+@cindex Brian Kernighan's @command{awk}
+@cindex @command{mawk} utility
+The current version of the Brian Kernighan's @command{awk}, and @command{mawk} (@pxref{Other
+Versions}) also support @code{nextfile}. However, they don't allow the
@code{nextfile} statement inside function bodies (@pxref{User-defined}).
@command{gawk} does; a @code{nextfile} inside a function body reads the
next record and starts processing it with the first rule in the program,
@@ -14887,6 +14913,7 @@ Using this version of the @code{delete} statement is about three times
more efficient than the equivalent loop that deletes each element one
at a time.
+@cindex Brian Kernighan's @command{awk}
@quotation NOTE
For many years,
using @code{delete} without a subscript was a @command{gawk} extension.
@@ -16119,7 +16146,6 @@ you use the @option{--non-decimal-data} option, which isn't recommended.
Note also that @code{strtonum()} uses the current locale's decimal point
for recognizing numbers (@pxref{Locales}).
-@cindex differences in @command{awk} and @command{gawk}, @code{strtonum()} function (@command{gawk})
@code{strtonum()} is a @command{gawk} extension; it is not available
in compatibility mode (@pxref{Options}).
@@ -16238,6 +16264,7 @@ suffix is also returned
if @var{length} is greater than the number of characters remaining
in the string, counting from character @var{start}.
+@cindex Brian Kernighan's @command{awk}
If @var{start} is less than one, @code{substr()} treats it as
if it was one. (POSIX doesn't specify what to do in this case:
Brian Kernighan's @command{awk} acts this way, and therefore @command{gawk}
@@ -16317,6 +16344,7 @@ and builds an internal copy of it that can be executed.
Then there is the runtime level, which is when @command{awk} actually scans the
replacement string to determine what to generate.
+@cindex Brian Kernighan's @command{awk}
At both levels, @command{awk} looks for a defined set of characters that
can come after a backslash. At the lexical level, it looks for the
escape sequences listed in @ref{Escape Sequences}.
@@ -16756,6 +16784,8 @@ This is the purpose of the @code{fflush()} function---@command{gawk} also
buffers its output and the @code{fflush()} function forces
@command{gawk} to flush its buffers.
+@cindex extensions, common@comma{} @code{fflush()} function
+@cindex Brian Kernighan's @command{awk}
@code{fflush()} was added to Brian Kernighan's version of @command{awk} in
April of 1992. For two decades, it was not part of the POSIX standard.
As of December, 2012, it was accepted for inclusion into the POSIX
@@ -19467,6 +19497,7 @@ reason to build them into the @command{awk} interpreter:
@cindex @code{ord()} user-defined function
@cindex @code{chr()} user-defined function
+@cindex @code{_ord_init()} user-defined function
@example
@c file eg/lib/ord.awk
# ord.awk --- do ord and chr
@@ -19513,6 +19544,7 @@ function _ord_init( low, high, i, t)
@cindex character sets (machine character encodings)
@cindex ASCII
@cindex EBCDIC
+@cindex Unicode
@cindex mark parity
Some explanation of the numbers used by @code{_ord_init()} is worthwhile.
The most prominent character set in use today is ASCII.@footnote{This
@@ -21865,6 +21897,7 @@ of picking the input line apart by characters.
@cindex searching, files for regular expressions
@c STARTOFRANGE fsregexp
@cindex files, searching for regular expressions
+@c STARTOFRANGE egrep
@cindex @command{egrep} utility
The @command{egrep} utility searches files for patterns. It uses regular
expressions that are almost identical to those available in @command{awk}
@@ -22150,12 +22183,14 @@ or not.
@c ENDOFRANGE regexps
@c ENDOFRANGE sfregexp
@c ENDOFRANGE fsregexp
+@c ENDOFRANGE egrep
@node Id Program
@subsection Printing out User Information
@cindex printing, user information
@cindex users, information about, printing
+@c STARTOFRANGE id
@cindex @command{id} utility
The @command{id} utility lists a user's real and effective user ID numbers,
real and effective group ID numbers, and the user's group set, if any.
@@ -22292,6 +22327,7 @@ The POSIX version of @command{id} takes arguments that control which
information is printed. Modify this version to accept the same
arguments and perform in the same way.
@end ignore
+@c ENDOFRANGE id
@node Split Program
@subsection Splitting a Large File into Pieces
@@ -22300,6 +22336,7 @@ arguments and perform in the same way.
@c STARTOFRANGE filspl
@cindex files, splitting
+@c STARTOFRANGE split
@cindex @code{split} utility
The @command{split} program splits large text files into smaller pieces.
Usage is as follows:@footnote{This is the traditional usage. The
@@ -22443,12 +22480,14 @@ which isn't true for EBCDIC systems.
@c Exercise: Fix these problems.
@c BFD...
@c ENDOFRANGE filspl
+@c ENDOFRANGE split
@node Tee Program
@subsection Duplicating Output into Multiple Files
@cindex files, multiple@comma{} duplicating output into
@cindex output, duplicating into files
+@c STARTOFRANGE tee
@cindex @code{tee} utility
The @code{tee} program is known as a ``pipe fitting.'' @code{tee} copies
its standard input to its standard output and also duplicates it to the
@@ -22563,6 +22602,7 @@ END \
@}
@c endfile
@end example
+@c ENDOFRANGE tee
@node Uniq Program
@subsection Printing Nonduplicated Lines of Text
@@ -22573,6 +22613,7 @@ END \
@cindex printing, unduplicated lines of text
@c STARTOFRANGE tpul
@cindex text@comma{} printing, unduplicated lines of
+@c STARTOFRANGE uniq
@cindex @command{uniq} utility
The @command{uniq} utility reads sorted lines of data on its standard
input, and by default removes duplicate lines. In other words, it only
@@ -22824,6 +22865,7 @@ END @{
@end example
@c ENDOFRANGE prunt
@c ENDOFRANGE tpul
+@c ENDOFRANGE uniq
@node Wc Program
@subsection Counting Things
@@ -22840,6 +22882,7 @@ END @{
@cindex characters, counting
@c STARTOFRANGE lico
@cindex lines, counting
+@c STARTOFRANGE wc
@cindex @command{wc} utility
The @command{wc} (word count) utility counts lines, words, and characters in
one or more input files. Its usage is as follows:
@@ -23022,6 +23065,7 @@ END @{
@c ENDOFRANGE lico
@c ENDOFRANGE woco
@c ENDOFRANGE chco
+@c ENDOFRANGE wc
@c ENDOFRANGE posimawk
@node Miscellaneous Programs
@@ -23316,6 +23360,7 @@ seconds are necessary:
@c STARTOFRANGE chtra
@cindex characters, transliterating
+@c STARTOFRANGE tr
@cindex @command{tr} utility
The system @command{tr} utility transliterates characters. For example, it is
often used to map uppercase letters into lowercase for further processing:
@@ -23464,6 +23509,7 @@ An obvious improvement to this program would be to set up the
assumes that the ``from'' and ``to'' lists
will never change throughout the lifetime of the program.
@c ENDOFRANGE chtra
+@c ENDOFRANGE tr
@node Labels Program
@subsection Printing Mailing Labels
@@ -23523,6 +23569,7 @@ that there are two blank lines at the top and two blank lines at the bottom.
The @code{END} rule arranges to flush the final page of labels; there may
not have been an even multiple of 20 labels in the data:
+@c STARTOFRANGE labels
@cindex @code{labels.awk} program
@example
@c file eg/prog/labels.awk
@@ -23590,6 +23637,7 @@ END \
@end example
@c ENDOFRANGE prml
@c ENDOFRANGE mlprint
+@c ENDOFRANGE labels
@node Word Sorting
@subsection Generating Word-Usage Counts
@@ -23656,6 +23704,7 @@ to remove punctuation characters. Finally, we solve the third problem
by using the system @command{sort} utility to process the output of the
@command{awk} script. Here is the new version of the program:
+@c STARTOFRANGE wordfreq
@cindex @code{wordfreq.awk} program
@example
@c file eg/prog/wordfreq.awk
@@ -23717,6 +23766,7 @@ have true pipes at the command-line (or batch-file) level.
See the general operating system documentation for more information on how
to use the @command{sort} program.
@c ENDOFRANGE worus
+@c ENDOFRANGE wordfreq
@node History Sorting
@subsection Removing Duplicates from Unsorted Text
@@ -23746,6 +23796,7 @@ Each element of @code{lines} is a unique command, and the indices of
The @code{END} rule simply prints out the lines, in order:
@cindex Rakitzis, Byron
+@c STARTOFRANGE histsort
@cindex @code{histsort.awk} program
@example
@c file eg/prog/histsort.awk
@@ -23788,6 +23839,7 @@ print data[lines[i]], lines[i]
This works because @code{data[$0]} is incremented each time a line is
seen.
@c ENDOFRANGE lidu
+@c ENDOFRANGE histsort
@node Extract Program
@subsection Extracting Programs from Texinfo Source Files
@@ -23898,6 +23950,7 @@ The first rule handles calling @code{system()}, checking that a command is
given (@code{NF} is at least three) and also checking that the command
exits with a zero exit status, signifying OK:
+@c STARTOFRANGE extract
@cindex @code{extract.awk} program
@example
@c file eg/prog/extract.awk
@@ -24056,6 +24109,7 @@ END @{
@end example
@c ENDOFRANGE texse
@c ENDOFRANGE fitex
+@c ENDOFRANGE extract
@node Simple Sed
@subsection A Simple Stream Editor
@@ -24085,6 +24139,7 @@ additional arguments are treated as data file names to process. If none
are provided, the standard input is used:
@cindex Brennan, Michael
+@c STARTOFRANGE awksed
@cindex @command{awksed.awk} program
@c @cindex simple stream editor
@c @cindex stream editor, simple
@@ -24181,6 +24236,7 @@ Exercise: what are the advantages and disadvantages of this version versus sed?
Others?
@end ignore
+@c ENDOFRANGE awksed
@node Igawk Program
@subsection An Easy Way to Use Library Functions
@@ -24324,6 +24380,7 @@ program.
The program is as follows:
+@c STARTOFRANGE igawk
@cindex @code{igawk.sh} program
@example
@c file eg/prog/igawk.sh
@@ -24683,10 +24740,12 @@ statements for the desired library functions.
@c ENDOFRANGE libfex
@c ENDOFRANGE flibex
@c ENDOFRANGE awkpex
+@c ENDOFRANGE igawk
@node Anagram Program
@subsection Finding Anagrams From A Dictionary
+@cindex anagrams, finding
An interesting programming challenge is to
search for @dfn{anagrams} in a
word list (such as
@@ -24706,6 +24765,7 @@ The following program uses arrays of arrays to bring together
words with the same signature and array sorting to print the words
in sorted order.
+@c STARTOFRANGE anagram
@cindex @code{anagram.awk} program
@example
@c file eg/prog/anagram.awk
@@ -24813,10 +24873,13 @@ babels beslab
babery yabber
@dots{}
@end example
+@c ENDOFRANGE anagram
@node Signature Program
@subsection And Now For Something Completely Different
+@cindex signature program
+@cindex Brini, Davide
The following program was written by Davide Brini
@c (@email{dave_br@@gmx.com})
and is published on @uref{http://backreference.org/2011/02/03/obfuscated-awk/,
@@ -24948,12 +25011,15 @@ It contains the following chapters:
@item
@ref{Dynamic Extensions}.
+@end itemize
@end ifdocbook
@end ignore
@node Advanced Features
@chapter Advanced Features of @command{gawk}
+@ifset WITH_NETWORK_CHAPTER
@cindex advanced features, network connections, See Also networks@comma{} connections
+@end ifset
@c STARTOFRANGE gawadv
@cindex @command{gawk}, features, advanced
@c STARTOFRANGE advgaw
@@ -26182,6 +26248,7 @@ lookup of the translations.
@cindex @code{.po} files
@cindex files, @code{.po}
+@c STARTOFRANGE portobfi
@cindex portable object files
@cindex files, portable object
@item
@@ -26193,6 +26260,7 @@ For example, there might be a @file{fr.po} for a French translation.
@cindex @code{.gmo} files
@cindex files, @code{.gmo}
@cindex message object files
+@c STARTOFRANGE portmsgfi
@cindex files, message object
@item
Each language's @file{.po} file is converted into a binary
@@ -26533,6 +26601,8 @@ second argument to @code{dcngettext()}.@footnote{The
@xref{I18N Example},
for the full list of steps to go through to create and test
translations for @command{guide}.
+@c ENDOFRANGE portobfi
+@c ENDOFRANGE portmsgfi
@node Printf Ordering
@subsection Rearranging @code{printf} Arguments
@@ -28118,7 +28188,7 @@ be added, and of course feel free to try to add them yourself!
@cindex arbitrary precision
@cindex multiple precision
@cindex infinite precision
-@cindex floating-point numbers, arbitrary precision
+@cindex floating-point, numbers@comma{} arbitrary precision
@cindex MPFR
@cindex GMP
@@ -34351,6 +34421,7 @@ This output is unexpected, since the @samp{bc} at the end of
This result is due to the locale setting (and thus you may not see
it on your system).
+@cindex Unicode
Similar considerations apply to other ranges. For example, @samp{["-/]}
is perfectly valid in ASCII, but is not valid in many Unicode locales,
such as @samp{en_US.UTF-8}.
@@ -34364,6 +34435,7 @@ vendors started implementing non-ASCII locales, @emph{and making them
the default}. Perhaps the most frequently asked question became something
like ``why does @samp{[A-Z]} match lowercase letters?!?''
+@cindex Berry, Karl
This situation existed for close to 10 years, if not more, and
the @command{gawk} maintainer grew weary of trying to explain that
@command{gawk} was being nicely standards-compliant, and that the issue
@@ -35978,7 +36050,7 @@ This @value{SECTION} briefly describes where to get them:
@cindex Kernighan, Brian
@cindex source code, Brian Kernighan's @command{awk}
@cindex @command{awk}, versions of, See Also Brian Kernighan's @command{awk}
-@cindex Brian Kernighan's @command{awk}
+@cindex Brian Kernighan's @command{awk}, source code
@item Unix @command{awk}
Brian Kernighan, one of the original designers of Unix @command{awk},
has made his implementation of
@@ -36063,7 +36135,7 @@ To get @command{awka}, go to @url{http://sourceforge.net/projects/awka}.
The project seems to be frozen; no new code changes have been made
since approximately 2003.
-@cindex Beebe, Nelson
+@cindex Beebe, Nelson H.F.@:
@cindex @command{pawk} (profiling version of Brian Kernighan's @command{awk})
@cindex source code, @command{pawk}
@item @command{pawk}
@@ -37473,6 +37545,8 @@ The @uref{http://www.unicode.org, Unicode character set} is
becoming increasingly popular and standard, and is particularly
widely used on GNU/Linux systems.
+@cindex Kernighan, Brian
+@cindex Bentley, Jon
@cindex @command{chem} utility
@item CHEM
A preprocessor for @command{pic} that reads descriptions of molecules
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index ef4fab13..cd110527 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -995,6 +995,7 @@ Arnold has distilled over a decade of experience writing and
using AWK programs, and developing @command{gawk}, into this book. If you use
AWK or want to learn how, then read this book.
+@cindex Brennan, Michael
@display
Michael Brennan
Author of @command{mawk}
@@ -1019,6 +1020,7 @@ 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.
+@cindex Brian Kernighan's @command{awk}
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
@@ -1741,7 +1743,7 @@ significant editorial help for this @value{DOCUMENT} for the
3.1 release of @command{gawk}.
@end quotation
-@cindex Beebe, Nelson
+@cindex Beebe, Nelson H.F.@:
@cindex Buening, Andreas
@cindex Collado, Manuel
@cindex Colombo, Antonio
@@ -2961,8 +2963,8 @@ noticed because it is ``hidden'' inside the comment. Thus, the
@code{BEGIN} is noted as a syntax error.
@cindex statements, multiple
-@cindex @code{;} (semicolon)
-@cindex semicolon (@code{;})
+@cindex @code{;} (semicolon), separating statements in actions
+@cindex semicolon (@code{;}), separating statements in actions
When @command{awk} statements within one rule are short, you might want to put
more than one of them on a line. This is accomplished by separating the statements
with a semicolon (@samp{;}).
@@ -3022,6 +3024,7 @@ used once, and thrown away. Because @command{awk} programs are interpreted, you
can avoid the (usually lengthy) compilation part of the typical
edit-compile-test-debug cycle of software development.
+@cindex Brian Kernighan's @command{awk}
Complex programs have been written in @command{awk}, including a complete
retargetable assembler for eight-bit microprocessors (@pxref{Glossary}, for
more information), and a microcode assembler for a special-purpose Prolog
@@ -4508,6 +4511,7 @@ leaves what happens as undefined. There are two choices:
@c @cindex automatic warnings
@c @cindex warnings, automatic
+@cindex Brian Kernighan's @command{awk}
@table @asis
@item Strip the backslash out
This is what Brian Kernighan's @command{awk} and @command{gawk} both do.
@@ -4521,6 +4525,7 @@ two backslashes in the string: @samp{FS = @w{"[ \t]+\\|[ \t]+"}}.)
@cindex @command{gawk}, escape sequences
@cindex Unix @command{awk}, backslashes in escape sequences
+@cindex @command{mawk} utility
@item Leave the backslash alone
Some other @command{awk} implementations do this.
In such implementations, typing @code{"a\qc"} is the same as typing
@@ -4596,8 +4601,8 @@ The condition is not true in the following example:
if ("line1\nLINE 2" ~ /^L/) @dots{}
@end example
-@cindex @code{$} (dollar sign)
-@cindex dollar sign (@code{$})
+@cindex @code{$} (dollar sign), regexp operator
+@cindex dollar sign (@code{$}), regexp operator
@item $
This is similar to @samp{^}, but it matches only at the end of a string.
For example, @samp{p$}
@@ -4631,6 +4636,7 @@ may not be able to match the @sc{nul} character.
@cindex bracket expressions
@cindex character sets, See Also bracket expressions
@cindex character lists, See bracket expressions
+@cindex character classes, See bracket expressions
@item [@dots{}]
This is called a @dfn{bracket expression}.@footnote{In other literature,
you may see a bracket expression referred to as either a
@@ -4692,8 +4698,8 @@ prints every record in @file{sample} containing a string of the form
Notice the escaping of the parentheses by preceding them
with backslashes.
-@cindex @code{+} (plus sign)
-@cindex plus sign (@code{+})
+@cindex @code{+} (plus sign), regexp operator
+@cindex plus sign (@code{+}), regexp operator
@item +
This symbol is similar to @samp{*}, except that the preceding expression must be
matched at least once. This means that @samp{wh+y}
@@ -4706,8 +4712,8 @@ way of writing the last @samp{*} example:
awk '/\(c[ad]+r x\)/ @{ print @}' sample
@end example
-@cindex @code{?} (question mark) regexp operator
-@cindex question mark (@code{?}) regexp operator
+@cindex @code{?} (question mark), regexp operator
+@cindex question mark (@code{?}), regexp operator
@item ?
This symbol is similar to @samp{*}, except that the preceding expression can be
matched either once or not at all. For example, @samp{fe?d}
@@ -5029,10 +5035,10 @@ Matches the empty string at the
end of a buffer (string).
@end table
-@cindex @code{^} (caret)
-@cindex caret (@code{^})
-@cindex @code{?} (question mark) regexp operator
-@cindex question mark (@code{?}) regexp operator
+@cindex @code{^} (caret), regexp operator
+@cindex caret (@code{^}), regexp operator
+@cindex @code{?} (question mark), regexp operator
+@cindex question mark (@code{?}), regexp operator
Because @samp{^} and @samp{$} always work in terms of the beginning
and end of strings, these operators don't add any new capabilities
for @command{awk}. They are provided for compatibility with other
@@ -5076,6 +5082,7 @@ Only POSIX regexps are supported; the GNU operators are not special
(e.g., @samp{\w} matches a literal @samp{w}). Interval expressions
are allowed.
+@cindex Brian Kernighan's @command{awk}
@item @code{--traditional}
Traditional Unix @command{awk} regexps are matched. The GNU operators
are not special, and interval expressions are not available.
@@ -6220,7 +6227,7 @@ was ignored when finding @code{$1}, it is not part of the new @code{$0}.
Finally, the last @code{print} statement prints the new @code{$0}.
@cindex @code{FS}, containing @code{^}
-@cindex @code{^}, in @code{FS}
+@cindex @code{^} (caret), in @code{FS}
@cindex dark corner, @code{^}, in @code{FS}
There is an additional subtlety to be aware of when using regular expressions
for field splitting.
@@ -6231,6 +6238,7 @@ different @command{awk} versions answer this question differently, and you
should not rely on any specific behavior in your programs.
@value{DARKCORNER}
+@cindex Brian Kernighan's @command{awk}
As a point of information, Brian Kernighan's @command{awk} allows @samp{^}
to match only at the beginning of the record. @command{gawk}
also works this way. For example:
@@ -7216,6 +7224,7 @@ that does handle nested @samp{@@include} statements.
@subsection Using @code{getline} from a Pipe
@c From private email, dated October 2, 1988. Used by permission, March 2013.
+@cindex Kernighan, Brian
@quotation
@i{Omniscience has much to recommend it.
Failing that, attention to details would be useful.}
@@ -7303,6 +7312,8 @@ because the concatenation operator is not parenthesized. You should
write it as @samp{(@w{"echo "} "date") | getline} if you want your program
to be portable to all @command{awk} implementations.
+@cindex Brian Kernighan's @command{awk}
+@cindex @command{mawk} utility
@quotation NOTE
Unfortunately, @command{gawk} has not been consistent in its treatment
of a construct like @samp{@w{"echo "} "date" | getline}.
@@ -7627,6 +7638,7 @@ indefinitely until some other process opens it for writing.
@node Command line directories
@section Directories On The Command Line
+@cindex differences in @command{awk} and @command{gawk}, command line directories
@cindex directories, command line
@cindex command line, directories on
@@ -8741,9 +8753,9 @@ has been ported to, not just those that are POSIX-compliant:
@cindex extensions, common@comma{} @code{/dev/stdout} special file
@cindex extensions, common@comma{} @code{/dev/stderr} special file
@cindex file names, standard streams in @command{gawk}
-@cindex @code{/dev/@dots{}} special files (@command{gawk})
+@cindex @code{/dev/@dots{}} special files
@cindex files, @code{/dev/@dots{}} special files
-@cindex @code{/dev/fd/@var{N}} special files
+@cindex @code{/dev/fd/@var{N}} special files (@command{gawk})
@table @file
@item /dev/stdin
The standard input (file descriptor 0).
@@ -9837,6 +9849,8 @@ name = "name"
print "something meaningful" > file name
@end example
+@cindex Brian Kernighan's @command{awk}
+@cindex @command{mawk} utility
@noindent
This produces a syntax error with some versions of Unix
@command{awk}.@footnote{It happens that Brian Kernighan's
@@ -11570,6 +11584,11 @@ $ @kbd{echo Yes | gawk '(/1/,/2/) || /Yes/'}
@error{} gawk: cmd. line:1: ^ syntax error
@end example
+@cindex range patterns, line continuation and
+As a minor point of interest, although it is poor style,
+POSIX allows you to put a newline after the comma in
+a range pattern. @value{DARKCORNER}
+
@node BEGIN/END
@subsection The @code{BEGIN} and @code{END} Special Patterns
@@ -11668,6 +11687,7 @@ to give @code{$0} a real value is to execute a @code{getline} command
without a variable (@pxref{Getline}).
Another way is simply to assign a value to @code{$0}.
+@cindex Brian Kernighan's @command{awk}
@cindex differences in @command{awk} and @command{gawk}, @code{BEGIN}/@code{END} patterns
@cindex POSIX @command{awk}, @code{BEGIN}/@code{END} patterns
@cindex @code{print} statement, @code{BEGIN}/@code{END} patterns and
@@ -12398,6 +12418,7 @@ This is discussed in @ref{Switch Statement}.
@cindex POSIX @command{awk}, @code{break} statement and
@cindex dark corner, @code{break} statement
@cindex @command{gawk}, @code{break} statement in
+@cindex Brian Kernighan's @command{awk}
The @code{break} statement has no meaning when
used outside the body of a loop or @code{switch}.
However, although it was never documented,
@@ -12462,6 +12483,7 @@ This program loops forever once @code{x} reaches 5.
@cindex POSIX @command{awk}, @code{continue} statement and
@cindex dark corner, @code{continue} statement
@cindex @command{gawk}, @code{continue} statement in
+@cindex Brian Kernighan's @command{awk}
The @code{continue} statement has no special meaning with respect to the
@code{switch} statement, nor does it have any meaning when used outside the
body of a loop. Historical versions of @command{awk} treated a @code{continue}
@@ -12599,8 +12621,10 @@ See @uref{http://austingroupbugs.net/view.php?id=607, the Austin Group website}.
@cindex functions, user-defined, @code{next}/@code{nextfile} statements and
@cindex @code{nextfile} statement, user-defined functions and
-The current version of the Brian Kernighan's @command{awk} (@pxref{Other
-Versions}) also supports @code{nextfile}. However, it doesn't allow the
+@cindex Brian Kernighan's @command{awk}
+@cindex @command{mawk} utility
+The current version of the Brian Kernighan's @command{awk}, and @command{mawk} (@pxref{Other
+Versions}) also support @code{nextfile}. However, they don't allow the
@code{nextfile} statement inside function bodies (@pxref{User-defined}).
@command{gawk} does; a @code{nextfile} inside a function body reads the
next record and starts processing it with the first rule in the program,
@@ -14220,6 +14244,7 @@ Using this version of the @code{delete} statement is about three times
more efficient than the equivalent loop that deletes each element one
at a time.
+@cindex Brian Kernighan's @command{awk}
@quotation NOTE
For many years,
using @code{delete} without a subscript was a @command{gawk} extension.
@@ -15452,7 +15477,6 @@ you use the @option{--non-decimal-data} option, which isn't recommended.
Note also that @code{strtonum()} uses the current locale's decimal point
for recognizing numbers (@pxref{Locales}).
-@cindex differences in @command{awk} and @command{gawk}, @code{strtonum()} function (@command{gawk})
@code{strtonum()} is a @command{gawk} extension; it is not available
in compatibility mode (@pxref{Options}).
@@ -15571,6 +15595,7 @@ suffix is also returned
if @var{length} is greater than the number of characters remaining
in the string, counting from character @var{start}.
+@cindex Brian Kernighan's @command{awk}
If @var{start} is less than one, @code{substr()} treats it as
if it was one. (POSIX doesn't specify what to do in this case:
Brian Kernighan's @command{awk} acts this way, and therefore @command{gawk}
@@ -15650,6 +15675,7 @@ and builds an internal copy of it that can be executed.
Then there is the runtime level, which is when @command{awk} actually scans the
replacement string to determine what to generate.
+@cindex Brian Kernighan's @command{awk}
At both levels, @command{awk} looks for a defined set of characters that
can come after a backslash. At the lexical level, it looks for the
escape sequences listed in @ref{Escape Sequences}.
@@ -16056,6 +16082,8 @@ This is the purpose of the @code{fflush()} function---@command{gawk} also
buffers its output and the @code{fflush()} function forces
@command{gawk} to flush its buffers.
+@cindex extensions, common@comma{} @code{fflush()} function
+@cindex Brian Kernighan's @command{awk}
@code{fflush()} was added to Brian Kernighan's version of @command{awk} in
April of 1992. For two decades, it was not part of the POSIX standard.
As of December, 2012, it was accepted for inclusion into the POSIX
@@ -18639,6 +18667,7 @@ reason to build them into the @command{awk} interpreter:
@cindex @code{ord()} user-defined function
@cindex @code{chr()} user-defined function
+@cindex @code{_ord_init()} user-defined function
@example
@c file eg/lib/ord.awk
# ord.awk --- do ord and chr
@@ -18685,6 +18714,7 @@ function _ord_init( low, high, i, t)
@cindex character sets (machine character encodings)
@cindex ASCII
@cindex EBCDIC
+@cindex Unicode
@cindex mark parity
Some explanation of the numbers used by @code{_ord_init()} is worthwhile.
The most prominent character set in use today is ASCII.@footnote{This
@@ -21008,6 +21038,7 @@ of picking the input line apart by characters.
@cindex searching, files for regular expressions
@c STARTOFRANGE fsregexp
@cindex files, searching for regular expressions
+@c STARTOFRANGE egrep
@cindex @command{egrep} utility
The @command{egrep} utility searches files for patterns. It uses regular
expressions that are almost identical to those available in @command{awk}
@@ -21293,12 +21324,14 @@ or not.
@c ENDOFRANGE regexps
@c ENDOFRANGE sfregexp
@c ENDOFRANGE fsregexp
+@c ENDOFRANGE egrep
@node Id Program
@subsection Printing out User Information
@cindex printing, user information
@cindex users, information about, printing
+@c STARTOFRANGE id
@cindex @command{id} utility
The @command{id} utility lists a user's real and effective user ID numbers,
real and effective group ID numbers, and the user's group set, if any.
@@ -21435,6 +21468,7 @@ The POSIX version of @command{id} takes arguments that control which
information is printed. Modify this version to accept the same
arguments and perform in the same way.
@end ignore
+@c ENDOFRANGE id
@node Split Program
@subsection Splitting a Large File into Pieces
@@ -21443,6 +21477,7 @@ arguments and perform in the same way.
@c STARTOFRANGE filspl
@cindex files, splitting
+@c STARTOFRANGE split
@cindex @code{split} utility
The @command{split} program splits large text files into smaller pieces.
Usage is as follows:@footnote{This is the traditional usage. The
@@ -21586,12 +21621,14 @@ which isn't true for EBCDIC systems.
@c Exercise: Fix these problems.
@c BFD...
@c ENDOFRANGE filspl
+@c ENDOFRANGE split
@node Tee Program
@subsection Duplicating Output into Multiple Files
@cindex files, multiple@comma{} duplicating output into
@cindex output, duplicating into files
+@c STARTOFRANGE tee
@cindex @code{tee} utility
The @code{tee} program is known as a ``pipe fitting.'' @code{tee} copies
its standard input to its standard output and also duplicates it to the
@@ -21706,6 +21743,7 @@ END \
@}
@c endfile
@end example
+@c ENDOFRANGE tee
@node Uniq Program
@subsection Printing Nonduplicated Lines of Text
@@ -21716,6 +21754,7 @@ END \
@cindex printing, unduplicated lines of text
@c STARTOFRANGE tpul
@cindex text@comma{} printing, unduplicated lines of
+@c STARTOFRANGE uniq
@cindex @command{uniq} utility
The @command{uniq} utility reads sorted lines of data on its standard
input, and by default removes duplicate lines. In other words, it only
@@ -21967,6 +22006,7 @@ END @{
@end example
@c ENDOFRANGE prunt
@c ENDOFRANGE tpul
+@c ENDOFRANGE uniq
@node Wc Program
@subsection Counting Things
@@ -21983,6 +22023,7 @@ END @{
@cindex characters, counting
@c STARTOFRANGE lico
@cindex lines, counting
+@c STARTOFRANGE wc
@cindex @command{wc} utility
The @command{wc} (word count) utility counts lines, words, and characters in
one or more input files. Its usage is as follows:
@@ -22165,6 +22206,7 @@ END @{
@c ENDOFRANGE lico
@c ENDOFRANGE woco
@c ENDOFRANGE chco
+@c ENDOFRANGE wc
@c ENDOFRANGE posimawk
@node Miscellaneous Programs
@@ -22459,6 +22501,7 @@ seconds are necessary:
@c STARTOFRANGE chtra
@cindex characters, transliterating
+@c STARTOFRANGE tr
@cindex @command{tr} utility
The system @command{tr} utility transliterates characters. For example, it is
often used to map uppercase letters into lowercase for further processing:
@@ -22607,6 +22650,7 @@ An obvious improvement to this program would be to set up the
assumes that the ``from'' and ``to'' lists
will never change throughout the lifetime of the program.
@c ENDOFRANGE chtra
+@c ENDOFRANGE tr
@node Labels Program
@subsection Printing Mailing Labels
@@ -22666,6 +22710,7 @@ that there are two blank lines at the top and two blank lines at the bottom.
The @code{END} rule arranges to flush the final page of labels; there may
not have been an even multiple of 20 labels in the data:
+@c STARTOFRANGE labels
@cindex @code{labels.awk} program
@example
@c file eg/prog/labels.awk
@@ -22733,6 +22778,7 @@ END \
@end example
@c ENDOFRANGE prml
@c ENDOFRANGE mlprint
+@c ENDOFRANGE labels
@node Word Sorting
@subsection Generating Word-Usage Counts
@@ -22799,6 +22845,7 @@ to remove punctuation characters. Finally, we solve the third problem
by using the system @command{sort} utility to process the output of the
@command{awk} script. Here is the new version of the program:
+@c STARTOFRANGE wordfreq
@cindex @code{wordfreq.awk} program
@example
@c file eg/prog/wordfreq.awk
@@ -22860,6 +22907,7 @@ have true pipes at the command-line (or batch-file) level.
See the general operating system documentation for more information on how
to use the @command{sort} program.
@c ENDOFRANGE worus
+@c ENDOFRANGE wordfreq
@node History Sorting
@subsection Removing Duplicates from Unsorted Text
@@ -22889,6 +22937,7 @@ Each element of @code{lines} is a unique command, and the indices of
The @code{END} rule simply prints out the lines, in order:
@cindex Rakitzis, Byron
+@c STARTOFRANGE histsort
@cindex @code{histsort.awk} program
@example
@c file eg/prog/histsort.awk
@@ -22931,6 +22980,7 @@ print data[lines[i]], lines[i]
This works because @code{data[$0]} is incremented each time a line is
seen.
@c ENDOFRANGE lidu
+@c ENDOFRANGE histsort
@node Extract Program
@subsection Extracting Programs from Texinfo Source Files
@@ -23041,6 +23091,7 @@ The first rule handles calling @code{system()}, checking that a command is
given (@code{NF} is at least three) and also checking that the command
exits with a zero exit status, signifying OK:
+@c STARTOFRANGE extract
@cindex @code{extract.awk} program
@example
@c file eg/prog/extract.awk
@@ -23199,6 +23250,7 @@ END @{
@end example
@c ENDOFRANGE texse
@c ENDOFRANGE fitex
+@c ENDOFRANGE extract
@node Simple Sed
@subsection A Simple Stream Editor
@@ -23228,6 +23280,7 @@ additional arguments are treated as data file names to process. If none
are provided, the standard input is used:
@cindex Brennan, Michael
+@c STARTOFRANGE awksed
@cindex @command{awksed.awk} program
@c @cindex simple stream editor
@c @cindex stream editor, simple
@@ -23324,6 +23377,7 @@ Exercise: what are the advantages and disadvantages of this version versus sed?
Others?
@end ignore
+@c ENDOFRANGE awksed
@node Igawk Program
@subsection An Easy Way to Use Library Functions
@@ -23467,6 +23521,7 @@ program.
The program is as follows:
+@c STARTOFRANGE igawk
@cindex @code{igawk.sh} program
@example
@c file eg/prog/igawk.sh
@@ -23826,10 +23881,12 @@ statements for the desired library functions.
@c ENDOFRANGE libfex
@c ENDOFRANGE flibex
@c ENDOFRANGE awkpex
+@c ENDOFRANGE igawk
@node Anagram Program
@subsection Finding Anagrams From A Dictionary
+@cindex anagrams, finding
An interesting programming challenge is to
search for @dfn{anagrams} in a
word list (such as
@@ -23849,6 +23906,7 @@ The following program uses arrays of arrays to bring together
words with the same signature and array sorting to print the words
in sorted order.
+@c STARTOFRANGE anagram
@cindex @code{anagram.awk} program
@example
@c file eg/prog/anagram.awk
@@ -23956,10 +24014,13 @@ babels beslab
babery yabber
@dots{}
@end example
+@c ENDOFRANGE anagram
@node Signature Program
@subsection And Now For Something Completely Different
+@cindex signature program
+@cindex Brini, Davide
The following program was written by Davide Brini
@c (@email{dave_br@@gmx.com})
and is published on @uref{http://backreference.org/2011/02/03/obfuscated-awk/,
@@ -24091,12 +24152,15 @@ It contains the following chapters:
@item
@ref{Dynamic Extensions}.
+@end itemize
@end ifdocbook
@end ignore
@node Advanced Features
@chapter Advanced Features of @command{gawk}
+@ifset WITH_NETWORK_CHAPTER
@cindex advanced features, network connections, See Also networks@comma{} connections
+@end ifset
@c STARTOFRANGE gawadv
@cindex @command{gawk}, features, advanced
@c STARTOFRANGE advgaw
@@ -25325,6 +25389,7 @@ lookup of the translations.
@cindex @code{.po} files
@cindex files, @code{.po}
+@c STARTOFRANGE portobfi
@cindex portable object files
@cindex files, portable object
@item
@@ -25336,6 +25401,7 @@ For example, there might be a @file{fr.po} for a French translation.
@cindex @code{.gmo} files
@cindex files, @code{.gmo}
@cindex message object files
+@c STARTOFRANGE portmsgfi
@cindex files, message object
@item
Each language's @file{.po} file is converted into a binary
@@ -25676,6 +25742,8 @@ second argument to @code{dcngettext()}.@footnote{The
@xref{I18N Example},
for the full list of steps to go through to create and test
translations for @command{guide}.
+@c ENDOFRANGE portobfi
+@c ENDOFRANGE portmsgfi
@node Printf Ordering
@subsection Rearranging @code{printf} Arguments
@@ -27261,7 +27329,7 @@ be added, and of course feel free to try to add them yourself!
@cindex arbitrary precision
@cindex multiple precision
@cindex infinite precision
-@cindex floating-point numbers, arbitrary precision
+@cindex floating-point, numbers@comma{} arbitrary precision
@cindex MPFR
@cindex GMP
@@ -33494,6 +33562,7 @@ This output is unexpected, since the @samp{bc} at the end of
This result is due to the locale setting (and thus you may not see
it on your system).
+@cindex Unicode
Similar considerations apply to other ranges. For example, @samp{["-/]}
is perfectly valid in ASCII, but is not valid in many Unicode locales,
such as @samp{en_US.UTF-8}.
@@ -33507,6 +33576,7 @@ vendors started implementing non-ASCII locales, @emph{and making them
the default}. Perhaps the most frequently asked question became something
like ``why does @samp{[A-Z]} match lowercase letters?!?''
+@cindex Berry, Karl
This situation existed for close to 10 years, if not more, and
the @command{gawk} maintainer grew weary of trying to explain that
@command{gawk} was being nicely standards-compliant, and that the issue
@@ -35121,7 +35191,7 @@ This @value{SECTION} briefly describes where to get them:
@cindex Kernighan, Brian
@cindex source code, Brian Kernighan's @command{awk}
@cindex @command{awk}, versions of, See Also Brian Kernighan's @command{awk}
-@cindex Brian Kernighan's @command{awk}
+@cindex Brian Kernighan's @command{awk}, source code
@item Unix @command{awk}
Brian Kernighan, one of the original designers of Unix @command{awk},
has made his implementation of
@@ -35206,7 +35276,7 @@ To get @command{awka}, go to @url{http://sourceforge.net/projects/awka}.
The project seems to be frozen; no new code changes have been made
since approximately 2003.
-@cindex Beebe, Nelson
+@cindex Beebe, Nelson H.F.@:
@cindex @command{pawk} (profiling version of Brian Kernighan's @command{awk})
@cindex source code, @command{pawk}
@item @command{pawk}
@@ -36616,6 +36686,8 @@ The @uref{http://www.unicode.org, Unicode character set} is
becoming increasingly popular and standard, and is particularly
widely used on GNU/Linux systems.
+@cindex Kernighan, Brian
+@cindex Bentley, Jon
@cindex @command{chem} utility
@item CHEM
A preprocessor for @command{pic} that reads descriptions of molecules