diff options
-rw-r--r-- | doc/ChangeLog | 4 | ||||
-rw-r--r-- | doc/gawk.info | 1156 | ||||
-rw-r--r-- | doc/gawk.texi | 182 | ||||
-rw-r--r-- | doc/gawktexi.in | 182 |
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 |