aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2014-04-24 05:46:08 +0300
committerArnold D. Robbins <arnold@skeeve.com>2014-04-24 05:46:08 +0300
commit6c29291112b6b767e98ce3fb93dd4752d0ef1469 (patch)
tree7e5824f09a21eb2d137729e328d3abe6d5f3e916
parentae8a268a242aea9c52cc194e28473e2ce4f8d2f2 (diff)
downloadegawk-6c29291112b6b767e98ce3fb93dd4752d0ef1469.tar.gz
egawk-6c29291112b6b767e98ce3fb93dd4752d0ef1469.tar.bz2
egawk-6c29291112b6b767e98ce3fb93dd4752d0ef1469.zip
Start on gawk manual updating.
-rw-r--r--doc/ChangeLog4
-rw-r--r--doc/gawk.info1156
-rw-r--r--doc/gawk.texi182
-rw-r--r--doc/gawktexi.in182
4 files changed, 817 insertions, 707 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 1d4a353f..243ef843 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,7 @@
+2014-04-24 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in: Start on revisions.
+
2014-04-17 Arnold D. Robbins <arnold@skeeve.com>
* gawk.1: Remove the bit about single character programs overflowing
diff --git a/doc/gawk.info b/doc/gawk.info
index 8a26992f..589ac015 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -127,7 +127,7 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
* One-shot:: Running a short throwaway
`awk' program.
* Read Terminal:: Using no input files (input from
- terminal instead).
+ the keyboard instead).
* Long:: Putting permanent `awk'
programs in files.
* Executable Scripts:: Making self-contained `awk'
@@ -791,6 +791,10 @@ and other `awk' implementations.
* Perform simple network communications
+ * Profile and debug `awk' programs.
+
+ * Extend the language with functions written in C or C++.
+
This Info file teaches you about the `awk' language and how you can
use it effectively. You should already be familiar with basic system
commands, such as `cat' and `ls',(2) as well as basic shell facilities,
@@ -799,13 +803,12 @@ such as input/output (I/O) redirection and pipes.
Implementations of the `awk' language are available for many
different computing environments. This Info file, while describing the
`awk' language in general, also describes the particular implementation
-of `awk' called `gawk' (which stands for "GNU awk"). `gawk' runs on a
-broad range of Unix systems, ranging from Intel(R)-architecture
-PC-based computers up through large-scale systems, such as Crays.
-`gawk' has also been ported to Mac OS X, Microsoft Windows (all
-versions) and OS/2 PCs, and VMS. (Some other, obsolete systems to
-which `gawk' was once ported are no longer supported and the code for
-those systems has been removed.)
+of `awk' called `gawk' (which stands for "GNU `awk'"). `gawk' runs on
+a broad range of Unix systems, ranging from Intel(R)-architecture
+PC-based computers up through large-scale systems. `gawk' has also
+been ported to Mac OS X, Microsoft Windows (all versions), and OpenVMS.
+(Some other, obsolete systems to which `gawk' was once ported are no
+longer supported and the code for those systems has been removed.)
* Menu:
@@ -822,7 +825,7 @@ those systems has been removed.)
---------- Footnotes ----------
- (1) The 2008 POSIX standard is online at
+ (1) The 2008 POSIX standard is accessable online at
`http://www.opengroup.org/onlinepubs/9699919799/'.
(2) These commands are available on POSIX-compliant systems, as well
@@ -892,20 +895,21 @@ The `awk' language has evolved over the years. Full details are
provided in *note Language History::. The language described in this
Info file is often referred to as "new `awk'" (`nawk').
- Because of this, there are systems with multiple versions of `awk'.
-Some systems have an `awk' utility that implements the original version
-of the `awk' language and a `nawk' utility for the new version. Others
-have an `oawk' version for the "old `awk'" language and plain `awk' for
-the new one. Still others only have one version, which is usually the
-new one.(1)
-
- All in all, this makes it difficult for you to know which version of
-`awk' you should run when writing your programs. The best advice we
-can give here is to check your local documentation. Look for `awk',
-`oawk', and `nawk', as well as for `gawk'. It is likely that you
-already have some version of new `awk' on your system, which is what
-you should use when running your programs. (Of course, if you're
-reading this Info file, chances are good that you have `gawk'!)
+ For some time after new `awk' was introduced, there were systems
+with multiple versions of `awk'. Some systems had an `awk' utility
+that implemented the original version of the `awk' language and a
+`nawk' utility for the new version. Others had an `oawk' version for
+the "old `awk'" language and plain `awk' for the new one. Still others
+only had one version, which is usually the new one.
+
+ Today, only Solaris systems still use an old `awk' for the default
+`awk' utility. (A more modern `awk' lives in `/usr/xpg6/bin' on these
+systems.) All other modern systems use some version of new `awk'.(1)
+
+ It is likely that you already have some version of new `awk' on your
+system, which is what you should use when running your programs. (Of
+course, if you're reading this Info file, chances are good that you
+have `gawk'!)
Throughout this Info file, whenever we refer to a language feature
that should be available in any complete implementation of POSIX `awk',
@@ -914,7 +918,7 @@ specific to the GNU implementation, we use the term `gawk'.
---------- Footnotes ----------
- (1) Often, these systems use `gawk' for their `awk' implementation!
+ (1) Many of these systems use `gawk' for their `awk' implementation!

File: gawk.info, Node: This Manual, Next: Conventions, Prev: Names, Up: Preface
@@ -1168,11 +1172,10 @@ significant note for this edition was *note Debugger::.
the major new additions are *note Arbitrary Precision Arithmetic::, and
*note Dynamic Extensions::.
- `GAWK: Effective AWK Programming' will undoubtedly continue to
-evolve. An electronic version comes with the `gawk' distribution from
-the FSF. If you find an error in this Info file, please report it!
-*Note Bugs::, for information on submitting problem reports
-electronically.
+ This Info file will undoubtedly continue to evolve. An electronic
+version comes with the `gawk' distribution from the FSF. If you find
+an error in this Info file, please report it! *Note Bugs::, for
+information on submitting problem reports electronically.
---------- Footnotes ----------
@@ -1199,14 +1202,17 @@ something more broad, I acquired the `awk.info' domain.
contributed code: the archive did not grow and the domain went unused
for several years.
- Fortunately, late in 2008, a volunteer took on the task of setting up
-an `awk'-related web site--`http://awk.info'--and did a very nice job.
+ Late in 2008, a volunteer took on the task of setting up an
+`awk'-related web site--`http://awk.info'--and did a very nice job.
If you have written an interesting `awk' program, or have written a
`gawk' extension that you would like to share with the rest of the
world, please see `http://awk.info/?contribute' for how to contribute
it to the web site.
+ As of this writing, this website is in search of a maintainer; please
+contact me if you are interested.
+

File: gawk.info, Node: Acknowledgments, Prev: How To Contribute, Up: Preface
@@ -1297,7 +1303,7 @@ to take advantage of those opportunities.
Arnold Robbins
Nof Ayalon
ISRAEL
-May, 2013
+May, 2014

File: gawk.info, Node: Getting Started, Next: Invoking Gawk, Prev: Preface, Up: Top
@@ -1375,7 +1381,7 @@ variations of each.
* One-shot:: Running a short throwaway `awk'
program.
-* Read Terminal:: Using no input files (input from terminal
+* Read Terminal:: Using no input files (input from the keyboard
instead).
* Long:: Putting permanent `awk' programs in
files.
@@ -1425,7 +1431,7 @@ following command line:
awk 'PROGRAM'
`awk' applies the PROGRAM to the "standard input", which usually means
-whatever you type on the terminal. This continues until you indicate
+whatever you type on the keyboard. This continues until you indicate
end-of-file by typing `Ctrl-d'. (On other operating systems, the
end-of-file character may be different. For example, on OS/2, it is
`Ctrl-z'.)
@@ -2381,7 +2387,7 @@ The following list describes options mandated by the POSIX standard:
`--debug=[FILE]'
Enable debugging of `awk' programs (*note Debugging::). By
default, the debugger reads commands interactively from the
- terminal. The optional FILE argument allows you to specify a file
+ keyboard. The optional FILE argument allows you to specify a file
with a list of commands for the debugger to execute
non-interactively. No space is allowed between the `-D' and FILE,
if FILE is supplied.
@@ -2586,7 +2592,7 @@ having to be included into each individual program. (As mentioned in
*note Definition Syntax::, function names must be unique.)
With standard `awk', library functions can still be used, even if
-the program is entered at the terminal, by specifying `-f /dev/tty'.
+the program is entered at the keyboard, by specifying `-f /dev/tty'.
After typing your program, type `Ctrl-d' (the end-of-file character) to
terminate it. (You may also use `-f -' to read program source from the
standard input but then you will not be able to also use the standard
@@ -5111,7 +5117,7 @@ File: gawk.info, Node: Getline, Next: Read Timeout, Prev: Multiple Line, Up:
=================================
So far we have been getting our input data from `awk''s main input
-stream--either the standard input (usually your terminal, sometimes the
+stream--either the standard input (usually your keyboard, sometimes the
output from another program) or from the files specified on the command
line. The `awk' language has a special built-in command called
`getline' that can be used to read input under your explicit control.
@@ -5560,8 +5566,8 @@ File: gawk.info, Node: Read Timeout, Next: Command line directories, Prev: Ge
4.10 Reading Input With A Timeout
=================================
-You may specify a timeout in milliseconds for reading input from a
-terminal, pipe or two-way communication including, TCP/IP sockets. This
+You may specify a timeout in milliseconds for reading input from the
+keyboard, pipe or two-way communication including, TCP/IP sockets. This
can be done on a per input, command or connection basis, by setting a
special element in the `PROCINFO' array:
@@ -5579,8 +5585,8 @@ from the server after a certain amount of time:
else if (ERRNO != "")
print ERRNO
- Here is how to read interactively from the terminal(1) without
-waiting for more than five seconds:
+ Here is how to read interactively from the user(1) without waiting
+for more than five seconds:
PROCINFO["/dev/stdin", "READ_TIMEOUT"] = 5000
while ((getline < "/dev/stdin") > 0)
@@ -5591,7 +5597,7 @@ after waiting for the timeout period, return failure and set the
`ERRNO' variable to an appropriate string value. A negative or zero
value for the timeout is the same as specifying no timeout at all.
- A timeout can also be set for reading from the terminal in the
+ A timeout can also be set for reading from the keyboard in the
implicit loop that reads input records and matches them against
patterns, like so:
@@ -5644,7 +5650,7 @@ writing.
---------- Footnotes ----------
- (1) This assumes that standard input is the keyboard
+ (1) This assumes that standard input is the keyboard.

File: gawk.info, Node: Command line directories, Prev: Read Timeout, Up: Reading Files
@@ -21173,7 +21179,7 @@ need it.
arbitrary precision arithmetic. The easiest way to find out is to look
at the output of the following command:
- $ ./gawk --version
+ $ gawk --version
-| GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.0-p3, GNU MP 5.0.2)
-| Copyright (C) 1989, 1991-2014 Free Software Foundation.
...
@@ -26263,8 +26269,8 @@ Various `.c', `.y', and `.h' files
PC Installation::, for details).
`vms/*'
- Files needed for building `gawk' under VMS (*note VMS
- Installation::, for details).
+ Files needed for building `gawk' under Vax/VMS and OpenVMS (*note
+ VMS Installation::, for details).
`test/*'
A test suite for `gawk'. You can use `make check' from the
@@ -26748,8 +26754,8 @@ translation of `"\r\n"', since it won't. Caveat Emptor!

File: gawk.info, Node: VMS Installation, Prev: PC Installation, Up: Non-Unix Installation
-B.3.2 How to Compile and Install `gawk' on VMS
-----------------------------------------------
+B.3.2 How to Compile and Install `gawk' on Vax/VMS and OpenVMS
+--------------------------------------------------------------
This node describes how to compile and install `gawk' under VMS. The
older designation "VMS" is used throughout to refer to OpenVMS.
@@ -31677,7 +31683,7 @@ Index
* git, use of for gawk source code: Derived Files. (line 6)
* GMP: Gawk and MPFR. (line 6)
* GNITS mailing list: Acknowledgments. (line 52)
-* GNU awk, See gawk: Preface. (line 49)
+* GNU awk, See gawk: Preface. (line 53)
* GNU Free Documentation License: GNU Free Documentation License.
(line 7)
* GNU General Public License: Glossary. (line 306)
@@ -32023,7 +32029,7 @@ Index
* namespace issues <1>: Library Names. (line 6)
* namespace issues: Arrays. (line 18)
* namespace issues, functions: Definition Syntax. (line 20)
-* nawk utility: Names. (line 17)
+* nawk utility: Names. (line 10)
* negative zero: Unexpected Results. (line 34)
* NetBSD: Glossary. (line 616)
* networks, programming: TCP/IP Networking. (line 6)
@@ -32103,7 +32109,7 @@ Index
* numeric, output format: OFMT. (line 6)
* numeric, strings: Variable Typing. (line 6)
* o debugger command (alias for option): Debugger Info. (line 57)
-* oawk utility: Names. (line 17)
+* oawk utility: Names. (line 10)
* obsolete features: Obsolete. (line 6)
* octal numbers: Nondecimal-numbers. (line 6)
* octal values, enabling interpretation of: Options. (line 207)
@@ -33094,529 +33100,529 @@ Index

Tag Table:
Node: Top1292
-Node: Foreword40821
-Node: Preface45166
-Ref: Preface-Footnote-148219
-Ref: Preface-Footnote-248315
-Node: History48547
-Node: Names50921
-Ref: Names-Footnote-152398
-Node: This Manual52470
-Ref: This Manual-Footnote-158244
-Node: Conventions58344
-Node: Manual History60500
-Ref: Manual History-Footnote-163948
-Ref: Manual History-Footnote-263989
-Node: How To Contribute64063
-Node: Acknowledgments65207
-Node: Getting Started69401
-Node: Running gawk71780
-Node: One-shot72966
-Node: Read Terminal74191
-Ref: Read Terminal-Footnote-175841
-Ref: Read Terminal-Footnote-276117
-Node: Long76288
-Node: Executable Scripts77664
-Ref: Executable Scripts-Footnote-179497
-Ref: Executable Scripts-Footnote-279599
-Node: Comments80146
-Node: Quoting82613
-Node: DOS Quoting87236
-Node: Sample Data Files87911
-Node: Very Simple90426
-Node: Two Rules95077
-Node: More Complex96975
-Ref: More Complex-Footnote-199905
-Node: Statements/Lines99990
-Ref: Statements/Lines-Footnote-1104453
-Node: Other Features104718
-Node: When105646
-Node: Invoking Gawk107793
-Node: Command Line109256
-Node: Options110039
-Ref: Options-Footnote-1125417
-Node: Other Arguments125442
-Node: Naming Standard Input128100
-Node: Environment Variables129194
-Node: AWKPATH Variable129752
-Ref: AWKPATH Variable-Footnote-1132533
-Ref: AWKPATH Variable-Footnote-2132578
-Node: AWKLIBPATH Variable132838
-Node: Other Environment Variables133556
-Node: Exit Status136519
-Node: Include Files137194
-Node: Loading Shared Libraries140763
-Node: Obsolete142127
-Node: Undocumented142824
-Node: Regexp143066
-Node: Regexp Usage144455
-Node: Escape Sequences146480
-Node: Regexp Operators152149
-Ref: Regexp Operators-Footnote-1159529
-Ref: Regexp Operators-Footnote-2159676
-Node: Bracket Expressions159774
-Ref: table-char-classes161664
-Node: GNU Regexp Operators164187
-Node: Case-sensitivity167910
-Ref: Case-sensitivity-Footnote-1170878
-Ref: Case-sensitivity-Footnote-2171113
-Node: Leftmost Longest171221
-Node: Computed Regexps172422
-Node: Reading Files175759
-Node: Records177761
-Ref: Records-Footnote-1187284
-Node: Fields187321
-Ref: Fields-Footnote-1190277
-Node: Nonconstant Fields190363
-Node: Changing Fields192569
-Node: Field Separators198528
-Node: Default Field Splitting201230
-Node: Regexp Field Splitting202347
-Node: Single Character Fields205689
-Node: Command Line Field Separator206748
-Node: Full Line Fields210090
-Ref: Full Line Fields-Footnote-1210598
-Node: Field Splitting Summary210644
-Ref: Field Splitting Summary-Footnote-1213743
-Node: Constant Size213844
-Node: Splitting By Content218451
-Ref: Splitting By Content-Footnote-1222200
-Node: Multiple Line222240
-Ref: Multiple Line-Footnote-1228087
-Node: Getline228266
-Node: Plain Getline230482
-Node: Getline/Variable232577
-Node: Getline/File233724
-Node: Getline/Variable/File235065
-Ref: Getline/Variable/File-Footnote-1236664
-Node: Getline/Pipe236751
-Node: Getline/Variable/Pipe239450
-Node: Getline/Coprocess240557
-Node: Getline/Variable/Coprocess241809
-Node: Getline Notes242546
-Node: Getline Summary245333
-Ref: table-getline-variants245741
-Node: Read Timeout246653
-Ref: Read Timeout-Footnote-1250394
-Node: Command line directories250451
-Node: Printing251081
-Node: Print252712
-Node: Print Examples254049
-Node: Output Separators256833
-Node: OFMT258849
-Node: Printf260207
-Node: Basic Printf261113
-Node: Control Letters262652
-Node: Format Modifiers266464
-Node: Printf Examples272473
-Node: Redirection275185
-Node: Special Files282159
-Node: Special FD282692
-Ref: Special FD-Footnote-1286317
-Node: Special Network286391
-Node: Special Caveats287241
-Node: Close Files And Pipes288037
-Ref: Close Files And Pipes-Footnote-1295020
-Ref: Close Files And Pipes-Footnote-2295168
-Node: Expressions295318
-Node: Values296450
-Node: Constants297126
-Node: Scalar Constants297806
-Ref: Scalar Constants-Footnote-1298665
-Node: Nondecimal-numbers298847
-Node: Regexp Constants301847
-Node: Using Constant Regexps302322
-Node: Variables305377
-Node: Using Variables306032
-Node: Assignment Options307756
-Node: Conversion309631
-Ref: table-locale-affects315131
-Ref: Conversion-Footnote-1315755
-Node: All Operators315864
-Node: Arithmetic Ops316494
-Node: Concatenation318999
-Ref: Concatenation-Footnote-1321787
-Node: Assignment Ops321907
-Ref: table-assign-ops326895
-Node: Increment Ops328226
-Node: Truth Values and Conditions331660
-Node: Truth Values332743
-Node: Typing and Comparison333792
-Node: Variable Typing334585
-Ref: Variable Typing-Footnote-1338482
-Node: Comparison Operators338604
-Ref: table-relational-ops339014
-Node: POSIX String Comparison342562
-Ref: POSIX String Comparison-Footnote-1343518
-Node: Boolean Ops343656
-Ref: Boolean Ops-Footnote-1347726
-Node: Conditional Exp347817
-Node: Function Calls349549
-Node: Precedence353143
-Node: Locales356812
-Node: Patterns and Actions357901
-Node: Pattern Overview358955
-Node: Regexp Patterns360624
-Node: Expression Patterns361167
-Node: Ranges364948
-Node: BEGIN/END368052
-Node: Using BEGIN/END368814
-Ref: Using BEGIN/END-Footnote-1371550
-Node: I/O And BEGIN/END371656
-Node: BEGINFILE/ENDFILE373938
-Node: Empty376852
-Node: Using Shell Variables377169
-Node: Action Overview379454
-Node: Statements381811
-Node: If Statement383665
-Node: While Statement385164
-Node: Do Statement387208
-Node: For Statement388364
-Node: Switch Statement391516
-Node: Break Statement393670
-Node: Continue Statement395660
-Node: Next Statement397453
-Node: Nextfile Statement399843
-Node: Exit Statement402498
-Node: Built-in Variables404914
-Node: User-modified406009
-Ref: User-modified-Footnote-1414367
-Node: Auto-set414429
-Ref: Auto-set-Footnote-1427494
-Ref: Auto-set-Footnote-2427699
-Node: ARGC and ARGV427755
-Node: Arrays431609
-Node: Array Basics433114
-Node: Array Intro433940
-Node: Reference to Elements438257
-Node: Assigning Elements440527
-Node: Array Example441018
-Node: Scanning an Array442750
-Node: Controlling Scanning445064
-Ref: Controlling Scanning-Footnote-1450151
-Node: Delete450467
-Ref: Delete-Footnote-1453232
-Node: Numeric Array Subscripts453289
-Node: Uninitialized Subscripts455472
-Node: Multidimensional457099
-Node: Multiscanning460192
-Node: Arrays of Arrays461781
-Node: Functions466421
-Node: Built-in467240
-Node: Calling Built-in468318
-Node: Numeric Functions470306
-Ref: Numeric Functions-Footnote-1474138
-Ref: Numeric Functions-Footnote-2474495
-Ref: Numeric Functions-Footnote-3474543
-Node: String Functions474812
-Ref: String Functions-Footnote-1497770
-Ref: String Functions-Footnote-2497899
-Ref: String Functions-Footnote-3498147
-Node: Gory Details498234
-Ref: table-sub-escapes499913
-Ref: table-sub-posix-92501267
-Ref: table-sub-proposed502618
-Ref: table-posix-sub503972
-Ref: table-gensub-escapes505517
-Ref: Gory Details-Footnote-1506693
-Ref: Gory Details-Footnote-2506744
-Node: I/O Functions506895
-Ref: I/O Functions-Footnote-1513885
-Node: Time Functions514032
-Ref: Time Functions-Footnote-1525015
-Ref: Time Functions-Footnote-2525083
-Ref: Time Functions-Footnote-3525241
-Ref: Time Functions-Footnote-4525352
-Ref: Time Functions-Footnote-5525464
-Ref: Time Functions-Footnote-6525691
-Node: Bitwise Functions525957
-Ref: table-bitwise-ops526519
-Ref: Bitwise Functions-Footnote-1530740
-Node: Type Functions530924
-Node: I18N Functions532075
-Node: User-defined533702
-Node: Definition Syntax534506
-Ref: Definition Syntax-Footnote-1539420
-Node: Function Example539489
-Ref: Function Example-Footnote-1542138
-Node: Function Caveats542160
-Node: Calling A Function542678
-Node: Variable Scope543633
-Node: Pass By Value/Reference546596
-Node: Return Statement550104
-Node: Dynamic Typing553085
-Node: Indirect Calls554016
-Node: Library Functions563703
-Ref: Library Functions-Footnote-1567216
-Ref: Library Functions-Footnote-2567359
-Node: Library Names567530
-Ref: Library Names-Footnote-1571003
-Ref: Library Names-Footnote-2571223
-Node: General Functions571309
-Node: Strtonum Function572337
-Node: Assert Function575267
-Node: Round Function578593
-Node: Cliff Random Function580134
-Node: Ordinal Functions581150
-Ref: Ordinal Functions-Footnote-1584227
-Ref: Ordinal Functions-Footnote-2584479
-Node: Join Function584690
-Ref: Join Function-Footnote-1586461
-Node: Getlocaltime Function586661
-Node: Readfile Function590402
-Node: Data File Management592241
-Node: Filetrans Function592873
-Node: Rewind Function596942
-Node: File Checking598329
-Node: Empty Files599423
-Node: Ignoring Assigns601653
-Node: Getopt Function603207
-Ref: Getopt Function-Footnote-1614510
-Node: Passwd Functions614713
-Ref: Passwd Functions-Footnote-1623691
-Node: Group Functions623779
-Node: Walking Arrays631863
-Node: Sample Programs633999
-Node: Running Examples634673
-Node: Clones635401
-Node: Cut Program636625
-Node: Egrep Program646476
-Ref: Egrep Program-Footnote-1654249
-Node: Id Program654359
-Node: Split Program658008
-Ref: Split Program-Footnote-1661527
-Node: Tee Program661655
-Node: Uniq Program664458
-Node: Wc Program671887
-Ref: Wc Program-Footnote-1676153
-Ref: Wc Program-Footnote-2676353
-Node: Miscellaneous Programs676445
-Node: Dupword Program677633
-Node: Alarm Program679664
-Node: Translate Program684471
-Ref: Translate Program-Footnote-1688858
-Ref: Translate Program-Footnote-2689106
-Node: Labels Program689240
-Ref: Labels Program-Footnote-1692611
-Node: Word Sorting692695
-Node: History Sorting696579
-Node: Extract Program698418
-Ref: Extract Program-Footnote-1705921
-Node: Simple Sed706049
-Node: Igawk Program709111
-Ref: Igawk Program-Footnote-1724268
-Ref: Igawk Program-Footnote-2724469
-Node: Anagram Program724607
-Node: Signature Program727675
-Node: Advanced Features728775
-Node: Nondecimal Data730661
-Node: Array Sorting732244
-Node: Controlling Array Traversal732941
-Node: Array Sorting Functions741225
-Ref: Array Sorting Functions-Footnote-1745094
-Node: Two-way I/O745288
-Ref: Two-way I/O-Footnote-1750720
-Node: TCP/IP Networking750802
-Node: Profiling753646
-Node: Internationalization761149
-Node: I18N and L10N762574
-Node: Explaining gettext763260
-Ref: Explaining gettext-Footnote-1768328
-Ref: Explaining gettext-Footnote-2768512
-Node: Programmer i18n768677
-Node: Translator i18n772879
-Node: String Extraction773673
-Ref: String Extraction-Footnote-1774634
-Node: Printf Ordering774720
-Ref: Printf Ordering-Footnote-1777502
-Node: I18N Portability777566
-Ref: I18N Portability-Footnote-1780015
-Node: I18N Example780078
-Ref: I18N Example-Footnote-1782716
-Node: Gawk I18N782788
-Node: Debugger783409
-Node: Debugging784380
-Node: Debugging Concepts784813
-Node: Debugging Terms786669
-Node: Awk Debugging789266
-Node: Sample Debugging Session790158
-Node: Debugger Invocation790678
-Node: Finding The Bug792011
-Node: List of Debugger Commands798498
-Node: Breakpoint Control799832
-Node: Debugger Execution Control803496
-Node: Viewing And Changing Data806856
-Node: Execution Stack810212
-Node: Debugger Info811679
-Node: Miscellaneous Debugger Commands815661
-Node: Readline Support820837
-Node: Limitations821668
-Node: Arbitrary Precision Arithmetic823920
-Ref: Arbitrary Precision Arithmetic-Footnote-1825569
-Node: General Arithmetic825717
-Node: Floating Point Issues827437
-Node: String Conversion Precision828318
-Ref: String Conversion Precision-Footnote-1830023
-Node: Unexpected Results830132
-Node: POSIX Floating Point Problems832285
-Ref: POSIX Floating Point Problems-Footnote-1836110
-Node: Integer Programming836148
-Node: Floating-point Programming837887
-Ref: Floating-point Programming-Footnote-1844218
-Ref: Floating-point Programming-Footnote-2844488
-Node: Floating-point Representation844752
-Node: Floating-point Context845917
-Ref: table-ieee-formats846756
-Node: Rounding Mode848140
-Ref: table-rounding-modes848619
-Ref: Rounding Mode-Footnote-1851634
-Node: Gawk and MPFR851813
-Node: Arbitrary Precision Floats853224
-Ref: Arbitrary Precision Floats-Footnote-1855667
-Node: Setting Precision855983
-Ref: table-predefined-precision-strings856669
-Node: Setting Rounding Mode858814
-Ref: table-gawk-rounding-modes859218
-Node: Floating-point Constants860405
-Node: Changing Precision861834
-Ref: Changing Precision-Footnote-1863231
-Node: Exact Arithmetic863405
-Node: Arbitrary Precision Integers866543
-Ref: Arbitrary Precision Integers-Footnote-1869558
-Node: Dynamic Extensions869705
-Node: Extension Intro871163
-Node: Plugin License872428
-Node: Extension Mechanism Outline873113
-Ref: load-extension873530
-Ref: load-new-function875008
-Ref: call-new-function876003
-Node: Extension API Description878018
-Node: Extension API Functions Introduction879305
-Node: General Data Types884232
-Ref: General Data Types-Footnote-1889927
-Node: Requesting Values890226
-Ref: table-value-types-returned890963
-Node: Memory Allocation Functions891917
-Ref: Memory Allocation Functions-Footnote-1894663
-Node: Constructor Functions894759
-Node: Registration Functions896517
-Node: Extension Functions897202
-Node: Exit Callback Functions899504
-Node: Extension Version String900753
-Node: Input Parsers901403
-Node: Output Wrappers911160
-Node: Two-way processors915670
-Node: Printing Messages917878
-Ref: Printing Messages-Footnote-1918955
-Node: Updating `ERRNO'919107
-Node: Accessing Parameters919846
-Node: Symbol Table Access921076
-Node: Symbol table by name921590
-Node: Symbol table by cookie923566
-Ref: Symbol table by cookie-Footnote-1927698
-Node: Cached values927761
-Ref: Cached values-Footnote-1931251
-Node: Array Manipulation931342
-Ref: Array Manipulation-Footnote-1932440
-Node: Array Data Types932479
-Ref: Array Data Types-Footnote-1935182
-Node: Array Functions935274
-Node: Flattening Arrays939110
-Node: Creating Arrays945962
-Node: Extension API Variables950687
-Node: Extension Versioning951323
-Node: Extension API Informational Variables953224
-Node: Extension API Boilerplate954310
-Node: Finding Extensions958114
-Node: Extension Example958674
-Node: Internal File Description959404
-Node: Internal File Ops963495
-Ref: Internal File Ops-Footnote-1975004
-Node: Using Internal File Ops975144
-Ref: Using Internal File Ops-Footnote-1977497
-Node: Extension Samples977763
-Node: Extension Sample File Functions979287
-Node: Extension Sample Fnmatch987772
-Node: Extension Sample Fork989541
-Node: Extension Sample Inplace990754
-Node: Extension Sample Ord992532
-Node: Extension Sample Readdir993368
-Node: Extension Sample Revout994900
-Node: Extension Sample Rev2way995493
-Node: Extension Sample Read write array996183
-Node: Extension Sample Readfile998066
-Node: Extension Sample API Tests999166
-Node: Extension Sample Time999691
-Node: gawkextlib1001055
-Node: Language History1003836
-Node: V7/SVR3.11005429
-Node: SVR41007749
-Node: POSIX1009191
-Node: BTL1010577
-Node: POSIX/GNU1011311
-Node: Feature History1016910
-Node: Common Extensions1029886
-Node: Ranges and Locales1031198
-Ref: Ranges and Locales-Footnote-11035815
-Ref: Ranges and Locales-Footnote-21035842
-Ref: Ranges and Locales-Footnote-31036076
-Node: Contributors1036297
-Node: Installation1041678
-Node: Gawk Distribution1042572
-Node: Getting1043056
-Node: Extracting1043882
-Node: Distribution contents1045574
-Node: Unix Installation1051279
-Node: Quick Installation1051896
-Node: Additional Configuration Options1054342
-Node: Configuration Philosophy1056078
-Node: Non-Unix Installation1058432
-Node: PC Installation1058890
-Node: PC Binary Installation1060189
-Node: PC Compiling1062037
-Node: PC Testing1064981
-Node: PC Using1066157
-Node: Cygwin1070325
-Node: MSYS1071134
-Node: VMS Installation1071648
-Node: VMS Compilation1072412
-Ref: VMS Compilation-Footnote-11073664
-Node: VMS Dynamic Extensions1073722
-Node: VMS Installation Details1075095
-Node: VMS Running1077346
-Node: VMS GNV1080180
-Node: VMS Old Gawk1080903
-Node: Bugs1081373
-Node: Other Versions1085291
-Node: Notes1091375
-Node: Compatibility Mode1092175
-Node: Additions1092958
-Node: Accessing The Source1093885
-Node: Adding Code1095325
-Node: New Ports1101370
-Node: Derived Files1105505
-Ref: Derived Files-Footnote-11110826
-Ref: Derived Files-Footnote-21110860
-Ref: Derived Files-Footnote-31111460
-Node: Future Extensions1111558
-Node: Implementation Limitations1112141
-Node: Extension Design1113393
-Node: Old Extension Problems1114547
-Ref: Old Extension Problems-Footnote-11116055
-Node: Extension New Mechanism Goals1116112
-Ref: Extension New Mechanism Goals-Footnote-11119477
-Node: Extension Other Design Decisions1119663
-Node: Extension Future Growth1121769
-Node: Old Extension Mechanism1122605
-Node: Basic Concepts1124345
-Node: Basic High Level1125026
-Ref: figure-general-flow1125298
-Ref: figure-process-flow1125897
-Ref: Basic High Level-Footnote-11129126
-Node: Basic Data Typing1129311
-Node: Glossary1132666
-Node: Copying1157897
-Node: GNU Free Documentation License1195453
-Node: Index1220589
+Node: Foreword40825
+Node: Preface45170
+Ref: Preface-Footnote-148303
+Ref: Preface-Footnote-248410
+Node: History48642
+Node: Names51016
+Ref: Names-Footnote-152480
+Node: This Manual52553
+Ref: This Manual-Footnote-158327
+Node: Conventions58427
+Node: Manual History60583
+Ref: Manual History-Footnote-164013
+Ref: Manual History-Footnote-264054
+Node: How To Contribute64128
+Node: Acknowledgments65367
+Node: Getting Started69561
+Node: Running gawk71940
+Node: One-shot73130
+Node: Read Terminal74355
+Ref: Read Terminal-Footnote-176005
+Ref: Read Terminal-Footnote-276281
+Node: Long76452
+Node: Executable Scripts77828
+Ref: Executable Scripts-Footnote-179661
+Ref: Executable Scripts-Footnote-279763
+Node: Comments80310
+Node: Quoting82777
+Node: DOS Quoting87400
+Node: Sample Data Files88075
+Node: Very Simple90590
+Node: Two Rules95241
+Node: More Complex97139
+Ref: More Complex-Footnote-1100069
+Node: Statements/Lines100154
+Ref: Statements/Lines-Footnote-1104617
+Node: Other Features104882
+Node: When105810
+Node: Invoking Gawk107957
+Node: Command Line109420
+Node: Options110203
+Ref: Options-Footnote-1125581
+Node: Other Arguments125606
+Node: Naming Standard Input128264
+Node: Environment Variables129358
+Node: AWKPATH Variable129916
+Ref: AWKPATH Variable-Footnote-1132697
+Ref: AWKPATH Variable-Footnote-2132742
+Node: AWKLIBPATH Variable133002
+Node: Other Environment Variables133720
+Node: Exit Status136683
+Node: Include Files137358
+Node: Loading Shared Libraries140927
+Node: Obsolete142291
+Node: Undocumented142988
+Node: Regexp143230
+Node: Regexp Usage144619
+Node: Escape Sequences146644
+Node: Regexp Operators152313
+Ref: Regexp Operators-Footnote-1159693
+Ref: Regexp Operators-Footnote-2159840
+Node: Bracket Expressions159938
+Ref: table-char-classes161828
+Node: GNU Regexp Operators164351
+Node: Case-sensitivity168074
+Ref: Case-sensitivity-Footnote-1171042
+Ref: Case-sensitivity-Footnote-2171277
+Node: Leftmost Longest171385
+Node: Computed Regexps172586
+Node: Reading Files175923
+Node: Records177925
+Ref: Records-Footnote-1187448
+Node: Fields187485
+Ref: Fields-Footnote-1190441
+Node: Nonconstant Fields190527
+Node: Changing Fields192733
+Node: Field Separators198692
+Node: Default Field Splitting201394
+Node: Regexp Field Splitting202511
+Node: Single Character Fields205853
+Node: Command Line Field Separator206912
+Node: Full Line Fields210254
+Ref: Full Line Fields-Footnote-1210762
+Node: Field Splitting Summary210808
+Ref: Field Splitting Summary-Footnote-1213907
+Node: Constant Size214008
+Node: Splitting By Content218615
+Ref: Splitting By Content-Footnote-1222364
+Node: Multiple Line222404
+Ref: Multiple Line-Footnote-1228251
+Node: Getline228430
+Node: Plain Getline230646
+Node: Getline/Variable232741
+Node: Getline/File233888
+Node: Getline/Variable/File235229
+Ref: Getline/Variable/File-Footnote-1236828
+Node: Getline/Pipe236915
+Node: Getline/Variable/Pipe239614
+Node: Getline/Coprocess240721
+Node: Getline/Variable/Coprocess241973
+Node: Getline Notes242710
+Node: Getline Summary245497
+Ref: table-getline-variants245905
+Node: Read Timeout246817
+Ref: Read Timeout-Footnote-1250556
+Node: Command line directories250614
+Node: Printing251244
+Node: Print252875
+Node: Print Examples254212
+Node: Output Separators256996
+Node: OFMT259012
+Node: Printf260370
+Node: Basic Printf261276
+Node: Control Letters262815
+Node: Format Modifiers266627
+Node: Printf Examples272636
+Node: Redirection275348
+Node: Special Files282322
+Node: Special FD282855
+Ref: Special FD-Footnote-1286480
+Node: Special Network286554
+Node: Special Caveats287404
+Node: Close Files And Pipes288200
+Ref: Close Files And Pipes-Footnote-1295183
+Ref: Close Files And Pipes-Footnote-2295331
+Node: Expressions295481
+Node: Values296613
+Node: Constants297289
+Node: Scalar Constants297969
+Ref: Scalar Constants-Footnote-1298828
+Node: Nondecimal-numbers299010
+Node: Regexp Constants302010
+Node: Using Constant Regexps302485
+Node: Variables305540
+Node: Using Variables306195
+Node: Assignment Options307919
+Node: Conversion309794
+Ref: table-locale-affects315294
+Ref: Conversion-Footnote-1315918
+Node: All Operators316027
+Node: Arithmetic Ops316657
+Node: Concatenation319162
+Ref: Concatenation-Footnote-1321950
+Node: Assignment Ops322070
+Ref: table-assign-ops327058
+Node: Increment Ops328389
+Node: Truth Values and Conditions331823
+Node: Truth Values332906
+Node: Typing and Comparison333955
+Node: Variable Typing334748
+Ref: Variable Typing-Footnote-1338645
+Node: Comparison Operators338767
+Ref: table-relational-ops339177
+Node: POSIX String Comparison342725
+Ref: POSIX String Comparison-Footnote-1343681
+Node: Boolean Ops343819
+Ref: Boolean Ops-Footnote-1347889
+Node: Conditional Exp347980
+Node: Function Calls349712
+Node: Precedence353306
+Node: Locales356975
+Node: Patterns and Actions358064
+Node: Pattern Overview359118
+Node: Regexp Patterns360787
+Node: Expression Patterns361330
+Node: Ranges365111
+Node: BEGIN/END368215
+Node: Using BEGIN/END368977
+Ref: Using BEGIN/END-Footnote-1371713
+Node: I/O And BEGIN/END371819
+Node: BEGINFILE/ENDFILE374101
+Node: Empty377015
+Node: Using Shell Variables377332
+Node: Action Overview379617
+Node: Statements381974
+Node: If Statement383828
+Node: While Statement385327
+Node: Do Statement387371
+Node: For Statement388527
+Node: Switch Statement391679
+Node: Break Statement393833
+Node: Continue Statement395823
+Node: Next Statement397616
+Node: Nextfile Statement400006
+Node: Exit Statement402661
+Node: Built-in Variables405077
+Node: User-modified406172
+Ref: User-modified-Footnote-1414530
+Node: Auto-set414592
+Ref: Auto-set-Footnote-1427657
+Ref: Auto-set-Footnote-2427862
+Node: ARGC and ARGV427918
+Node: Arrays431772
+Node: Array Basics433277
+Node: Array Intro434103
+Node: Reference to Elements438420
+Node: Assigning Elements440690
+Node: Array Example441181
+Node: Scanning an Array442913
+Node: Controlling Scanning445227
+Ref: Controlling Scanning-Footnote-1450314
+Node: Delete450630
+Ref: Delete-Footnote-1453395
+Node: Numeric Array Subscripts453452
+Node: Uninitialized Subscripts455635
+Node: Multidimensional457262
+Node: Multiscanning460355
+Node: Arrays of Arrays461944
+Node: Functions466584
+Node: Built-in467403
+Node: Calling Built-in468481
+Node: Numeric Functions470469
+Ref: Numeric Functions-Footnote-1474301
+Ref: Numeric Functions-Footnote-2474658
+Ref: Numeric Functions-Footnote-3474706
+Node: String Functions474975
+Ref: String Functions-Footnote-1497933
+Ref: String Functions-Footnote-2498062
+Ref: String Functions-Footnote-3498310
+Node: Gory Details498397
+Ref: table-sub-escapes500076
+Ref: table-sub-posix-92501430
+Ref: table-sub-proposed502781
+Ref: table-posix-sub504135
+Ref: table-gensub-escapes505680
+Ref: Gory Details-Footnote-1506856
+Ref: Gory Details-Footnote-2506907
+Node: I/O Functions507058
+Ref: I/O Functions-Footnote-1514048
+Node: Time Functions514195
+Ref: Time Functions-Footnote-1525178
+Ref: Time Functions-Footnote-2525246
+Ref: Time Functions-Footnote-3525404
+Ref: Time Functions-Footnote-4525515
+Ref: Time Functions-Footnote-5525627
+Ref: Time Functions-Footnote-6525854
+Node: Bitwise Functions526120
+Ref: table-bitwise-ops526682
+Ref: Bitwise Functions-Footnote-1530903
+Node: Type Functions531087
+Node: I18N Functions532238
+Node: User-defined533865
+Node: Definition Syntax534669
+Ref: Definition Syntax-Footnote-1539583
+Node: Function Example539652
+Ref: Function Example-Footnote-1542301
+Node: Function Caveats542323
+Node: Calling A Function542841
+Node: Variable Scope543796
+Node: Pass By Value/Reference546759
+Node: Return Statement550267
+Node: Dynamic Typing553248
+Node: Indirect Calls554179
+Node: Library Functions563866
+Ref: Library Functions-Footnote-1567379
+Ref: Library Functions-Footnote-2567522
+Node: Library Names567693
+Ref: Library Names-Footnote-1571166
+Ref: Library Names-Footnote-2571386
+Node: General Functions571472
+Node: Strtonum Function572500
+Node: Assert Function575430
+Node: Round Function578756
+Node: Cliff Random Function580297
+Node: Ordinal Functions581313
+Ref: Ordinal Functions-Footnote-1584390
+Ref: Ordinal Functions-Footnote-2584642
+Node: Join Function584853
+Ref: Join Function-Footnote-1586624
+Node: Getlocaltime Function586824
+Node: Readfile Function590565
+Node: Data File Management592404
+Node: Filetrans Function593036
+Node: Rewind Function597105
+Node: File Checking598492
+Node: Empty Files599586
+Node: Ignoring Assigns601816
+Node: Getopt Function603370
+Ref: Getopt Function-Footnote-1614673
+Node: Passwd Functions614876
+Ref: Passwd Functions-Footnote-1623854
+Node: Group Functions623942
+Node: Walking Arrays632026
+Node: Sample Programs634162
+Node: Running Examples634836
+Node: Clones635564
+Node: Cut Program636788
+Node: Egrep Program646639
+Ref: Egrep Program-Footnote-1654412
+Node: Id Program654522
+Node: Split Program658171
+Ref: Split Program-Footnote-1661690
+Node: Tee Program661818
+Node: Uniq Program664621
+Node: Wc Program672050
+Ref: Wc Program-Footnote-1676316
+Ref: Wc Program-Footnote-2676516
+Node: Miscellaneous Programs676608
+Node: Dupword Program677796
+Node: Alarm Program679827
+Node: Translate Program684634
+Ref: Translate Program-Footnote-1689021
+Ref: Translate Program-Footnote-2689269
+Node: Labels Program689403
+Ref: Labels Program-Footnote-1692774
+Node: Word Sorting692858
+Node: History Sorting696742
+Node: Extract Program698581
+Ref: Extract Program-Footnote-1706084
+Node: Simple Sed706212
+Node: Igawk Program709274
+Ref: Igawk Program-Footnote-1724431
+Ref: Igawk Program-Footnote-2724632
+Node: Anagram Program724770
+Node: Signature Program727838
+Node: Advanced Features728938
+Node: Nondecimal Data730824
+Node: Array Sorting732407
+Node: Controlling Array Traversal733104
+Node: Array Sorting Functions741388
+Ref: Array Sorting Functions-Footnote-1745257
+Node: Two-way I/O745451
+Ref: Two-way I/O-Footnote-1750883
+Node: TCP/IP Networking750965
+Node: Profiling753809
+Node: Internationalization761312
+Node: I18N and L10N762737
+Node: Explaining gettext763423
+Ref: Explaining gettext-Footnote-1768491
+Ref: Explaining gettext-Footnote-2768675
+Node: Programmer i18n768840
+Node: Translator i18n773042
+Node: String Extraction773836
+Ref: String Extraction-Footnote-1774797
+Node: Printf Ordering774883
+Ref: Printf Ordering-Footnote-1777665
+Node: I18N Portability777729
+Ref: I18N Portability-Footnote-1780178
+Node: I18N Example780241
+Ref: I18N Example-Footnote-1782879
+Node: Gawk I18N782951
+Node: Debugger783572
+Node: Debugging784543
+Node: Debugging Concepts784976
+Node: Debugging Terms786832
+Node: Awk Debugging789429
+Node: Sample Debugging Session790321
+Node: Debugger Invocation790841
+Node: Finding The Bug792174
+Node: List of Debugger Commands798661
+Node: Breakpoint Control799995
+Node: Debugger Execution Control803659
+Node: Viewing And Changing Data807019
+Node: Execution Stack810375
+Node: Debugger Info811842
+Node: Miscellaneous Debugger Commands815824
+Node: Readline Support821000
+Node: Limitations821831
+Node: Arbitrary Precision Arithmetic824083
+Ref: Arbitrary Precision Arithmetic-Footnote-1825732
+Node: General Arithmetic825880
+Node: Floating Point Issues827600
+Node: String Conversion Precision828481
+Ref: String Conversion Precision-Footnote-1830186
+Node: Unexpected Results830295
+Node: POSIX Floating Point Problems832448
+Ref: POSIX Floating Point Problems-Footnote-1836273
+Node: Integer Programming836311
+Node: Floating-point Programming838050
+Ref: Floating-point Programming-Footnote-1844381
+Ref: Floating-point Programming-Footnote-2844651
+Node: Floating-point Representation844915
+Node: Floating-point Context846080
+Ref: table-ieee-formats846919
+Node: Rounding Mode848303
+Ref: table-rounding-modes848782
+Ref: Rounding Mode-Footnote-1851797
+Node: Gawk and MPFR851976
+Node: Arbitrary Precision Floats853385
+Ref: Arbitrary Precision Floats-Footnote-1855828
+Node: Setting Precision856144
+Ref: table-predefined-precision-strings856830
+Node: Setting Rounding Mode858975
+Ref: table-gawk-rounding-modes859379
+Node: Floating-point Constants860566
+Node: Changing Precision861995
+Ref: Changing Precision-Footnote-1863392
+Node: Exact Arithmetic863566
+Node: Arbitrary Precision Integers866704
+Ref: Arbitrary Precision Integers-Footnote-1869719
+Node: Dynamic Extensions869866
+Node: Extension Intro871324
+Node: Plugin License872589
+Node: Extension Mechanism Outline873274
+Ref: load-extension873691
+Ref: load-new-function875169
+Ref: call-new-function876164
+Node: Extension API Description878179
+Node: Extension API Functions Introduction879466
+Node: General Data Types884393
+Ref: General Data Types-Footnote-1890088
+Node: Requesting Values890387
+Ref: table-value-types-returned891124
+Node: Memory Allocation Functions892078
+Ref: Memory Allocation Functions-Footnote-1894824
+Node: Constructor Functions894920
+Node: Registration Functions896678
+Node: Extension Functions897363
+Node: Exit Callback Functions899665
+Node: Extension Version String900914
+Node: Input Parsers901564
+Node: Output Wrappers911321
+Node: Two-way processors915831
+Node: Printing Messages918039
+Ref: Printing Messages-Footnote-1919116
+Node: Updating `ERRNO'919268
+Node: Accessing Parameters920007
+Node: Symbol Table Access921237
+Node: Symbol table by name921751
+Node: Symbol table by cookie923727
+Ref: Symbol table by cookie-Footnote-1927859
+Node: Cached values927922
+Ref: Cached values-Footnote-1931412
+Node: Array Manipulation931503
+Ref: Array Manipulation-Footnote-1932601
+Node: Array Data Types932640
+Ref: Array Data Types-Footnote-1935343
+Node: Array Functions935435
+Node: Flattening Arrays939271
+Node: Creating Arrays946123
+Node: Extension API Variables950848
+Node: Extension Versioning951484
+Node: Extension API Informational Variables953385
+Node: Extension API Boilerplate954471
+Node: Finding Extensions958275
+Node: Extension Example958835
+Node: Internal File Description959565
+Node: Internal File Ops963656
+Ref: Internal File Ops-Footnote-1975165
+Node: Using Internal File Ops975305
+Ref: Using Internal File Ops-Footnote-1977658
+Node: Extension Samples977924
+Node: Extension Sample File Functions979448
+Node: Extension Sample Fnmatch987933
+Node: Extension Sample Fork989702
+Node: Extension Sample Inplace990915
+Node: Extension Sample Ord992693
+Node: Extension Sample Readdir993529
+Node: Extension Sample Revout995061
+Node: Extension Sample Rev2way995654
+Node: Extension Sample Read write array996344
+Node: Extension Sample Readfile998227
+Node: Extension Sample API Tests999327
+Node: Extension Sample Time999852
+Node: gawkextlib1001216
+Node: Language History1003997
+Node: V7/SVR3.11005590
+Node: SVR41007910
+Node: POSIX1009352
+Node: BTL1010738
+Node: POSIX/GNU1011472
+Node: Feature History1017071
+Node: Common Extensions1030047
+Node: Ranges and Locales1031359
+Ref: Ranges and Locales-Footnote-11035976
+Ref: Ranges and Locales-Footnote-21036003
+Ref: Ranges and Locales-Footnote-31036237
+Node: Contributors1036458
+Node: Installation1041839
+Node: Gawk Distribution1042733
+Node: Getting1043217
+Node: Extracting1044043
+Node: Distribution contents1045735
+Node: Unix Installation1051456
+Node: Quick Installation1052073
+Node: Additional Configuration Options1054519
+Node: Configuration Philosophy1056255
+Node: Non-Unix Installation1058609
+Node: PC Installation1059067
+Node: PC Binary Installation1060366
+Node: PC Compiling1062214
+Node: PC Testing1065158
+Node: PC Using1066334
+Node: Cygwin1070502
+Node: MSYS1071311
+Node: VMS Installation1071825
+Node: VMS Compilation1072621
+Ref: VMS Compilation-Footnote-11073873
+Node: VMS Dynamic Extensions1073931
+Node: VMS Installation Details1075304
+Node: VMS Running1077555
+Node: VMS GNV1080389
+Node: VMS Old Gawk1081112
+Node: Bugs1081582
+Node: Other Versions1085500
+Node: Notes1091584
+Node: Compatibility Mode1092384
+Node: Additions1093167
+Node: Accessing The Source1094094
+Node: Adding Code1095534
+Node: New Ports1101579
+Node: Derived Files1105714
+Ref: Derived Files-Footnote-11111035
+Ref: Derived Files-Footnote-21111069
+Ref: Derived Files-Footnote-31111669
+Node: Future Extensions1111767
+Node: Implementation Limitations1112350
+Node: Extension Design1113602
+Node: Old Extension Problems1114756
+Ref: Old Extension Problems-Footnote-11116264
+Node: Extension New Mechanism Goals1116321
+Ref: Extension New Mechanism Goals-Footnote-11119686
+Node: Extension Other Design Decisions1119872
+Node: Extension Future Growth1121978
+Node: Old Extension Mechanism1122814
+Node: Basic Concepts1124554
+Node: Basic High Level1125235
+Ref: figure-general-flow1125507
+Ref: figure-process-flow1126106
+Ref: Basic High Level-Footnote-11129335
+Node: Basic Data Typing1129520
+Node: Glossary1132875
+Node: Copying1158106
+Node: GNU Free Documentation License1195662
+Node: Index1220798

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index ad2e6558..ca74e8ba 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -303,15 +303,15 @@ ISBN 1-882114-28-0 @*
@page
@w{ }
@sp 9
-@center @i{To Miriam, for making me complete.}
+@center @i{To my parents, for their love, and for the wonderful
+example they set for me.}
@sp 1
-@center @i{To Chana, for the joy you bring us.}
+@center @i{To my wife Miriam, for making me complete.
+Thank you for building your life together with me.}
@sp 1
-@center @i{To Rivka, for the exponential increase.}
+@center @i{To our children Chana, Rivka, Nachum and Malka,
+for enrichening our lives in innumerable ways.}
@sp 1
-@center @i{To Nachum, for the added dimension.}
-@sp 1
-@center @i{To Malka, for the new beginning.}
@w{ }
@page
@w{ }
@@ -321,13 +321,12 @@ ISBN 1-882114-28-0 @*
@docbook
<dedication>
-<simplelist>
-<member>To Miriam, for making me complete.</member>
-<member>To Chana, for the joy you bring us.</member>
-<member>To Rivka, for the exponential increase.</member>
-<member>To Nachum, for the added dimension.</member>
-<member>To Malka, for the new beginning.</member>
-</simplelist>
+<para>To my parents, for their love, and for the wonderful
+example they set for me.</para>
+<para>To my wife Miriam, for making me complete.
+Thank you for building your life together with me.</para>
+<para>To our children Chana, Rivka, Nachum and Malka,
+for enrichening our lives in innumerable ways.</para>
</dedication>
@end docbook
@@ -420,7 +419,7 @@ particular records in a file and perform operations upon them.
* One-shot:: Running a short throwaway
@command{awk} program.
* Read Terminal:: Using no input files (input from
- terminal instead).
+ the keyboard instead).
* Long:: Putting permanent @command{awk}
programs in files.
* Executable Scripts:: Making self-contained @command{awk}
@@ -1119,7 +1118,7 @@ The GNU implementation of @command{awk} is called @command{gawk}; if you
invoke it with the proper options or environment variables
(@pxref{Options}), it is fully
compatible with
-the POSIX@footnote{The 2008 POSIX standard is online at
+the POSIX@footnote{The 2008 POSIX standard is accessable online at
@url{http://www.opengroup.org/onlinepubs/9699919799/}.}
specification of the @command{awk} language
and with the Unix version of @command{awk} maintained
@@ -1171,6 +1170,12 @@ Sort data
@item
Perform simple network communications
+
+@item
+Profile and debug @command{awk} programs.
+
+@item
+Extend the language with functions written in C or C++.
@end itemize
This @value{DOCUMENT} teaches you about the @command{awk} language and
@@ -1186,12 +1191,18 @@ Implementations of the @command{awk} language are available for many
different computing environments. This @value{DOCUMENT}, while describing
the @command{awk} language in general, also describes the particular
implementation of @command{awk} called @command{gawk} (which stands for
-``GNU awk''). @command{gawk} runs on a broad range of Unix systems,
+``GNU @command{awk}''). @command{gawk} runs on a broad range of Unix systems,
ranging from Intel@registeredsymbol{}-architecture PC-based computers
-up through large-scale systems,
-such as Crays. @command{gawk} has also been ported to Mac OS X,
-Microsoft Windows (all versions) and OS/2 PCs,
-and VMS.
+up through large-scale systems.
+@command{gawk} has also been ported to Mac OS X,
+Microsoft Windows
+@ifset FOR_PRINT
+(all versions) and OS/2 PCs,
+@end ifset
+@ifclear FOR_PRINT
+(all versions),
+@end ifclear
+and OpenVMS.
(Some other, obsolete systems to which @command{gawk} was once ported
are no longer supported and the code for those systems
has been removed.)
@@ -1312,26 +1323,26 @@ The language described in this @value{DOCUMENT}
is often referred to as ``new @command{awk}'' (@command{nawk}).
@cindex @command{awk}, versions of
-Because of this, there are systems with multiple
-versions of @command{awk}.
-Some systems have an @command{awk} utility that implements the
-original version of the @command{awk} language and a @command{nawk} utility
-for the new version.
-Others have an @command{oawk} version for the ``old @command{awk}''
-language and plain @command{awk} for the new one. Still others only
-have one version, which is usually the new one.@footnote{Often, these systems
-use @command{gawk} for their @command{awk} implementation!}
-
@cindex @command{nawk} utility
@cindex @command{oawk} utility
-All in all, this makes it difficult for you to know which version of
-@command{awk} you should run when writing your programs. The best advice
-we can give here is to check your local documentation. Look for @command{awk},
-@command{oawk}, and @command{nawk}, as well as for @command{gawk}.
-It is likely that you already
-have some version of new @command{awk} on your system, which is what
-you should use when running your programs. (Of course, if you're reading
-this @value{DOCUMENT}, chances are good that you have @command{gawk}!)
+For some time after new @command{awk} was introduced, there were
+systems with multiple versions of @command{awk}. Some systems had
+an @command{awk} utility that implemented the original version of the
+@command{awk} language and a @command{nawk} utility for the new version.
+Others had an @command{oawk} version for the ``old @command{awk}''
+language and plain @command{awk} for the new one. Still others only
+had one version, which is usually the new one.
+
+Today, only Solaris systems still use an old @command{awk} for the
+default @command{awk} utility. (A more modern @command{awk} lives in
+@file{/usr/xpg6/bin} on these systems.) All other modern systems use
+some version of new @command{awk}.@footnote{Many of these systems use
+@command{gawk} for their @command{awk} implementation!}
+
+It is likely that you already have some version of new @command{awk} on
+your system, which is what you should use when running your programs.
+(Of course, if you're reading this @value{DOCUMENT}, chances are good
+that you have @command{gawk}!)
Throughout this @value{DOCUMENT}, whenever we refer to a language feature
that should be available in any complete implementation of POSIX @command{awk},
@@ -1493,6 +1504,32 @@ non-POSIX systems. It also describes how to report bugs
in @command{gawk} and where to get other freely
available @command{awk} implementations.
+@ifset FOR_PRINT
+To save space, we have omitted some of the appendices from this
+printed edition. You may find them online, as follows:
+
+@uref{http://www.gnu.org/software/gawk/manual/html_node/Notes.html}
+describes how to disable @command{gawk}'s extensions, as
+well as how to contribute new code to @command{gawk},
+and some possible future directions for @command{gawk} development.
+
+@uref{http://www.gnu.org/software/gawk/manual/html_node/Basic-Concepts.html}
+provides some very cursory background material for those who
+are completely unfamiliar with computer programming.
+
+@uref{http://www.gnu.org/software/gawk/manual/html_node/Glossary.html,
+The Glossary}
+defines most, if not all, the significant terms used
+throughout the book. If you find terms that you aren't familiar with,
+try looking them up here.
+
+@uref{http://www.gnu.org/software/gawk/manual/html_node/Copying.html} and
+@uref{http://www.gnu.org/software/gawk/manual/html_node/GNU-Free-Documentation-License.html}
+present the licenses that cover the @command{gawk} source code
+and this @value{DOCUMENT}, respectively.
+@end ifset
+
+@ifclear FOR_PRINT
@ref{Notes},
describes how to disable @command{gawk}'s extensions, as
well as how to contribute new code to @command{gawk},
@@ -1510,6 +1547,7 @@ try looking them up here.
@ref{GNU Free Documentation License},
present the licenses that cover the @command{gawk} source code
and this @value{DOCUMENT}, respectively.
+@end ifclear
@node Conventions
@unnumberedsec Typographical Conventions
@@ -1585,9 +1623,8 @@ the picture of a flashlight in the margin, as shown here.
@end ifnottex
They also appear in the index under the heading ``dark corner.''
-As noted by the opening quote, though, any
-coverage of dark corners
-is, by definition, incomplete.
+As noted by the opening quote, though, any coverage of dark corners is,
+by definition, incomplete.
Extensions to the standard @command{awk} language that are supported by
more than one @command{awk} implementation are marked
@@ -1727,6 +1764,11 @@ the FSF published several preliminary versions (numbered 0.@var{x}).
In 1996, Edition 1.0 was released with @command{gawk} 3.0.0.
The FSF published the first two editions under
the title @cite{The GNU Awk User's Guide}.
+@ifset FOR_PRINT
+SSC published two editions of the @value{DOCUMENT} under the
+title @cite{Effective awk Programming}, and in O'Reilly published
+the edition in 2001.
+@end ifset
This edition maintains the basic structure of the previous editions.
For Edition 4.0, the content has been thoroughly reviewed
@@ -1738,13 +1780,12 @@ For edition @value{EDITION}, the content has been reorganized into parts,
and the major new additions are @ref{Arbitrary Precision Arithmetic},
and @ref{Dynamic Extensions}.
-@cite{@value{TITLE}} will undoubtedly continue to evolve.
-An electronic version
-comes with the @command{gawk} distribution from the FSF.
-If you find an error in this @value{DOCUMENT}, please report it!
-@xref{Bugs}, for information on submitting
-problem reports electronically.
+This @value{DOCUMENT} will undoubtedly continue to evolve. An electronic
+version comes with the @command{gawk} distribution from the FSF. If you
+find an error in this @value{DOCUMENT}, please report it! @xref{Bugs},
+for information on submitting problem reports electronically.
+@ifclear FOR_PRINT
@node How To Contribute
@unnumberedsec How to Contribute
@@ -1761,7 +1802,7 @@ However, I found that I could not dedicate enough time to managing
contributed code: the archive did not grow and the domain went unused
for several years.
-Fortunately, late in 2008, a volunteer took on the task of setting up
+Late in 2008, a volunteer took on the task of setting up
an @command{awk}-related web site---@uref{http://awk.info}---and did a very
nice job.
@@ -1770,11 +1811,15 @@ a @command{gawk} extension that you would like to share with the rest
of the world, please see @uref{http://awk.info/?contribute} for how to
contribute it to the web site.
+As of this writing, this website is in search of a maintainer; please
+contact me if you are interested.
+
@ignore
Other links:
http://www.reddit.com/r/linux/comments/dtect/composing_music_in_awk/
@end ignore
+@end ifclear
@node Acknowledgments
@unnumberedsec Acknowledgments
@@ -1936,7 +1981,7 @@ take advantage of those opportunities.
Arnold Robbins @*
Nof Ayalon @*
ISRAEL @*
-May, 2013
+May, 2014
@iftex
@part Part I:@* The @command{awk} Language
@@ -1944,11 +1989,11 @@ May, 2013
@ignore
@ifdocbook
-@part Part I:@* The @command{awk} Language
-
-Part I describes the @command{awk} language and @command{gawk} program in detail.
-It starts with the basics, and continues through all of the features of @command{awk}
-and @command{gawk}. It contains the following chapters:
+Part I describes the @command{awk} language and @command{gawk} program
+in detail. It starts with the basics, and continues through all of
+the features of @command{awk}. Included also are many, but not all,
+of the features of @command{gawk}. This part contains the
+following chapters:
@itemize @bullet
@item
@@ -2071,7 +2116,7 @@ variations of each.
@menu
* One-shot:: Running a short throwaway @command{awk}
program.
-* Read Terminal:: Using no input files (input from terminal
+* Read Terminal:: Using no input files (input from the keyboard
instead).
* Long:: Putting permanent @command{awk} programs in
files.
@@ -2135,10 +2180,15 @@ awk '@var{program}'
@noindent
@command{awk} applies the @var{program} to the @dfn{standard input},
-which usually means whatever you type on the terminal. This continues
+which usually means whatever you type on the keyboard. This continues
until you indicate end-of-file by typing @kbd{Ctrl-d}.
+@ifset FOR_PRINT
+(On other operating systems, the end-of-file character may be different.)
+@end ifset
+@ifclear FOR_PRINT
(On other operating systems, the end-of-file character may be different.
For example, on OS/2, it is @kbd{Ctrl-z}.)
+@end ifclear
@cindex files, input, See input files
@cindex input files, running @command{awk} without
@@ -3444,7 +3494,7 @@ names like @code{i}, @code{j}, etc.)
@cindex @command{awk} debugging, enabling
Enable debugging of @command{awk} programs
(@pxref{Debugging}).
-By default, the debugger reads commands interactively from the terminal.
+By default, the debugger reads commands interactively from the keyboard.
The optional @var{file} argument allows you to specify a file with a list
of commands for the debugger to execute non-interactively.
No space is allowed between the @option{-D} and @var{file}, if
@@ -3751,7 +3801,7 @@ of having to be included into each individual program.
function names must be unique.)
With standard @command{awk}, library functions can still be used, even
-if the program is entered at the terminal,
+if the program is entered at the keyboard,
by specifying @samp{-f /dev/tty}. After typing your program,
type @kbd{Ctrl-d} (the end-of-file character) to terminate it.
(You may also use @samp{-f -} to read program source from the standard
@@ -7455,7 +7505,7 @@ then @command{gawk} sets @code{RT} to the null string.
@c STARTOFRANGE inex
@cindex input, explicit
So far we have been getting our input data from @command{awk}'s main
-input stream---either the standard input (usually your terminal, sometimes
+input stream---either the standard input (usually your keyboard, sometimes
the output from another program) or from the
files specified on the command line. The @command{awk} language has a
special built-in command called @code{getline} that
@@ -8017,7 +8067,7 @@ Note: for each variant, @command{gawk} sets the @code{RT} built-in variable.
@section Reading Input With A Timeout
@cindex timeout, reading input
-You may specify a timeout in milliseconds for reading input from a terminal,
+You may specify a timeout in milliseconds for reading input from the keyboard,
pipe or two-way communication including, TCP/IP sockets. This can be done
on a per input, command or connection basis, by setting a special element
in the @code{PROCINFO} array:
@@ -8040,8 +8090,8 @@ else if (ERRNO != "")
print ERRNO
@end example
-Here is how to read interactively from the terminal@footnote{This assumes
-that standard input is the keyboard} without waiting
+Here is how to read interactively from the user@footnote{This assumes
+that standard input is the keyboard.} without waiting
for more than five seconds:
@example
@@ -8056,7 +8106,7 @@ and set the @code{ERRNO} variable to an appropriate string value.
A negative or zero value for the timeout is the same as specifying
no timeout at all.
-A timeout can also be set for reading from the terminal in the implicit
+A timeout can also be set for reading from the keyboard in the implicit
loop that reads input records and matches them against patterns,
like so:
@@ -29251,7 +29301,7 @@ The easiest way to find out is to look at the output of
the following command:
@example
-$ @kbd{./gawk --version}
+$ @kbd{gawk --version}
@print{} GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.0-p3, GNU MP 5.0.2)
@print{} Copyright (C) 1989, 1991-2014 Free Software Foundation.
@dots{}
@@ -35540,7 +35590,7 @@ Files needed for building @command{gawk} under MS-Windows and OS/2
(@pxref{PC Installation}, for details).
@item vms/*
-Files needed for building @command{gawk} under VMS
+Files needed for building @command{gawk} under Vax/VMS and OpenVMS
(@pxref{VMS Installation}, for details).
@item test/*
@@ -36122,7 +36172,7 @@ been ported to MS-Windows that expect @command{gawk} to do automatic
translation of @code{"\r\n"}, since it won't. Caveat Emptor!
@node VMS Installation
-@appendixsubsec How to Compile and Install @command{gawk} on VMS
+@appendixsubsec How to Compile and Install @command{gawk} on Vax/VMS and OpenVMS
@c based on material from Pat Rankin <rankin@eql.caltech.edu>
@c now rankin@pactechdata.com
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 80d4e743..040731ce 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -298,15 +298,15 @@ ISBN 1-882114-28-0 @*
@page
@w{ }
@sp 9
-@center @i{To Miriam, for making me complete.}
+@center @i{To my parents, for their love, and for the wonderful
+example they set for me.}
@sp 1
-@center @i{To Chana, for the joy you bring us.}
+@center @i{To my wife Miriam, for making me complete.
+Thank you for building your life together with me.}
@sp 1
-@center @i{To Rivka, for the exponential increase.}
+@center @i{To our children Chana, Rivka, Nachum and Malka,
+for enrichening our lives in innumerable ways.}
@sp 1
-@center @i{To Nachum, for the added dimension.}
-@sp 1
-@center @i{To Malka, for the new beginning.}
@w{ }
@page
@w{ }
@@ -316,13 +316,12 @@ ISBN 1-882114-28-0 @*
@docbook
<dedication>
-<simplelist>
-<member>To Miriam, for making me complete.</member>
-<member>To Chana, for the joy you bring us.</member>
-<member>To Rivka, for the exponential increase.</member>
-<member>To Nachum, for the added dimension.</member>
-<member>To Malka, for the new beginning.</member>
-</simplelist>
+<para>To my parents, for their love, and for the wonderful
+example they set for me.</para>
+<para>To my wife Miriam, for making me complete.
+Thank you for building your life together with me.</para>
+<para>To our children Chana, Rivka, Nachum and Malka,
+for enrichening our lives in innumerable ways.</para>
</dedication>
@end docbook
@@ -415,7 +414,7 @@ particular records in a file and perform operations upon them.
* One-shot:: Running a short throwaway
@command{awk} program.
* Read Terminal:: Using no input files (input from
- terminal instead).
+ the keyboard instead).
* Long:: Putting permanent @command{awk}
programs in files.
* Executable Scripts:: Making self-contained @command{awk}
@@ -1114,7 +1113,7 @@ The GNU implementation of @command{awk} is called @command{gawk}; if you
invoke it with the proper options or environment variables
(@pxref{Options}), it is fully
compatible with
-the POSIX@footnote{The 2008 POSIX standard is online at
+the POSIX@footnote{The 2008 POSIX standard is accessable online at
@url{http://www.opengroup.org/onlinepubs/9699919799/}.}
specification of the @command{awk} language
and with the Unix version of @command{awk} maintained
@@ -1166,6 +1165,12 @@ Sort data
@item
Perform simple network communications
+
+@item
+Profile and debug @command{awk} programs.
+
+@item
+Extend the language with functions written in C or C++.
@end itemize
This @value{DOCUMENT} teaches you about the @command{awk} language and
@@ -1181,12 +1186,18 @@ Implementations of the @command{awk} language are available for many
different computing environments. This @value{DOCUMENT}, while describing
the @command{awk} language in general, also describes the particular
implementation of @command{awk} called @command{gawk} (which stands for
-``GNU awk''). @command{gawk} runs on a broad range of Unix systems,
+``GNU @command{awk}''). @command{gawk} runs on a broad range of Unix systems,
ranging from Intel@registeredsymbol{}-architecture PC-based computers
-up through large-scale systems,
-such as Crays. @command{gawk} has also been ported to Mac OS X,
-Microsoft Windows (all versions) and OS/2 PCs,
-and VMS.
+up through large-scale systems.
+@command{gawk} has also been ported to Mac OS X,
+Microsoft Windows
+@ifset FOR_PRINT
+(all versions) and OS/2 PCs,
+@end ifset
+@ifclear FOR_PRINT
+(all versions),
+@end ifclear
+and OpenVMS.
(Some other, obsolete systems to which @command{gawk} was once ported
are no longer supported and the code for those systems
has been removed.)
@@ -1279,26 +1290,26 @@ The language described in this @value{DOCUMENT}
is often referred to as ``new @command{awk}'' (@command{nawk}).
@cindex @command{awk}, versions of
-Because of this, there are systems with multiple
-versions of @command{awk}.
-Some systems have an @command{awk} utility that implements the
-original version of the @command{awk} language and a @command{nawk} utility
-for the new version.
-Others have an @command{oawk} version for the ``old @command{awk}''
-language and plain @command{awk} for the new one. Still others only
-have one version, which is usually the new one.@footnote{Often, these systems
-use @command{gawk} for their @command{awk} implementation!}
-
@cindex @command{nawk} utility
@cindex @command{oawk} utility
-All in all, this makes it difficult for you to know which version of
-@command{awk} you should run when writing your programs. The best advice
-we can give here is to check your local documentation. Look for @command{awk},
-@command{oawk}, and @command{nawk}, as well as for @command{gawk}.
-It is likely that you already
-have some version of new @command{awk} on your system, which is what
-you should use when running your programs. (Of course, if you're reading
-this @value{DOCUMENT}, chances are good that you have @command{gawk}!)
+For some time after new @command{awk} was introduced, there were
+systems with multiple versions of @command{awk}. Some systems had
+an @command{awk} utility that implemented the original version of the
+@command{awk} language and a @command{nawk} utility for the new version.
+Others had an @command{oawk} version for the ``old @command{awk}''
+language and plain @command{awk} for the new one. Still others only
+had one version, which is usually the new one.
+
+Today, only Solaris systems still use an old @command{awk} for the
+default @command{awk} utility. (A more modern @command{awk} lives in
+@file{/usr/xpg6/bin} on these systems.) All other modern systems use
+some version of new @command{awk}.@footnote{Many of these systems use
+@command{gawk} for their @command{awk} implementation!}
+
+It is likely that you already have some version of new @command{awk} on
+your system, which is what you should use when running your programs.
+(Of course, if you're reading this @value{DOCUMENT}, chances are good
+that you have @command{gawk}!)
Throughout this @value{DOCUMENT}, whenever we refer to a language feature
that should be available in any complete implementation of POSIX @command{awk},
@@ -1460,6 +1471,32 @@ non-POSIX systems. It also describes how to report bugs
in @command{gawk} and where to get other freely
available @command{awk} implementations.
+@ifset FOR_PRINT
+To save space, we have omitted some of the appendices from this
+printed edition. You may find them online, as follows:
+
+@uref{http://www.gnu.org/software/gawk/manual/html_node/Notes.html}
+describes how to disable @command{gawk}'s extensions, as
+well as how to contribute new code to @command{gawk},
+and some possible future directions for @command{gawk} development.
+
+@uref{http://www.gnu.org/software/gawk/manual/html_node/Basic-Concepts.html}
+provides some very cursory background material for those who
+are completely unfamiliar with computer programming.
+
+@uref{http://www.gnu.org/software/gawk/manual/html_node/Glossary.html,
+The Glossary}
+defines most, if not all, the significant terms used
+throughout the book. If you find terms that you aren't familiar with,
+try looking them up here.
+
+@uref{http://www.gnu.org/software/gawk/manual/html_node/Copying.html} and
+@uref{http://www.gnu.org/software/gawk/manual/html_node/GNU-Free-Documentation-License.html}
+present the licenses that cover the @command{gawk} source code
+and this @value{DOCUMENT}, respectively.
+@end ifset
+
+@ifclear FOR_PRINT
@ref{Notes},
describes how to disable @command{gawk}'s extensions, as
well as how to contribute new code to @command{gawk},
@@ -1477,6 +1514,7 @@ try looking them up here.
@ref{GNU Free Documentation License},
present the licenses that cover the @command{gawk} source code
and this @value{DOCUMENT}, respectively.
+@end ifclear
@node Conventions
@unnumberedsec Typographical Conventions
@@ -1552,9 +1590,8 @@ the picture of a flashlight in the margin, as shown here.
@end ifnottex
They also appear in the index under the heading ``dark corner.''
-As noted by the opening quote, though, any
-coverage of dark corners
-is, by definition, incomplete.
+As noted by the opening quote, though, any coverage of dark corners is,
+by definition, incomplete.
Extensions to the standard @command{awk} language that are supported by
more than one @command{awk} implementation are marked
@@ -1694,6 +1731,11 @@ the FSF published several preliminary versions (numbered 0.@var{x}).
In 1996, Edition 1.0 was released with @command{gawk} 3.0.0.
The FSF published the first two editions under
the title @cite{The GNU Awk User's Guide}.
+@ifset FOR_PRINT
+SSC published two editions of the @value{DOCUMENT} under the
+title @cite{Effective awk Programming}, and in O'Reilly published
+the edition in 2001.
+@end ifset
This edition maintains the basic structure of the previous editions.
For Edition 4.0, the content has been thoroughly reviewed
@@ -1705,13 +1747,12 @@ For edition @value{EDITION}, the content has been reorganized into parts,
and the major new additions are @ref{Arbitrary Precision Arithmetic},
and @ref{Dynamic Extensions}.
-@cite{@value{TITLE}} will undoubtedly continue to evolve.
-An electronic version
-comes with the @command{gawk} distribution from the FSF.
-If you find an error in this @value{DOCUMENT}, please report it!
-@xref{Bugs}, for information on submitting
-problem reports electronically.
+This @value{DOCUMENT} will undoubtedly continue to evolve. An electronic
+version comes with the @command{gawk} distribution from the FSF. If you
+find an error in this @value{DOCUMENT}, please report it! @xref{Bugs},
+for information on submitting problem reports electronically.
+@ifclear FOR_PRINT
@node How To Contribute
@unnumberedsec How to Contribute
@@ -1728,7 +1769,7 @@ However, I found that I could not dedicate enough time to managing
contributed code: the archive did not grow and the domain went unused
for several years.
-Fortunately, late in 2008, a volunteer took on the task of setting up
+Late in 2008, a volunteer took on the task of setting up
an @command{awk}-related web site---@uref{http://awk.info}---and did a very
nice job.
@@ -1737,11 +1778,15 @@ a @command{gawk} extension that you would like to share with the rest
of the world, please see @uref{http://awk.info/?contribute} for how to
contribute it to the web site.
+As of this writing, this website is in search of a maintainer; please
+contact me if you are interested.
+
@ignore
Other links:
http://www.reddit.com/r/linux/comments/dtect/composing_music_in_awk/
@end ignore
+@end ifclear
@node Acknowledgments
@unnumberedsec Acknowledgments
@@ -1903,7 +1948,7 @@ take advantage of those opportunities.
Arnold Robbins @*
Nof Ayalon @*
ISRAEL @*
-May, 2013
+May, 2014
@iftex
@part Part I:@* The @command{awk} Language
@@ -1911,11 +1956,11 @@ May, 2013
@ignore
@ifdocbook
-@part Part I:@* The @command{awk} Language
-
-Part I describes the @command{awk} language and @command{gawk} program in detail.
-It starts with the basics, and continues through all of the features of @command{awk}
-and @command{gawk}. It contains the following chapters:
+Part I describes the @command{awk} language and @command{gawk} program
+in detail. It starts with the basics, and continues through all of
+the features of @command{awk}. Included also are many, but not all,
+of the features of @command{gawk}. This part contains the
+following chapters:
@itemize @bullet
@item
@@ -2038,7 +2083,7 @@ variations of each.
@menu
* One-shot:: Running a short throwaway @command{awk}
program.
-* Read Terminal:: Using no input files (input from terminal
+* Read Terminal:: Using no input files (input from the keyboard
instead).
* Long:: Putting permanent @command{awk} programs in
files.
@@ -2102,10 +2147,15 @@ awk '@var{program}'
@noindent
@command{awk} applies the @var{program} to the @dfn{standard input},
-which usually means whatever you type on the terminal. This continues
+which usually means whatever you type on the keyboard. This continues
until you indicate end-of-file by typing @kbd{Ctrl-d}.
+@ifset FOR_PRINT
+(On other operating systems, the end-of-file character may be different.)
+@end ifset
+@ifclear FOR_PRINT
(On other operating systems, the end-of-file character may be different.
For example, on OS/2, it is @kbd{Ctrl-z}.)
+@end ifclear
@cindex files, input, See input files
@cindex input files, running @command{awk} without
@@ -3372,7 +3422,7 @@ names like @code{i}, @code{j}, etc.)
@cindex @command{awk} debugging, enabling
Enable debugging of @command{awk} programs
(@pxref{Debugging}).
-By default, the debugger reads commands interactively from the terminal.
+By default, the debugger reads commands interactively from the keyboard.
The optional @var{file} argument allows you to specify a file with a list
of commands for the debugger to execute non-interactively.
No space is allowed between the @option{-D} and @var{file}, if
@@ -3679,7 +3729,7 @@ of having to be included into each individual program.
function names must be unique.)
With standard @command{awk}, library functions can still be used, even
-if the program is entered at the terminal,
+if the program is entered at the keyboard,
by specifying @samp{-f /dev/tty}. After typing your program,
type @kbd{Ctrl-d} (the end-of-file character) to terminate it.
(You may also use @samp{-f -} to read program source from the standard
@@ -7073,7 +7123,7 @@ then @command{gawk} sets @code{RT} to the null string.
@c STARTOFRANGE inex
@cindex input, explicit
So far we have been getting our input data from @command{awk}'s main
-input stream---either the standard input (usually your terminal, sometimes
+input stream---either the standard input (usually your keyboard, sometimes
the output from another program) or from the
files specified on the command line. The @command{awk} language has a
special built-in command called @code{getline} that
@@ -7635,7 +7685,7 @@ Note: for each variant, @command{gawk} sets the @code{RT} built-in variable.
@section Reading Input With A Timeout
@cindex timeout, reading input
-You may specify a timeout in milliseconds for reading input from a terminal,
+You may specify a timeout in milliseconds for reading input from the keyboard,
pipe or two-way communication including, TCP/IP sockets. This can be done
on a per input, command or connection basis, by setting a special element
in the @code{PROCINFO} array:
@@ -7658,8 +7708,8 @@ else if (ERRNO != "")
print ERRNO
@end example
-Here is how to read interactively from the terminal@footnote{This assumes
-that standard input is the keyboard} without waiting
+Here is how to read interactively from the user@footnote{This assumes
+that standard input is the keyboard.} without waiting
for more than five seconds:
@example
@@ -7674,7 +7724,7 @@ and set the @code{ERRNO} variable to an appropriate string value.
A negative or zero value for the timeout is the same as specifying
no timeout at all.
-A timeout can also be set for reading from the terminal in the implicit
+A timeout can also be set for reading from the keyboard in the implicit
loop that reads input records and matches them against patterns,
like so:
@@ -28392,7 +28442,7 @@ The easiest way to find out is to look at the output of
the following command:
@example
-$ @kbd{./gawk --version}
+$ @kbd{gawk --version}
@print{} GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.0-p3, GNU MP 5.0.2)
@print{} Copyright (C) 1989, 1991-2014 Free Software Foundation.
@dots{}
@@ -34681,7 +34731,7 @@ Files needed for building @command{gawk} under MS-Windows and OS/2
(@pxref{PC Installation}, for details).
@item vms/*
-Files needed for building @command{gawk} under VMS
+Files needed for building @command{gawk} under Vax/VMS and OpenVMS
(@pxref{VMS Installation}, for details).
@item test/*
@@ -35263,7 +35313,7 @@ been ported to MS-Windows that expect @command{gawk} to do automatic
translation of @code{"\r\n"}, since it won't. Caveat Emptor!
@node VMS Installation
-@appendixsubsec How to Compile and Install @command{gawk} on VMS
+@appendixsubsec How to Compile and Install @command{gawk} on Vax/VMS and OpenVMS
@c based on material from Pat Rankin <rankin@eql.caltech.edu>
@c now rankin@pactechdata.com