diff options
-rw-r--r-- | doc/ChangeLog | 5 | ||||
-rw-r--r-- | doc/gawk.info | 1441 | ||||
-rw-r--r-- | doc/gawk.texi | 615 | ||||
-rw-r--r-- | doc/gawktexi.in | 615 |
4 files changed, 2143 insertions, 533 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog index 7aa800cc..90150317 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,8 @@ +2014-01-23 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in (Feature History): New node. + (Common Extensions): Update features now in mawk, too. + 2014-12-14 John E. Malmberg <wb8tyw@qsl.net> * gawktexi.in: Add information on building VMS PCSI kit. diff --git a/doc/gawk.info b/doc/gawk.info index 1c596811..db547191 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -193,7 +193,8 @@ texts being (a) (see below), and with the Back-Cover Texts being (b) field. * Command Line Field Separator:: Setting `FS' from the command-line. -* Full Line Fields:: Making the full line be a single field. +* Full Line Fields:: Making the full line be a single + field. * Field Splitting Summary:: Some final points and a summary table. * Constant Size:: Reading constant width data. * Splitting By Content:: Defining Fields By Content @@ -583,6 +584,7 @@ texts being (a) (see below), and with the Back-Cover Texts being (b) version of `awk'. * POSIX/GNU:: The extensions in `gawk' not in POSIX `awk'. +* Feature History:: The history of the features in `gawk'. * Common Extensions:: Common Extensions Summary. * Ranges and Locales:: How locales used to affect regexp ranges. @@ -24910,6 +24912,7 @@ you can find more information. `awk'. * POSIX/GNU:: The extensions in `gawk' not in POSIX `awk'. +* Feature History:: The history of the features in `gawk'. * Common Extensions:: Common Extensions Summary. * Ranges and Locales:: How locales used to affect regexp ranges. * Contributors:: The major contributors to `gawk'. @@ -25088,7 +25091,7 @@ in his version of `awk'. available in his `awk'. -File: gawk.info, Node: POSIX/GNU, Next: Common Extensions, Prev: BTL, Up: Language History +File: gawk.info, Node: POSIX/GNU, Next: Feature History, Prev: BTL, Up: Language History A.5 Extensions in `gawk' Not in POSIX `awk' =========================================== @@ -25245,9 +25248,391 @@ the current version of `gawk'. -File: gawk.info, Node: Common Extensions, Next: Ranges and Locales, Prev: POSIX/GNU, Up: Language History +File: gawk.info, Node: Feature History, Next: Common Extensions, Prev: POSIX/GNU, Up: Language History + +A.6 History of `gawk' Features +============================== + +This minor node describes the features in `gawk' over and above those +in POSIX `awk', in the order they were added to `gawk'. + + Version 2.10 of `gawk' introduced the following features: + + * The `AWKPATH' environment variable for specifying a path search for + the `-f' command-line option (*note Options::). + + * The `IGNORECASE' variable and its effects (*note + Case-sensitivity::). + + * The `/dev/stdin', `/dev/stdout', `/dev/stderr' and `/dev/fd/N' + special file names (*note Special Files::). + + Version 2.13 of `gawk' introduced the following features: + + * The `FIELDWIDTHS' variable and its effects (*note Constant Size::). + + * The `systime()' and `strftime()' built-in functions for obtaining + and printing timestamps (*note Time Functions::). + + * Additional command-line options (*note Options::): + + - The `-W lint' option to provide error and portability checking + for both the source code and at runtime. + + - The `-W compat' option to turn off the GNU extensions. + + - The `-W posix' option for full POSIX compliance. + + Version 2.14 of `gawk' introduced the following feature: + + * The `next file' statement for skipping to the next data file + (*note Nextfile Statement::). + + Version 2.15 of `gawk' introduced the following features: + + * New variables (*note Built-in Variables::): + + - `ARGIND', which tracks the movement of `FILENAME' through + `ARGV'. + + - `ERRNO', which contains the system error message when + `getline' returns -1 or `close()' fails. + + * The `/dev/pid', `/dev/ppid', `/dev/pgrpid', and `/dev/user' + special file names. These have since been removed. + + * The ability to delete all of an array at once with `delete ARRAY' + (*note Delete::). + + * Command line option changes (*note Options::): + + - The ability to use GNU-style long-named options that start + with `--'. + + - The `--source' option for mixing command-line and library-file + source code. + + Version 3.0 of `gawk' introduced the following features: + + * New or changed variables: + + - `IGNORECASE' changed, now applying to string comparison as + well as regexp operations (*note Case-sensitivity::). + + - `RT', which contains the input text that matched `RS' (*note + Records::). + + * Full support for both POSIX and GNU regexps (*note Regexp::). + + * The `gensub()' function for more powerful text manipulation (*note + String Functions::). + + * The `strftime()' function acquired a default time format, allowing + it to be called with no arguments (*note Time Functions::). + + * The ability for `FS' and for the third argument to `split()' to be + null strings (*note Single Character Fields::). + + * The ability for `RS' to be a regexp (*note Records::). + + * The `next file' statement became `nextfile' (*note Nextfile + Statement::). + + * The `fflush()' function from the Bell Laboratories research + version of `awk' (*note I/O Functions::). + + * New command line options: + + - The `--lint-old' option to warn about constructs that are not + available in the original Version 7 Unix version of `awk' + (*note V7/SVR3.1::). + + - The `-m' option from the Bell Laboratories research version + of `awk' This was later removed. + + - The `--re-interval' option to provide interval expressions in + regexps (*note Regexp Operators::). + + - The `--traditional' option was added as a better name for + `--compat' (*note Options::). + + * The use of GNU Autoconf to control the configuration process + (*note Quick Installation::). + + * Amiga support. + + + Version 3.1 of `gawk' introduced the following features: + + * New variables (*note Built-in Variables::): + + - `BINMODE', for non-POSIX systems, which allows binary I/O for + input and/or output files (*note PC Using::). + + - `LINT', which dynamically controls lint warnings. + + - `PROCINFO', an array for providing process-related + information. + + - `TEXTDOMAIN', for setting an application's + internationalization text domain (*note + Internationalization::). + + * The ability to use octal and hexadecimal constants in `awk' + program source code (*note Nondecimal-numbers::). + + * The `|&' operator for two-way I/O to a coprocess (*note Two-way + I/O::). + + * The `/inet' special files for TCP/IP networking using `|&' (*note + TCP/IP Networking::). + + * The optional second argument to `close()' that allows closing one + end of a two-way pipe to a coprocess (*note Two-way I/O::). + + * The optional third argument to the `match()' function for + capturing text-matching subexpressions within a regexp (*note + String Functions::). + + * Positional specifiers in `printf' formats for making translations + easier (*note Printf Ordering::). + + * A number of new built-in functions: + + - The `asort()' and `asorti()' functions for sorting arrays + (*note Array Sorting::). + + - The `bindtextdomain()', `dcgettext()' and `dcngettext()' + functions for internationalization (*note Programmer i18n::). + + - The `extension()' function and the ability to add new + built-in functions dynamically (*note Dynamic Extensions::). + + - The `mktime()' function for creating timestamps (*note Time + Functions::). + + - The `and()', `or()', `xor()', `compl()', `lshift()', + `rshift()', and `strtonum()' functions (*note Bitwise + Functions::). + + * The support for `next file' as two words was removed completely + (*note Nextfile Statement::). + + * Additional commnd line options (*note Options::): + + - The `--dump-variables' option to print a list of all global + variables. + + - The `--exec' option, for use in CGI scripts. + + - The `--gen-po' command-line option and the use of a leading + underscore to mark strings that should be translated (*note + String Extraction::). + + - The `--non-decimal-data' option to allow non-decimal input + data (*note Nondecimal Data::). + + - The `--profile' option and `pgawk', the profiling version of + `gawk', for producing execution profiles of `awk' programs + (*note Profiling::). + + - The `--use-lc-numeric' option to force `gawk' to use the + locale's decimal point for parsing input data (*note + Conversion::). + + * The use of GNU Automake to help in standardizing the configuration + process (*note Quick Installation::). + + * The use of GNU `gettext' for `gawk''s own message output (*note + Gawk I18N::). + + * BeOS support. This was later removed. + + * Tandem support. This was later removed. + + * The Atari port became officially unsupported. + + * The source code changed to use ISO C standard-style function + definitions. + + * POSIX compliance for `sub()' and `gsub()' (*note Gory Details::). + + * The `length()' function was extended to accept an array argument + and return the number of elements in the array (*note String + Functions::). + + * The `strftime()' function acquired a third argument to enable + printing times as UTC (*note Time Functions::). + + Version 4.0 of `gawk' introduced the following features: + + * Variable additions: + + - `FPAT', which allows you to specify a regexp that matches the + fields, instead of matching the field separator (*note + Splitting By Content::). + + - If `PROCINFO["sorted_in"]' exists, `for(iggy in foo)' loops + sort the indices before looping over them. The value of this + element provides control over how the indices are sorted + before the loop traversal starts (*note Controlling + Scanning::). + + - `PROCINFO["strftime"]', which holds the default format for + `strftime()' (*note Time Functions::). + + * The special files `/dev/pid', `/dev/ppid', `/dev/pgrpid' and + `/dev/user' were removed. + + * Support for IPv6 was added via the `/inet6' special file. + `/inet4' forces IPv4 and `/inet' chooses the system default, which + is probably IPv4 (*note TCP/IP Networking::). + + * The use of `\s' and `\S' escape sequences in regular expressions + (*note GNU Regexp Operators::). + + * Interval expressions became part of default regular expressions + (*note Regexp Operators::). + + * POSIX character classes work even with `--traditional' (*note + Regexp Operators::). + + * `break' and `continue' became invalid outside a loop, even with + `--traditional' (*note Break Statement::, and also see *note + Continue Statement::). + + * `fflush()', `nextfile', and `delete ARRAY' are allowed if + `--posix' or `--traditional', since they are all now part of POSIX. + + * An optional third argument to `asort()' and `asorti()', specifying + how to sort (*note String Functions::). + + * The behavior of `fflush()' changed to match Brian Kernighan's `awk' + and for POSIX; now both `fflush()' and `fflush("")' flush all open + output redirections (*note I/O Functions::). + + * The `isarray()' function which distinguishes if an item is an array + or not, to make it possible to traverse multidimensional arrays + (*note Type Functions::). + + * The `patsplit()' function which gives the same capability as + `FPAT', for splitting (*note String Functions::). + + * An optional fourth argument to the `split()' function, which is an + array to hold the values of the separators (*note String + Functions::). + + * Arrays of arrays (*note Arrays of Arrays::). + + * The `BEGINFILE' and `ENDFILE' special patterns (*note + BEGINFILE/ENDFILE::). + + * Indirect function calls (*note Indirect Calls::). + + * `switch' / `case' are enabled by default (*note Switch + Statement::). + + * Command line option changes (*note Options::): + + - The `-b' and `--characters-as-bytes' options which prevent + `gawk' from treating input as a multibyte string. + + - The redundant `--compat', `--copyleft', and `--usage' long + options were removed. + + - The `--gen-po' option was finally renamed to the correct + `--gen-pot'. + + - The `--sandbox' option which disables certain features. + + - All long options acquired corresponding short options, for + use in `#!' scripts. + + * Directories named on the command line now produce a warning, not a + fatal error, unless `--posix' or `--traditional' are used (*note + Command line directories::). + + * The `gawk' internals were rewritten, bringing the `dgawk' debugger + and possibly improved performance (*note Debugger::). + + * Per the GNU Coding Standards, dynamic extensions must now define a + global symbol indicating that they are GPL-compatible (*note + Plugin License::). + + * In POSIX mode, string comparisons use `strcoll()' / `wcscoll()' + (*note POSIX String Comparison::). + + * The option for raw sockets was removed, since it was never + implemented (*note TCP/IP Networking::). + + * Ranges of the form `[d-h]' are treated as if they were in the C + locale, no matter what kind of regexp is being used, and even if + `--posix' (*note Ranges and Locales::). + + * Support was removed for the following systems: + + - Atari + + - Amiga + + - BeOS + + - Cray + + - MIPS RiscOS + + - MS-DOS with Microsoft Compiler + + - MS-Windows with Microsoft Compiler + + - NeXT + + - SunOS 3.x, Sun 386 (Road Runner) + + - Tandem (non-POSIX) + + - Prestandard VAX C compiler for VAX/VMS + + Version 4.1 of `gawk' introduced the following features: + + * Three new arrays: `SYMTAB', `FUNCTAB', and + `PROCINFO["identifiers"]' (*note Auto-set::). + + * The three executables `gawk', `pgawk', and `dgawk', were merged + into one, named just `gawk'. As a result the command line options + changed. + + * Command line option changes (*note Options::): + + - The `-D' option invokes the debugger. + + - The `-i' and `--include' options load `awk' library files. + + - The `-l' and `--load' options for load compiled dynamic + extensions. + + - The `-M' and `--bignum' options enable MPFR. + + - The `-o' only does pretty-printing. + + - The `-p' option is used for profiling. + + - The `-R' option was removed. + + * Support for high precision arithmetic with MPFR. (*note Gawk and + MPFR::). + + * The `and()', `or()' and `xor()' functions allow any number of + arguments, with a minimum of two (*note Bitwise Functions::). + + * The dynamic extension interface was completely redone (*note + Dynamic Extensions::). + + + +File: gawk.info, Node: Common Extensions, Next: Ranges and Locales, Prev: Feature History, Up: Language History -A.6 Common Extensions Summary +A.7 Common Extensions Summary ============================= This minor node summarizes the common extensions supported by `gawk', @@ -25259,7 +25644,7 @@ Feature BWK Awk Mawk GNU Awk `\x' Escape sequence X X X `RS' as regexp X X `FS' as null string X X X -`/dev/stdin' special file X X +`/dev/stdin' special file X X X `/dev/stdout' special file X X X `/dev/stderr' special file X X X `**' and `**=' operators X X @@ -25267,7 +25652,7 @@ Feature BWK Awk Mawk GNU Awk `func' keyword X X `nextfile' statement X X X `delete' without subscript X X X -`length()' of an array X X +`length()' of an array X X X `BINMODE' variable X X Time related functions X X @@ -25278,7 +25663,7 @@ POSIX.) File: gawk.info, Node: Ranges and Locales, Next: Contributors, Prev: Common Extensions, Up: Language History -A.7 Regexp Ranges and Locales: A Long Sad Story +A.8 Regexp Ranges and Locales: A Long Sad Story =============================================== This minor node describes the confusing history of ranges within @@ -25384,7 +25769,7 @@ and its rationale File: gawk.info, Node: Contributors, Prev: Ranges and Locales, Up: Language History -A.8 Major Contributors to `gawk' +A.9 Major Contributors to `gawk' ================================ Always give credit where credit is due. -- Anonymous @@ -31399,6 +31784,7 @@ Index (line 19) * next debugger command: Debugger Execution Control. (line 43) +* next file statement: Feature History. (line 168) * next statement <1>: Next Statement. (line 6) * next statement: Boolean Ops. (line 85) * next statement, BEGIN/END patterns and: I/O And BEGIN/END. (line 37) @@ -32367,524 +32753,525 @@ Index Tag Table: Node: Top1366 -Node: Foreword40737 -Node: Preface45082 -Ref: Preface-Footnote-148135 -Ref: Preface-Footnote-248231 -Node: History48463 -Node: Names50837 -Ref: Names-Footnote-152314 -Node: This Manual52386 -Ref: This Manual-Footnote-158160 -Node: Conventions58260 -Node: Manual History60416 -Ref: Manual History-Footnote-163864 -Ref: Manual History-Footnote-263905 -Node: How To Contribute63979 -Node: Acknowledgments65123 -Node: Getting Started69332 -Node: Running gawk71711 -Node: One-shot72897 -Node: Read Terminal74122 -Ref: Read Terminal-Footnote-175772 -Ref: Read Terminal-Footnote-276048 -Node: Long76219 -Node: Executable Scripts77595 -Ref: Executable Scripts-Footnote-179428 -Ref: Executable Scripts-Footnote-279530 -Node: Comments80077 -Node: Quoting82544 -Node: DOS Quoting87167 -Node: Sample Data Files87842 -Node: Very Simple90886 -Node: Two Rules95485 -Node: More Complex97632 -Ref: More Complex-Footnote-1100562 -Node: Statements/Lines100647 -Ref: Statements/Lines-Footnote-1105109 -Node: Other Features105374 -Node: When106302 -Node: Invoking Gawk108449 -Node: Command Line109910 -Node: Options110693 -Ref: Options-Footnote-1126085 -Node: Other Arguments126110 -Node: Naming Standard Input128768 -Node: Environment Variables129862 -Node: AWKPATH Variable130420 -Ref: AWKPATH Variable-Footnote-1133178 -Node: AWKLIBPATH Variable133438 -Node: Other Environment Variables134156 -Node: Exit Status137119 -Node: Include Files137794 -Node: Loading Shared Libraries141363 -Node: Obsolete142727 -Node: Undocumented143424 -Node: Regexp143666 -Node: Regexp Usage145055 -Node: Escape Sequences147081 -Node: Regexp Operators152750 -Ref: Regexp Operators-Footnote-1160130 -Ref: Regexp Operators-Footnote-2160277 -Node: Bracket Expressions160375 -Ref: table-char-classes162265 -Node: GNU Regexp Operators164788 -Node: Case-sensitivity168511 -Ref: Case-sensitivity-Footnote-1171479 -Ref: Case-sensitivity-Footnote-2171714 -Node: Leftmost Longest171822 -Node: Computed Regexps173023 -Node: Reading Files176360 -Node: Records178362 -Ref: Records-Footnote-1187251 -Node: Fields187288 -Ref: Fields-Footnote-1190321 -Node: Nonconstant Fields190407 -Node: Changing Fields192609 -Node: Field Separators198568 -Node: Default Field Splitting201270 -Node: Regexp Field Splitting202387 -Node: Single Character Fields205729 -Node: Command Line Field Separator206788 -Node: Full Line Fields210222 -Ref: Full Line Fields-Footnote-1210730 -Node: Field Splitting Summary210776 -Ref: Field Splitting Summary-Footnote-1213875 -Node: Constant Size213976 -Node: Splitting By Content218560 -Ref: Splitting By Content-Footnote-1222286 -Node: Multiple Line222326 -Ref: Multiple Line-Footnote-1228173 -Node: Getline228352 -Node: Plain Getline230568 -Node: Getline/Variable232663 -Node: Getline/File233810 -Node: Getline/Variable/File235151 -Ref: Getline/Variable/File-Footnote-1236750 -Node: Getline/Pipe236837 -Node: Getline/Variable/Pipe239536 -Node: Getline/Coprocess240643 -Node: Getline/Variable/Coprocess241895 -Node: Getline Notes242632 -Node: Getline Summary245419 -Ref: table-getline-variants245827 -Node: Read Timeout246739 -Ref: Read Timeout-Footnote-1250480 -Node: Command line directories250537 -Node: Printing251167 -Node: Print252798 -Node: Print Examples254135 -Node: Output Separators256919 -Node: OFMT258679 -Node: Printf260037 -Node: Basic Printf260943 -Node: Control Letters262482 -Node: Format Modifiers266294 -Node: Printf Examples272303 -Node: Redirection275018 -Node: Special Files281983 -Node: Special FD282516 -Ref: Special FD-Footnote-1286141 -Node: Special Network286215 -Node: Special Caveats287065 -Node: Close Files And Pipes287861 -Ref: Close Files And Pipes-Footnote-1294844 -Ref: Close Files And Pipes-Footnote-2294992 -Node: Expressions295142 -Node: Values296274 -Node: Constants296950 -Node: Scalar Constants297630 -Ref: Scalar Constants-Footnote-1298489 -Node: Nondecimal-numbers298671 -Node: Regexp Constants301671 -Node: Using Constant Regexps302146 -Node: Variables305201 -Node: Using Variables305856 -Node: Assignment Options307580 -Node: Conversion309452 -Ref: table-locale-affects314953 -Ref: Conversion-Footnote-1315577 -Node: All Operators315686 -Node: Arithmetic Ops316316 -Node: Concatenation318821 -Ref: Concatenation-Footnote-1321613 -Node: Assignment Ops321733 -Ref: table-assign-ops326721 -Node: Increment Ops328052 -Node: Truth Values and Conditions331486 -Node: Truth Values332569 -Node: Typing and Comparison333618 -Node: Variable Typing334411 -Ref: Variable Typing-Footnote-1338308 -Node: Comparison Operators338430 -Ref: table-relational-ops338840 -Node: POSIX String Comparison342389 -Ref: POSIX String Comparison-Footnote-1343345 -Node: Boolean Ops343483 -Ref: Boolean Ops-Footnote-1347561 -Node: Conditional Exp347652 -Node: Function Calls349384 -Node: Precedence352978 -Node: Locales356647 -Node: Patterns and Actions357736 -Node: Pattern Overview358790 -Node: Regexp Patterns360459 -Node: Expression Patterns361002 -Node: Ranges364687 -Node: BEGIN/END367653 -Node: Using BEGIN/END368415 -Ref: Using BEGIN/END-Footnote-1371146 -Node: I/O And BEGIN/END371252 -Node: BEGINFILE/ENDFILE373534 -Node: Empty376448 -Node: Using Shell Variables376764 -Node: Action Overview379049 -Node: Statements381406 -Node: If Statement383260 -Node: While Statement384759 -Node: Do Statement386803 -Node: For Statement387959 -Node: Switch Statement391111 -Node: Break Statement393208 -Node: Continue Statement395198 -Node: Next Statement396991 -Node: Nextfile Statement399381 -Node: Exit Statement402024 -Node: Built-in Variables404440 -Node: User-modified405535 -Ref: User-modified-Footnote-1413893 -Node: Auto-set413955 -Ref: Auto-set-Footnote-1427425 -Ref: Auto-set-Footnote-2427630 -Node: ARGC and ARGV427686 -Node: Arrays431537 -Node: Array Basics433042 -Node: Array Intro433868 -Node: Reference to Elements438185 -Node: Assigning Elements440455 -Node: Array Example440946 -Node: Scanning an Array442678 -Node: Controlling Scanning444992 -Ref: Controlling Scanning-Footnote-1450079 -Node: Delete450395 -Ref: Delete-Footnote-1453160 -Node: Numeric Array Subscripts453217 -Node: Uninitialized Subscripts455400 -Node: Multidimensional457027 -Node: Multiscanning460120 -Node: Arrays of Arrays461709 -Node: Functions466349 -Node: Built-in467168 -Node: Calling Built-in468246 -Node: Numeric Functions470234 -Ref: Numeric Functions-Footnote-1474066 -Ref: Numeric Functions-Footnote-2474423 -Ref: Numeric Functions-Footnote-3474471 -Node: String Functions474740 -Ref: String Functions-Footnote-1497660 -Ref: String Functions-Footnote-2497789 -Ref: String Functions-Footnote-3498037 -Node: Gory Details498124 -Ref: table-sub-escapes499803 -Ref: table-sub-posix-92501157 -Ref: table-sub-proposed502508 -Ref: table-posix-sub503862 -Ref: table-gensub-escapes505407 -Ref: Gory Details-Footnote-1506583 -Ref: Gory Details-Footnote-2506634 -Node: I/O Functions506785 -Ref: I/O Functions-Footnote-1513770 -Node: Time Functions513917 -Ref: Time Functions-Footnote-1524850 -Ref: Time Functions-Footnote-2524918 -Ref: Time Functions-Footnote-3525076 -Ref: Time Functions-Footnote-4525187 -Ref: Time Functions-Footnote-5525299 -Ref: Time Functions-Footnote-6525526 -Node: Bitwise Functions525792 -Ref: table-bitwise-ops526354 -Ref: Bitwise Functions-Footnote-1530575 -Node: Type Functions530759 -Node: I18N Functions531910 -Node: User-defined533537 -Node: Definition Syntax534341 -Ref: Definition Syntax-Footnote-1539251 -Node: Function Example539320 -Node: Function Caveats541914 -Node: Calling A Function542335 -Node: Variable Scope543450 -Node: Pass By Value/Reference546413 -Node: Return Statement549921 -Node: Dynamic Typing552902 -Node: Indirect Calls553833 -Node: Library Functions563518 -Ref: Library Functions-Footnote-1567031 -Ref: Library Functions-Footnote-2567174 -Node: Library Names567345 -Ref: Library Names-Footnote-1570816 -Ref: Library Names-Footnote-2571036 -Node: General Functions571122 -Node: Strtonum Function572150 -Node: Assert Function575080 -Node: Round Function578406 -Node: Cliff Random Function579949 -Node: Ordinal Functions580965 -Ref: Ordinal Functions-Footnote-1584035 -Ref: Ordinal Functions-Footnote-2584287 -Node: Join Function584496 -Ref: Join Function-Footnote-1586267 -Node: Getlocaltime Function586467 -Node: Readfile Function590208 -Node: Data File Management592047 -Node: Filetrans Function592679 -Node: Rewind Function596748 -Node: File Checking598135 -Node: Empty Files599229 -Node: Ignoring Assigns601459 -Node: Getopt Function603012 -Ref: Getopt Function-Footnote-1614315 -Node: Passwd Functions614518 -Ref: Passwd Functions-Footnote-1623493 -Node: Group Functions623581 -Node: Walking Arrays631665 -Node: Sample Programs633802 -Node: Running Examples634476 -Node: Clones635204 -Node: Cut Program636428 -Node: Egrep Program646273 -Ref: Egrep Program-Footnote-1654046 -Node: Id Program654156 -Node: Split Program657772 -Ref: Split Program-Footnote-1661291 -Node: Tee Program661419 -Node: Uniq Program664222 -Node: Wc Program671651 -Ref: Wc Program-Footnote-1675917 -Ref: Wc Program-Footnote-2676117 -Node: Miscellaneous Programs676209 -Node: Dupword Program677397 -Node: Alarm Program679428 -Node: Translate Program684181 -Ref: Translate Program-Footnote-1688568 -Ref: Translate Program-Footnote-2688816 -Node: Labels Program688950 -Ref: Labels Program-Footnote-1692321 -Node: Word Sorting692405 -Node: History Sorting696289 -Node: Extract Program698128 -Ref: Extract Program-Footnote-1705631 -Node: Simple Sed705759 -Node: Igawk Program708821 -Ref: Igawk Program-Footnote-1723978 -Ref: Igawk Program-Footnote-2724179 -Node: Anagram Program724317 -Node: Signature Program727385 -Node: Advanced Features728485 -Node: Nondecimal Data730371 -Node: Array Sorting731954 -Node: Controlling Array Traversal732651 -Node: Array Sorting Functions740935 -Ref: Array Sorting Functions-Footnote-1744804 -Node: Two-way I/O744998 -Ref: Two-way I/O-Footnote-1750430 -Node: TCP/IP Networking750500 -Node: Profiling753344 -Node: Internationalization760841 -Node: I18N and L10N762266 -Node: Explaining gettext762952 -Ref: Explaining gettext-Footnote-1768020 -Ref: Explaining gettext-Footnote-2768204 -Node: Programmer i18n768369 -Node: Translator i18n772571 -Node: String Extraction773364 -Ref: String Extraction-Footnote-1774325 -Node: Printf Ordering774411 -Ref: Printf Ordering-Footnote-1777195 -Node: I18N Portability777259 -Ref: I18N Portability-Footnote-1779708 -Node: I18N Example779771 -Ref: I18N Example-Footnote-1782409 -Node: Gawk I18N782481 -Node: Debugger783102 -Node: Debugging784073 -Node: Debugging Concepts784506 -Node: Debugging Terms786362 -Node: Awk Debugging788959 -Node: Sample Debugging Session789851 -Node: Debugger Invocation790371 -Node: Finding The Bug791703 -Node: List of Debugger Commands798191 -Node: Breakpoint Control799525 -Node: Debugger Execution Control803189 -Node: Viewing And Changing Data806549 -Node: Execution Stack809905 -Node: Debugger Info811372 -Node: Miscellaneous Debugger Commands815354 -Node: Readline Support820530 -Node: Limitations821361 -Node: Arbitrary Precision Arithmetic823613 -Ref: Arbitrary Precision Arithmetic-Footnote-1825262 -Node: General Arithmetic825410 -Node: Floating Point Issues827130 -Node: String Conversion Precision828011 -Ref: String Conversion Precision-Footnote-1829716 -Node: Unexpected Results829825 -Node: POSIX Floating Point Problems831978 -Ref: POSIX Floating Point Problems-Footnote-1835803 -Node: Integer Programming835841 -Node: Floating-point Programming837580 -Ref: Floating-point Programming-Footnote-1843911 -Ref: Floating-point Programming-Footnote-2844181 -Node: Floating-point Representation844445 -Node: Floating-point Context845610 -Ref: table-ieee-formats846449 -Node: Rounding Mode847833 -Ref: table-rounding-modes848312 -Ref: Rounding Mode-Footnote-1851327 -Node: Gawk and MPFR851506 -Node: Arbitrary Precision Floats852761 -Ref: Arbitrary Precision Floats-Footnote-1855204 -Node: Setting Precision855520 -Ref: table-predefined-precision-strings856206 -Node: Setting Rounding Mode858351 -Ref: table-gawk-rounding-modes858755 -Node: Floating-point Constants859942 -Node: Changing Precision861371 -Ref: Changing Precision-Footnote-1862768 -Node: Exact Arithmetic862942 -Node: Arbitrary Precision Integers866080 -Ref: Arbitrary Precision Integers-Footnote-1869098 -Node: Dynamic Extensions869245 -Node: Extension Intro870703 -Node: Plugin License871968 -Node: Extension Mechanism Outline872653 -Ref: load-extension873070 -Ref: load-new-function874548 -Ref: call-new-function875543 -Node: Extension API Description877558 -Node: Extension API Functions Introduction878771 -Node: General Data Types883637 -Ref: General Data Types-Footnote-1889242 -Node: Requesting Values889541 -Ref: table-value-types-returned890272 -Node: Constructor Functions891226 -Node: Registration Functions894246 -Node: Extension Functions894931 -Node: Exit Callback Functions897156 -Node: Extension Version String898405 -Node: Input Parsers899055 -Node: Output Wrappers908812 -Node: Two-way processors913322 -Node: Printing Messages915530 -Ref: Printing Messages-Footnote-1916607 -Node: Updating `ERRNO'916759 -Node: Accessing Parameters917498 -Node: Symbol Table Access918728 -Node: Symbol table by name919240 -Node: Symbol table by cookie920987 -Ref: Symbol table by cookie-Footnote-1925117 -Node: Cached values925180 -Ref: Cached values-Footnote-1928629 -Node: Array Manipulation928720 -Ref: Array Manipulation-Footnote-1929818 -Node: Array Data Types929857 -Ref: Array Data Types-Footnote-1932560 -Node: Array Functions932652 -Node: Flattening Arrays936418 -Node: Creating Arrays943270 -Node: Extension API Variables947995 -Node: Extension Versioning948631 -Node: Extension API Informational Variables950532 -Node: Extension API Boilerplate951618 -Node: Finding Extensions955422 -Node: Extension Example955982 -Node: Internal File Description956712 -Node: Internal File Ops960803 -Ref: Internal File Ops-Footnote-1972311 -Node: Using Internal File Ops972451 -Ref: Using Internal File Ops-Footnote-1974804 -Node: Extension Samples975070 -Node: Extension Sample File Functions976594 -Node: Extension Sample Fnmatch985079 -Node: Extension Sample Fork986805 -Node: Extension Sample Inplace988023 -Node: Extension Sample Ord989801 -Node: Extension Sample Readdir990637 -Node: Extension Sample Revout992169 -Node: Extension Sample Rev2way992762 -Node: Extension Sample Read write array993452 -Node: Extension Sample Readfile995335 -Node: Extension Sample API Tests996153 -Node: Extension Sample Time996678 -Node: gawkextlib998042 -Node: Language History1000823 -Node: V7/SVR3.11002345 -Node: SVR41004665 -Node: POSIX1006107 -Node: BTL1007493 -Node: POSIX/GNU1008227 -Node: Common Extensions1013828 -Node: Ranges and Locales1015134 -Ref: Ranges and Locales-Footnote-11019752 -Ref: Ranges and Locales-Footnote-21019779 -Ref: Ranges and Locales-Footnote-31020039 -Node: Contributors1020260 -Node: Installation1025335 -Node: Gawk Distribution1026229 -Node: Getting1026713 -Node: Extracting1027539 -Node: Distribution contents1029231 -Node: Unix Installation1034936 -Node: Quick Installation1035553 -Node: Additional Configuration Options1037997 -Node: Configuration Philosophy1039733 -Node: Non-Unix Installation1042087 -Node: PC Installation1042545 -Node: PC Binary Installation1043844 -Node: PC Compiling1045692 -Node: PC Testing1048636 -Node: PC Using1049812 -Node: Cygwin1053997 -Node: MSYS1054997 -Node: VMS Installation1055511 -Node: VMS Compilation1056275 -Ref: VMS Compilation-Footnote-11057890 -Node: VMS Dynamic Extensions1057948 -Node: VMS Installation Details1059321 -Node: VMS Running1061568 -Node: VMS GNV1064402 -Node: VMS Old Gawk1065125 -Node: Bugs1065595 -Node: Other Versions1069513 -Node: Notes1075597 -Node: Compatibility Mode1076397 -Node: Additions1077180 -Node: Accessing The Source1078107 -Node: Adding Code1079547 -Node: New Ports1085592 -Node: Derived Files1089727 -Ref: Derived Files-Footnote-11095048 -Ref: Derived Files-Footnote-21095082 -Ref: Derived Files-Footnote-31095682 -Node: Future Extensions1095780 -Node: Implementation Limitations1096363 -Node: Extension Design1097615 -Node: Old Extension Problems1098769 -Ref: Old Extension Problems-Footnote-11100277 -Node: Extension New Mechanism Goals1100334 -Ref: Extension New Mechanism Goals-Footnote-11103699 -Node: Extension Other Design Decisions1103885 -Node: Extension Future Growth1105991 -Node: Old Extension Mechanism1106827 -Node: Basic Concepts1108567 -Node: Basic High Level1109248 -Ref: figure-general-flow1109519 -Ref: figure-process-flow1110118 -Ref: Basic High Level-Footnote-11113347 -Node: Basic Data Typing1113532 -Node: Glossary1116887 -Node: Copying1142349 -Node: GNU Free Documentation License1179906 -Node: Index1205043 +Node: Foreword40856 +Node: Preface45201 +Ref: Preface-Footnote-148254 +Ref: Preface-Footnote-248350 +Node: History48582 +Node: Names50956 +Ref: Names-Footnote-152433 +Node: This Manual52505 +Ref: This Manual-Footnote-158279 +Node: Conventions58379 +Node: Manual History60535 +Ref: Manual History-Footnote-163983 +Ref: Manual History-Footnote-264024 +Node: How To Contribute64098 +Node: Acknowledgments65242 +Node: Getting Started69451 +Node: Running gawk71830 +Node: One-shot73016 +Node: Read Terminal74241 +Ref: Read Terminal-Footnote-175891 +Ref: Read Terminal-Footnote-276167 +Node: Long76338 +Node: Executable Scripts77714 +Ref: Executable Scripts-Footnote-179547 +Ref: Executable Scripts-Footnote-279649 +Node: Comments80196 +Node: Quoting82663 +Node: DOS Quoting87286 +Node: Sample Data Files87961 +Node: Very Simple91005 +Node: Two Rules95604 +Node: More Complex97751 +Ref: More Complex-Footnote-1100681 +Node: Statements/Lines100766 +Ref: Statements/Lines-Footnote-1105228 +Node: Other Features105493 +Node: When106421 +Node: Invoking Gawk108568 +Node: Command Line110029 +Node: Options110812 +Ref: Options-Footnote-1126204 +Node: Other Arguments126229 +Node: Naming Standard Input128887 +Node: Environment Variables129981 +Node: AWKPATH Variable130539 +Ref: AWKPATH Variable-Footnote-1133297 +Node: AWKLIBPATH Variable133557 +Node: Other Environment Variables134275 +Node: Exit Status137238 +Node: Include Files137913 +Node: Loading Shared Libraries141482 +Node: Obsolete142846 +Node: Undocumented143543 +Node: Regexp143785 +Node: Regexp Usage145174 +Node: Escape Sequences147200 +Node: Regexp Operators152869 +Ref: Regexp Operators-Footnote-1160249 +Ref: Regexp Operators-Footnote-2160396 +Node: Bracket Expressions160494 +Ref: table-char-classes162384 +Node: GNU Regexp Operators164907 +Node: Case-sensitivity168630 +Ref: Case-sensitivity-Footnote-1171598 +Ref: Case-sensitivity-Footnote-2171833 +Node: Leftmost Longest171941 +Node: Computed Regexps173142 +Node: Reading Files176479 +Node: Records178481 +Ref: Records-Footnote-1187370 +Node: Fields187407 +Ref: Fields-Footnote-1190440 +Node: Nonconstant Fields190526 +Node: Changing Fields192728 +Node: Field Separators198687 +Node: Default Field Splitting201389 +Node: Regexp Field Splitting202506 +Node: Single Character Fields205848 +Node: Command Line Field Separator206907 +Node: Full Line Fields210341 +Ref: Full Line Fields-Footnote-1210849 +Node: Field Splitting Summary210895 +Ref: Field Splitting Summary-Footnote-1213994 +Node: Constant Size214095 +Node: Splitting By Content218679 +Ref: Splitting By Content-Footnote-1222405 +Node: Multiple Line222445 +Ref: Multiple Line-Footnote-1228292 +Node: Getline228471 +Node: Plain Getline230687 +Node: Getline/Variable232782 +Node: Getline/File233929 +Node: Getline/Variable/File235270 +Ref: Getline/Variable/File-Footnote-1236869 +Node: Getline/Pipe236956 +Node: Getline/Variable/Pipe239655 +Node: Getline/Coprocess240762 +Node: Getline/Variable/Coprocess242014 +Node: Getline Notes242751 +Node: Getline Summary245538 +Ref: table-getline-variants245946 +Node: Read Timeout246858 +Ref: Read Timeout-Footnote-1250599 +Node: Command line directories250656 +Node: Printing251286 +Node: Print252917 +Node: Print Examples254254 +Node: Output Separators257038 +Node: OFMT258798 +Node: Printf260156 +Node: Basic Printf261062 +Node: Control Letters262601 +Node: Format Modifiers266413 +Node: Printf Examples272422 +Node: Redirection275137 +Node: Special Files282102 +Node: Special FD282635 +Ref: Special FD-Footnote-1286260 +Node: Special Network286334 +Node: Special Caveats287184 +Node: Close Files And Pipes287980 +Ref: Close Files And Pipes-Footnote-1294963 +Ref: Close Files And Pipes-Footnote-2295111 +Node: Expressions295261 +Node: Values296393 +Node: Constants297069 +Node: Scalar Constants297749 +Ref: Scalar Constants-Footnote-1298608 +Node: Nondecimal-numbers298790 +Node: Regexp Constants301790 +Node: Using Constant Regexps302265 +Node: Variables305320 +Node: Using Variables305975 +Node: Assignment Options307699 +Node: Conversion309571 +Ref: table-locale-affects315072 +Ref: Conversion-Footnote-1315696 +Node: All Operators315805 +Node: Arithmetic Ops316435 +Node: Concatenation318940 +Ref: Concatenation-Footnote-1321732 +Node: Assignment Ops321852 +Ref: table-assign-ops326840 +Node: Increment Ops328171 +Node: Truth Values and Conditions331605 +Node: Truth Values332688 +Node: Typing and Comparison333737 +Node: Variable Typing334530 +Ref: Variable Typing-Footnote-1338427 +Node: Comparison Operators338549 +Ref: table-relational-ops338959 +Node: POSIX String Comparison342508 +Ref: POSIX String Comparison-Footnote-1343464 +Node: Boolean Ops343602 +Ref: Boolean Ops-Footnote-1347680 +Node: Conditional Exp347771 +Node: Function Calls349503 +Node: Precedence353097 +Node: Locales356766 +Node: Patterns and Actions357855 +Node: Pattern Overview358909 +Node: Regexp Patterns360578 +Node: Expression Patterns361121 +Node: Ranges364806 +Node: BEGIN/END367772 +Node: Using BEGIN/END368534 +Ref: Using BEGIN/END-Footnote-1371265 +Node: I/O And BEGIN/END371371 +Node: BEGINFILE/ENDFILE373653 +Node: Empty376567 +Node: Using Shell Variables376883 +Node: Action Overview379168 +Node: Statements381525 +Node: If Statement383379 +Node: While Statement384878 +Node: Do Statement386922 +Node: For Statement388078 +Node: Switch Statement391230 +Node: Break Statement393327 +Node: Continue Statement395317 +Node: Next Statement397110 +Node: Nextfile Statement399500 +Node: Exit Statement402143 +Node: Built-in Variables404559 +Node: User-modified405654 +Ref: User-modified-Footnote-1414012 +Node: Auto-set414074 +Ref: Auto-set-Footnote-1427544 +Ref: Auto-set-Footnote-2427749 +Node: ARGC and ARGV427805 +Node: Arrays431656 +Node: Array Basics433161 +Node: Array Intro433987 +Node: Reference to Elements438304 +Node: Assigning Elements440574 +Node: Array Example441065 +Node: Scanning an Array442797 +Node: Controlling Scanning445111 +Ref: Controlling Scanning-Footnote-1450198 +Node: Delete450514 +Ref: Delete-Footnote-1453279 +Node: Numeric Array Subscripts453336 +Node: Uninitialized Subscripts455519 +Node: Multidimensional457146 +Node: Multiscanning460239 +Node: Arrays of Arrays461828 +Node: Functions466468 +Node: Built-in467287 +Node: Calling Built-in468365 +Node: Numeric Functions470353 +Ref: Numeric Functions-Footnote-1474185 +Ref: Numeric Functions-Footnote-2474542 +Ref: Numeric Functions-Footnote-3474590 +Node: String Functions474859 +Ref: String Functions-Footnote-1497779 +Ref: String Functions-Footnote-2497908 +Ref: String Functions-Footnote-3498156 +Node: Gory Details498243 +Ref: table-sub-escapes499922 +Ref: table-sub-posix-92501276 +Ref: table-sub-proposed502627 +Ref: table-posix-sub503981 +Ref: table-gensub-escapes505526 +Ref: Gory Details-Footnote-1506702 +Ref: Gory Details-Footnote-2506753 +Node: I/O Functions506904 +Ref: I/O Functions-Footnote-1513889 +Node: Time Functions514036 +Ref: Time Functions-Footnote-1524969 +Ref: Time Functions-Footnote-2525037 +Ref: Time Functions-Footnote-3525195 +Ref: Time Functions-Footnote-4525306 +Ref: Time Functions-Footnote-5525418 +Ref: Time Functions-Footnote-6525645 +Node: Bitwise Functions525911 +Ref: table-bitwise-ops526473 +Ref: Bitwise Functions-Footnote-1530694 +Node: Type Functions530878 +Node: I18N Functions532029 +Node: User-defined533656 +Node: Definition Syntax534460 +Ref: Definition Syntax-Footnote-1539370 +Node: Function Example539439 +Node: Function Caveats542033 +Node: Calling A Function542454 +Node: Variable Scope543569 +Node: Pass By Value/Reference546532 +Node: Return Statement550040 +Node: Dynamic Typing553021 +Node: Indirect Calls553952 +Node: Library Functions563637 +Ref: Library Functions-Footnote-1567150 +Ref: Library Functions-Footnote-2567293 +Node: Library Names567464 +Ref: Library Names-Footnote-1570935 +Ref: Library Names-Footnote-2571155 +Node: General Functions571241 +Node: Strtonum Function572269 +Node: Assert Function575199 +Node: Round Function578525 +Node: Cliff Random Function580068 +Node: Ordinal Functions581084 +Ref: Ordinal Functions-Footnote-1584154 +Ref: Ordinal Functions-Footnote-2584406 +Node: Join Function584615 +Ref: Join Function-Footnote-1586386 +Node: Getlocaltime Function586586 +Node: Readfile Function590327 +Node: Data File Management592166 +Node: Filetrans Function592798 +Node: Rewind Function596867 +Node: File Checking598254 +Node: Empty Files599348 +Node: Ignoring Assigns601578 +Node: Getopt Function603131 +Ref: Getopt Function-Footnote-1614434 +Node: Passwd Functions614637 +Ref: Passwd Functions-Footnote-1623612 +Node: Group Functions623700 +Node: Walking Arrays631784 +Node: Sample Programs633921 +Node: Running Examples634595 +Node: Clones635323 +Node: Cut Program636547 +Node: Egrep Program646392 +Ref: Egrep Program-Footnote-1654165 +Node: Id Program654275 +Node: Split Program657891 +Ref: Split Program-Footnote-1661410 +Node: Tee Program661538 +Node: Uniq Program664341 +Node: Wc Program671770 +Ref: Wc Program-Footnote-1676036 +Ref: Wc Program-Footnote-2676236 +Node: Miscellaneous Programs676328 +Node: Dupword Program677516 +Node: Alarm Program679547 +Node: Translate Program684300 +Ref: Translate Program-Footnote-1688687 +Ref: Translate Program-Footnote-2688935 +Node: Labels Program689069 +Ref: Labels Program-Footnote-1692440 +Node: Word Sorting692524 +Node: History Sorting696408 +Node: Extract Program698247 +Ref: Extract Program-Footnote-1705750 +Node: Simple Sed705878 +Node: Igawk Program708940 +Ref: Igawk Program-Footnote-1724097 +Ref: Igawk Program-Footnote-2724298 +Node: Anagram Program724436 +Node: Signature Program727504 +Node: Advanced Features728604 +Node: Nondecimal Data730490 +Node: Array Sorting732073 +Node: Controlling Array Traversal732770 +Node: Array Sorting Functions741054 +Ref: Array Sorting Functions-Footnote-1744923 +Node: Two-way I/O745117 +Ref: Two-way I/O-Footnote-1750549 +Node: TCP/IP Networking750619 +Node: Profiling753463 +Node: Internationalization760960 +Node: I18N and L10N762385 +Node: Explaining gettext763071 +Ref: Explaining gettext-Footnote-1768139 +Ref: Explaining gettext-Footnote-2768323 +Node: Programmer i18n768488 +Node: Translator i18n772690 +Node: String Extraction773483 +Ref: String Extraction-Footnote-1774444 +Node: Printf Ordering774530 +Ref: Printf Ordering-Footnote-1777314 +Node: I18N Portability777378 +Ref: I18N Portability-Footnote-1779827 +Node: I18N Example779890 +Ref: I18N Example-Footnote-1782528 +Node: Gawk I18N782600 +Node: Debugger783221 +Node: Debugging784192 +Node: Debugging Concepts784625 +Node: Debugging Terms786481 +Node: Awk Debugging789078 +Node: Sample Debugging Session789970 +Node: Debugger Invocation790490 +Node: Finding The Bug791822 +Node: List of Debugger Commands798310 +Node: Breakpoint Control799644 +Node: Debugger Execution Control803308 +Node: Viewing And Changing Data806668 +Node: Execution Stack810024 +Node: Debugger Info811491 +Node: Miscellaneous Debugger Commands815473 +Node: Readline Support820649 +Node: Limitations821480 +Node: Arbitrary Precision Arithmetic823732 +Ref: Arbitrary Precision Arithmetic-Footnote-1825381 +Node: General Arithmetic825529 +Node: Floating Point Issues827249 +Node: String Conversion Precision828130 +Ref: String Conversion Precision-Footnote-1829835 +Node: Unexpected Results829944 +Node: POSIX Floating Point Problems832097 +Ref: POSIX Floating Point Problems-Footnote-1835922 +Node: Integer Programming835960 +Node: Floating-point Programming837699 +Ref: Floating-point Programming-Footnote-1844030 +Ref: Floating-point Programming-Footnote-2844300 +Node: Floating-point Representation844564 +Node: Floating-point Context845729 +Ref: table-ieee-formats846568 +Node: Rounding Mode847952 +Ref: table-rounding-modes848431 +Ref: Rounding Mode-Footnote-1851446 +Node: Gawk and MPFR851625 +Node: Arbitrary Precision Floats852880 +Ref: Arbitrary Precision Floats-Footnote-1855323 +Node: Setting Precision855639 +Ref: table-predefined-precision-strings856325 +Node: Setting Rounding Mode858470 +Ref: table-gawk-rounding-modes858874 +Node: Floating-point Constants860061 +Node: Changing Precision861490 +Ref: Changing Precision-Footnote-1862887 +Node: Exact Arithmetic863061 +Node: Arbitrary Precision Integers866199 +Ref: Arbitrary Precision Integers-Footnote-1869217 +Node: Dynamic Extensions869364 +Node: Extension Intro870822 +Node: Plugin License872087 +Node: Extension Mechanism Outline872772 +Ref: load-extension873189 +Ref: load-new-function874667 +Ref: call-new-function875662 +Node: Extension API Description877677 +Node: Extension API Functions Introduction878890 +Node: General Data Types883756 +Ref: General Data Types-Footnote-1889361 +Node: Requesting Values889660 +Ref: table-value-types-returned890391 +Node: Constructor Functions891345 +Node: Registration Functions894365 +Node: Extension Functions895050 +Node: Exit Callback Functions897275 +Node: Extension Version String898524 +Node: Input Parsers899174 +Node: Output Wrappers908931 +Node: Two-way processors913441 +Node: Printing Messages915649 +Ref: Printing Messages-Footnote-1916726 +Node: Updating `ERRNO'916878 +Node: Accessing Parameters917617 +Node: Symbol Table Access918847 +Node: Symbol table by name919359 +Node: Symbol table by cookie921106 +Ref: Symbol table by cookie-Footnote-1925236 +Node: Cached values925299 +Ref: Cached values-Footnote-1928748 +Node: Array Manipulation928839 +Ref: Array Manipulation-Footnote-1929937 +Node: Array Data Types929976 +Ref: Array Data Types-Footnote-1932679 +Node: Array Functions932771 +Node: Flattening Arrays936537 +Node: Creating Arrays943389 +Node: Extension API Variables948114 +Node: Extension Versioning948750 +Node: Extension API Informational Variables950651 +Node: Extension API Boilerplate951737 +Node: Finding Extensions955541 +Node: Extension Example956101 +Node: Internal File Description956831 +Node: Internal File Ops960922 +Ref: Internal File Ops-Footnote-1972430 +Node: Using Internal File Ops972570 +Ref: Using Internal File Ops-Footnote-1974923 +Node: Extension Samples975189 +Node: Extension Sample File Functions976713 +Node: Extension Sample Fnmatch985198 +Node: Extension Sample Fork986924 +Node: Extension Sample Inplace988142 +Node: Extension Sample Ord989920 +Node: Extension Sample Readdir990756 +Node: Extension Sample Revout992288 +Node: Extension Sample Rev2way992881 +Node: Extension Sample Read write array993571 +Node: Extension Sample Readfile995454 +Node: Extension Sample API Tests996272 +Node: Extension Sample Time996797 +Node: gawkextlib998161 +Node: Language History1000942 +Node: V7/SVR3.11002535 +Node: SVR41004855 +Node: POSIX1006297 +Node: BTL1007683 +Node: POSIX/GNU1008417 +Node: Feature History1014016 +Node: Common Extensions1026980 +Node: Ranges and Locales1028292 +Ref: Ranges and Locales-Footnote-11032910 +Ref: Ranges and Locales-Footnote-21032937 +Ref: Ranges and Locales-Footnote-31033197 +Node: Contributors1033418 +Node: Installation1038493 +Node: Gawk Distribution1039387 +Node: Getting1039871 +Node: Extracting1040697 +Node: Distribution contents1042389 +Node: Unix Installation1048094 +Node: Quick Installation1048711 +Node: Additional Configuration Options1051155 +Node: Configuration Philosophy1052891 +Node: Non-Unix Installation1055245 +Node: PC Installation1055703 +Node: PC Binary Installation1057002 +Node: PC Compiling1058850 +Node: PC Testing1061794 +Node: PC Using1062970 +Node: Cygwin1067155 +Node: MSYS1068155 +Node: VMS Installation1068669 +Node: VMS Compilation1069433 +Ref: VMS Compilation-Footnote-11071048 +Node: VMS Dynamic Extensions1071106 +Node: VMS Installation Details1072479 +Node: VMS Running1074726 +Node: VMS GNV1077560 +Node: VMS Old Gawk1078283 +Node: Bugs1078753 +Node: Other Versions1082671 +Node: Notes1088755 +Node: Compatibility Mode1089555 +Node: Additions1090338 +Node: Accessing The Source1091265 +Node: Adding Code1092705 +Node: New Ports1098750 +Node: Derived Files1102885 +Ref: Derived Files-Footnote-11108206 +Ref: Derived Files-Footnote-21108240 +Ref: Derived Files-Footnote-31108840 +Node: Future Extensions1108938 +Node: Implementation Limitations1109521 +Node: Extension Design1110773 +Node: Old Extension Problems1111927 +Ref: Old Extension Problems-Footnote-11113435 +Node: Extension New Mechanism Goals1113492 +Ref: Extension New Mechanism Goals-Footnote-11116857 +Node: Extension Other Design Decisions1117043 +Node: Extension Future Growth1119149 +Node: Old Extension Mechanism1119985 +Node: Basic Concepts1121725 +Node: Basic High Level1122406 +Ref: figure-general-flow1122677 +Ref: figure-process-flow1123276 +Ref: Basic High Level-Footnote-11126505 +Node: Basic Data Typing1126690 +Node: Glossary1130045 +Node: Copying1155507 +Node: GNU Free Documentation License1193064 +Node: Index1218201 End Tag Table diff --git a/doc/gawk.texi b/doc/gawk.texi index 8166dd62..00a1d70f 100644 --- a/doc/gawk.texi +++ b/doc/gawk.texi @@ -402,7 +402,8 @@ particular records in a file and perform operations upon them. field. * Command Line Field Separator:: Setting @code{FS} from the command-line. -* Full Line Fields:: Making the full line be a single field. +* Full Line Fields:: Making the full line be a single + field. * Field Splitting Summary:: Some final points and a summary table. * Constant Size:: Reading constant width data. * Splitting By Content:: Defining Fields By Content @@ -792,6 +793,7 @@ particular records in a file and perform operations upon them. version of @command{awk}. * POSIX/GNU:: The extensions in @command{gawk} not in POSIX @command{awk}. +* Feature History:: The history of the features in @command{gawk}. * Common Extensions:: Common Extensions Summary. * Ranges and Locales:: How locales used to affect regexp ranges. @@ -33033,6 +33035,7 @@ of the @value{DOCUMENT} where you can find more information. @command{awk}. * POSIX/GNU:: The extensions in @command{gawk} not in POSIX @command{awk}. +* Feature History:: The history of the features in @command{gawk}. * Common Extensions:: Common Extensions Summary. * Ranges and Locales:: How locales used to affect regexp ranges. * Contributors:: The major contributors to @command{gawk}. @@ -33611,6 +33614,612 @@ GCC for VAX and Alpha has not been tested for a while. @c ENDOFRANGE exgnot @c ENDOFRANGE posnot +@node Feature History +@appendixsec History of @command{gawk} Features + +@ignore +See the thread: +https://groups.google.com/forum/#!topic/comp.lang.awk/SAUiRuff30c +This motivated me to add this section. +@end ignore + +@ignore +I've tried to follow this general order, esp.@: for the 3.0 and 3.1 sections: + variables + special files + language changes (e.g., hex constants) + differences in standard awk functions + new gawk functions + new keywords + new command-line options + behavioral changes + new ports +Within each category, be alphabetical. +@end ignore + +This @value{SECTION} describes the features in @command{gawk} +over and above those in POSIX @command{awk}, +in the order they were added to @command{gawk}. + +Version 2.10 of @command{gawk} introduced the following features: + +@itemize @bullet +@item +The @env{AWKPATH} environment variable for specifying a path search for +the @option{-f} command-line option +(@pxref{Options}). + +@item +The @code{IGNORECASE} variable and its effects +(@pxref{Case-sensitivity}). + +@item +The @file{/dev/stdin}, @file{/dev/stdout}, @file{/dev/stderr} and +@file{/dev/fd/@var{N}} special file names +(@pxref{Special Files}). +@end itemize + +Version 2.13 of @command{gawk} introduced the following features: + +@itemize @bullet +@item +The @code{FIELDWIDTHS} variable and its effects +(@pxref{Constant Size}). + +@item +The @code{systime()} and @code{strftime()} built-in functions for obtaining +and printing timestamps +(@pxref{Time Functions}). + +@item +Additional command-line options +(@pxref{Options}): + +@itemize @minus +@item +The @option{-W lint} option to provide error and portability checking +for both the source code and at runtime. + +@item +The @option{-W compat} option to turn off the GNU extensions. + +@item +The @option{-W posix} option for full POSIX compliance. +@end itemize +@end itemize + +Version 2.14 of @command{gawk} introduced the following feature: + +@itemize @bullet +@item +The @code{next file} statement for skipping to the next data file +(@pxref{Nextfile Statement}). +@end itemize + +Version 2.15 of @command{gawk} introduced the following features: + +@itemize @bullet +@item +New variables (@pxref{Built-in Variables}): + +@itemize @minus +@item +@code{ARGIND}, which tracks the movement of @code{FILENAME} +through @code{ARGV}. + +@item +@code{ERRNO}, which contains the system error message when +@code{getline} returns @minus{}1 or @code{close()} fails. +@end itemize + +@item +The @file{/dev/pid}, @file{/dev/ppid}, @file{/dev/pgrpid}, and +@file{/dev/user} special file names. These have since been removed. + +@item +The ability to delete all of an array at once with @samp{delete @var{array}} +(@pxref{Delete}). + +@item +Command line option changes +(@pxref{Options}): + +@itemize @minus +@item +The ability to use GNU-style long-named options that start with @option{--}. + +@item +The @option{--source} option for mixing command-line and library-file +source code. +@end itemize +@end itemize + +Version 3.0 of @command{gawk} introduced the following features: + +@itemize @bullet +@item +New or changed variables: + +@itemize @minus +@item +@code{IGNORECASE} changed, now applying to string comparison as well +as regexp operations +(@pxref{Case-sensitivity}). + +@item +@code{RT}, which contains the input text that matched @code{RS} +(@pxref{Records}). +@end itemize + +@item +Full support for both POSIX and GNU regexps +(@pxref{Regexp}). + +@item +The @code{gensub()} function for more powerful text manipulation +(@pxref{String Functions}). + +@item +The @code{strftime()} function acquired a default time format, +allowing it to be called with no arguments +(@pxref{Time Functions}). + +@item +The ability for @code{FS} and for the third +argument to @code{split()} to be null strings +(@pxref{Single Character Fields}). + +@item +The ability for @code{RS} to be a regexp +(@pxref{Records}). + +@item +The @code{next file} statement became @code{nextfile} +(@pxref{Nextfile Statement}). + +@item +The @code{fflush()} function from the +Bell Laboratories research version of @command{awk} +(@pxref{I/O Functions}). + +@item +New command line options: + +@itemize @minus +@item +The @option{--lint-old} option to +warn about constructs that are not available in +the original Version 7 Unix version of @command{awk} +(@pxref{V7/SVR3.1}). + +@item +The @option{-m} option from the +Bell Laboratories research version of @command{awk} +This was later removed. + +@item +The @option{--re-interval} option to provide interval expressions in regexps +(@pxref{Regexp Operators}). + +@item +The @option{--traditional} option was added as a better name for +@option{--compat} (@pxref{Options}). +@end itemize + +@item +The use of GNU Autoconf to control the configuration process +(@pxref{Quick Installation}). + +@item +Amiga support. + +@end itemize + +Version 3.1 of @command{gawk} introduced the following features: + +@itemize @bullet +@item +New variables +(@pxref{Built-in Variables}): + +@itemize @minus +@item +@code{BINMODE}, for non-POSIX systems, +which allows binary I/O for input and/or output files +(@pxref{PC Using}). + +@item +@code{LINT}, which dynamically controls lint warnings. + +@item +@code{PROCINFO}, an array for providing process-related information. + +@item +@code{TEXTDOMAIN}, for setting an application's internationalization text domain +(@pxref{Internationalization}). +@end itemize + +@item +The ability to use octal and hexadecimal constants in @command{awk} +program source code +(@pxref{Nondecimal-numbers}). + +@item +The @samp{|&} operator for two-way I/O to a coprocess +(@pxref{Two-way I/O}). + +@item +The @file{/inet} special files for TCP/IP networking using @samp{|&} +(@pxref{TCP/IP Networking}). + +@item +The optional second argument to @code{close()} that allows closing one end +of a two-way pipe to a coprocess +(@pxref{Two-way I/O}). + +@item +The optional third argument to the @code{match()} function +for capturing text-matching subexpressions within a regexp +(@pxref{String Functions}). + +@item +Positional specifiers in @code{printf} formats for +making translations easier +(@pxref{Printf Ordering}). + +@item +A number of new built-in functions: + +@itemize @minus +@item +The @code{asort()} and @code{asorti()} functions for sorting arrays +(@pxref{Array Sorting}). + +@item +The @code{bindtextdomain()}, @code{dcgettext()} and @code{dcngettext()} functions +for internationalization +(@pxref{Programmer i18n}). + +@item +The @code{extension()} function and the ability to add +new built-in functions dynamically +(@pxref{Dynamic Extensions}). + +@item +The @code{mktime()} function for creating timestamps +(@pxref{Time Functions}). + +@item +The @code{and()}, @code{or()}, @code{xor()}, @code{compl()}, +@code{lshift()}, @code{rshift()}, and @code{strtonum()} functions +(@pxref{Bitwise Functions}). +@end itemize + +@item +@cindex @code{next file} statement +The support for @samp{next file} as two words was removed completely +(@pxref{Nextfile Statement}). + +@item +Additional commnd line options +(@pxref{Options}): + +@itemize @minus +@item +The @option{--dump-variables} option to print a list of all global variables. + +@item +The @option{--exec} option, for use in CGI scripts. + +@item +The @option{--gen-po} command-line option and the use of a leading +underscore to mark strings that should be translated +(@pxref{String Extraction}). + +@item +The @option{--non-decimal-data} option to allow non-decimal +input data +(@pxref{Nondecimal Data}). + +@item +The @option{--profile} option and @command{pgawk}, the +profiling version of @command{gawk}, for producing execution +profiles of @command{awk} programs +(@pxref{Profiling}). + +@item +The @option{--use-lc-numeric} option to force @command{gawk} +to use the locale's decimal point for parsing input data +(@pxref{Conversion}). +@end itemize + +@item +The use of GNU Automake to help in standardizing the configuration process +(@pxref{Quick Installation}). + +@item +The use of GNU @code{gettext} for @command{gawk}'s own message output +(@pxref{Gawk I18N}). + +@item +BeOS support. This was later removed. + +@item +Tandem support. This was later removed. + +@item +The Atari port became officially unsupported. + +@item +The source code changed to use ISO C standard-style function definitions. + +@item +POSIX compliance for @code{sub()} and @code{gsub()} +(@pxref{Gory Details}). + +@item +The @code{length()} function was extended to accept an array argument +and return the number of elements in the array +(@pxref{String Functions}). + +@item +The @code{strftime()} function acquired a third argument to +enable printing times as UTC +(@pxref{Time Functions}). +@end itemize + +Version 4.0 of @command{gawk} introduced the following features: + +@itemize @bullet + +@item +Variable additions: + +@itemize @minus +@item +@code{FPAT}, which allows you to specify a regexp that matches +the fields, instead of matching the field separator +(@pxref{Splitting By Content}). + +@item +If @code{PROCINFO["sorted_in"]} exists, @samp{for(iggy in foo)} loops sort the +indices before looping over them. The value of this element +provides control over how the indices are sorted before the loop +traversal starts +(@pxref{Controlling Scanning}). + +@item +@code{PROCINFO["strftime"]}, which holds +the default format for @code{strftime()} +(@pxref{Time Functions}). +@end itemize + +@item +The special files @file{/dev/pid}, @file{/dev/ppid}, @file{/dev/pgrpid} +and @file{/dev/user} were removed. + +@item +Support for IPv6 was added via the @file{/inet6} special file. +@file{/inet4} forces IPv4 and @file{/inet} chooses the system +default, which is probably IPv4 +(@pxref{TCP/IP Networking}). + +@item +The use of @samp{\s} and @samp{\S} escape sequences in regular expressions +(@pxref{GNU Regexp Operators}). + +@item +Interval expressions became part of default regular expressions +(@pxref{Regexp Operators}). + +@item +POSIX character classes work even with @option{--traditional} +(@pxref{Regexp Operators}). + +@item +@code{break} and @code{continue} became invalid outside a loop, +even with @option{--traditional} +(@pxref{Break Statement}, and also see +@ref{Continue Statement}). + +@item +@code{fflush()}, @code{nextfile}, and @samp{delete @var{array}} +are allowed if @option{--posix} or @option{--traditional}, since they +are all now part of POSIX. + +@item +An optional third argument to +@code{asort()} and @code{asorti()}, specifying how to sort +(@pxref{String Functions}). + +@item +The behavior of @code{fflush()} changed to match Brian Kernighan's @command{awk} +and for POSIX; now both @samp{fflush()} and @samp{fflush("")} +flush all open output redirections +(@pxref{I/O Functions}). + +@item +The @code{isarray()} +function which distinguishes if an item is an array +or not, to make it possible to traverse multidimensional arrays +(@pxref{Type Functions}). + +@item +The @code{patsplit()} +function which gives the same capability as @code{FPAT}, for splitting +(@pxref{String Functions}). + +@item +An optional fourth argument to the @code{split()} function, +which is an array to hold the values of the separators +(@pxref{String Functions}). + +@item +Arrays of arrays +(@pxref{Arrays of Arrays}). + +@item +The @code{BEGINFILE} and @code{ENDFILE} special patterns +(@pxref{BEGINFILE/ENDFILE}). + +@item +Indirect function calls +(@pxref{Indirect Calls}). + +@item +@code{switch} / @code{case} are enabled by default +(@pxref{Switch Statement}). + +@item +Command line option changes +(@pxref{Options}): + +@itemize @minus +@item +The @option{-b} and @option{--characters-as-bytes} options +which prevent @command{gawk} from treating input as a multibyte string. + +@item +The redundant @option{--compat}, @option{--copyleft}, and @option{--usage} +long options were removed. + +@item +The @option{--gen-po} option was finally renamed to the correct @option{--gen-pot}. + +@item +The @option{--sandbox} option which disables certain features. + +@item +All long options acquired corresponding short options, for use in @samp{#!} scripts. +@end itemize + +@item +Directories named on the command line now produce a warning, not a fatal +error, unless @option{--posix} or @option{--traditional} are used +(@pxref{Command line directories}). + +@item +The @command{gawk} internals were rewritten, bringing the @command{dgawk} +debugger and possibly improved performance +(@pxref{Debugger}). + +@item +Per the GNU Coding Standards, dynamic extensions must now define +a global symbol indicating that they are GPL-compatible +(@pxref{Plugin License}). + +@item +In POSIX mode, string comparisons use @code{strcoll()} / @code{wcscoll()} +(@pxref{POSIX String Comparison}). + +@item +The option for raw sockets was removed, since it was never implemented +(@pxref{TCP/IP Networking}). + +@item +Ranges of the form @code{[d-h]} are treated as if they were in the +C locale, no matter what kind of regexp is being used, and even if +@option{--posix} +(@pxref{Ranges and Locales}). + +@item +Support was removed for the following systems: + +@itemize @minus +@item +Atari + +@item +Amiga + +@item +BeOS + +@item +Cray + +@item +MIPS RiscOS + +@item +MS-DOS with Microsoft Compiler + +@item +MS-Windows with Microsoft Compiler + +@item +NeXT + +@item +SunOS 3.x, Sun 386 (Road Runner) + +@item +Tandem (non-POSIX) + +@item +Prestandard VAX C compiler for VAX/VMS +@end itemize +@end itemize + +Version 4.1 of @command{gawk} introduced the following features: + +@itemize @bullet + +@item +Three new arrays: +@code{SYMTAB}, @code{FUNCTAB}, and @code{PROCINFO["identifiers"]} +(@pxref{Auto-set}). + +@item +The three executables @command{gawk}, @command{pgawk}, and @command{dgawk}, were merged into +one, named just @command{gawk}. As a result the command line options changed. + +@item +Command line option changes +(@pxref{Options}): + +@itemize @minus +@item +The @option{-D} option invokes the debugger. + +@item +The @option{-i} and @option{--include} options +load @command{awk} library files. + +@item +The @option{-l} and @option{--load} options for load compiled dynamic extensions. + +@item +The @option{-M} and @option{--bignum} options enable MPFR. + +@item +The @option{-o} only does pretty-printing. + +@item +The @option{-p} option is used for profiling. + +@item +The @option{-R} option was removed. +@end itemize + +@item +Support for high precision arithmetic with MPFR. +(@pxref{Gawk and MPFR}). + +@item +The @code{and()}, @code{or()} and @code{xor()} functions +allow any number of arguments, +with a minimum of two +(@pxref{Bitwise Functions}). + +@item +The dynamic extension interface was completely redone +(@pxref{Dynamic Extensions}). + +@end itemize + +@c XXX ADD MORE STUFF HERE + @node Common Extensions @appendixsec Common Extensions Summary @@ -33626,7 +34235,7 @@ the three most widely-used freely available versions of @command{awk} @item @samp{\x} Escape sequence @tab X @tab X @tab X @item @code{RS} as regexp @tab @tab X @tab X @item @code{FS} as null string @tab X @tab X @tab X -@item @file{/dev/stdin} special file @tab X @tab @tab X +@item @file{/dev/stdin} special file @tab X @tab X @tab X @item @file{/dev/stdout} special file @tab X @tab X @tab X @item @file{/dev/stderr} special file @tab X @tab X @tab X @item @code{**} and @code{**=} operators @tab X @tab @tab X @@ -33634,7 +34243,7 @@ the three most widely-used freely available versions of @command{awk} @item @code{func} keyword @tab X @tab @tab X @item @code{nextfile} statement @tab X @tab X @tab X @item @code{delete} without subscript @tab X @tab X @tab X -@item @code{length()} of an array @tab X @tab @tab X +@item @code{length()} of an array @tab X @tab X @tab X @item @code{BINMODE} variable @tab @tab X @tab X @item Time related functions @tab @tab X @tab X @end multitable diff --git a/doc/gawktexi.in b/doc/gawktexi.in index da66a133..2835b6cf 100644 --- a/doc/gawktexi.in +++ b/doc/gawktexi.in @@ -397,7 +397,8 @@ particular records in a file and perform operations upon them. field. * Command Line Field Separator:: Setting @code{FS} from the command-line. -* Full Line Fields:: Making the full line be a single field. +* Full Line Fields:: Making the full line be a single + field. * Field Splitting Summary:: Some final points and a summary table. * Constant Size:: Reading constant width data. * Splitting By Content:: Defining Fields By Content @@ -787,6 +788,7 @@ particular records in a file and perform operations upon them. version of @command{awk}. * POSIX/GNU:: The extensions in @command{gawk} not in POSIX @command{awk}. +* Feature History:: The history of the features in @command{gawk}. * Common Extensions:: Common Extensions Summary. * Ranges and Locales:: How locales used to affect regexp ranges. @@ -32182,6 +32184,7 @@ of the @value{DOCUMENT} where you can find more information. @command{awk}. * POSIX/GNU:: The extensions in @command{gawk} not in POSIX @command{awk}. +* Feature History:: The history of the features in @command{gawk}. * Common Extensions:: Common Extensions Summary. * Ranges and Locales:: How locales used to affect regexp ranges. * Contributors:: The major contributors to @command{gawk}. @@ -32760,6 +32763,612 @@ GCC for VAX and Alpha has not been tested for a while. @c ENDOFRANGE exgnot @c ENDOFRANGE posnot +@node Feature History +@appendixsec History of @command{gawk} Features + +@ignore +See the thread: +https://groups.google.com/forum/#!topic/comp.lang.awk/SAUiRuff30c +This motivated me to add this section. +@end ignore + +@ignore +I've tried to follow this general order, esp.@: for the 3.0 and 3.1 sections: + variables + special files + language changes (e.g., hex constants) + differences in standard awk functions + new gawk functions + new keywords + new command-line options + behavioral changes + new ports +Within each category, be alphabetical. +@end ignore + +This @value{SECTION} describes the features in @command{gawk} +over and above those in POSIX @command{awk}, +in the order they were added to @command{gawk}. + +Version 2.10 of @command{gawk} introduced the following features: + +@itemize @bullet +@item +The @env{AWKPATH} environment variable for specifying a path search for +the @option{-f} command-line option +(@pxref{Options}). + +@item +The @code{IGNORECASE} variable and its effects +(@pxref{Case-sensitivity}). + +@item +The @file{/dev/stdin}, @file{/dev/stdout}, @file{/dev/stderr} and +@file{/dev/fd/@var{N}} special file names +(@pxref{Special Files}). +@end itemize + +Version 2.13 of @command{gawk} introduced the following features: + +@itemize @bullet +@item +The @code{FIELDWIDTHS} variable and its effects +(@pxref{Constant Size}). + +@item +The @code{systime()} and @code{strftime()} built-in functions for obtaining +and printing timestamps +(@pxref{Time Functions}). + +@item +Additional command-line options +(@pxref{Options}): + +@itemize @minus +@item +The @option{-W lint} option to provide error and portability checking +for both the source code and at runtime. + +@item +The @option{-W compat} option to turn off the GNU extensions. + +@item +The @option{-W posix} option for full POSIX compliance. +@end itemize +@end itemize + +Version 2.14 of @command{gawk} introduced the following feature: + +@itemize @bullet +@item +The @code{next file} statement for skipping to the next data file +(@pxref{Nextfile Statement}). +@end itemize + +Version 2.15 of @command{gawk} introduced the following features: + +@itemize @bullet +@item +New variables (@pxref{Built-in Variables}): + +@itemize @minus +@item +@code{ARGIND}, which tracks the movement of @code{FILENAME} +through @code{ARGV}. + +@item +@code{ERRNO}, which contains the system error message when +@code{getline} returns @minus{}1 or @code{close()} fails. +@end itemize + +@item +The @file{/dev/pid}, @file{/dev/ppid}, @file{/dev/pgrpid}, and +@file{/dev/user} special file names. These have since been removed. + +@item +The ability to delete all of an array at once with @samp{delete @var{array}} +(@pxref{Delete}). + +@item +Command line option changes +(@pxref{Options}): + +@itemize @minus +@item +The ability to use GNU-style long-named options that start with @option{--}. + +@item +The @option{--source} option for mixing command-line and library-file +source code. +@end itemize +@end itemize + +Version 3.0 of @command{gawk} introduced the following features: + +@itemize @bullet +@item +New or changed variables: + +@itemize @minus +@item +@code{IGNORECASE} changed, now applying to string comparison as well +as regexp operations +(@pxref{Case-sensitivity}). + +@item +@code{RT}, which contains the input text that matched @code{RS} +(@pxref{Records}). +@end itemize + +@item +Full support for both POSIX and GNU regexps +(@pxref{Regexp}). + +@item +The @code{gensub()} function for more powerful text manipulation +(@pxref{String Functions}). + +@item +The @code{strftime()} function acquired a default time format, +allowing it to be called with no arguments +(@pxref{Time Functions}). + +@item +The ability for @code{FS} and for the third +argument to @code{split()} to be null strings +(@pxref{Single Character Fields}). + +@item +The ability for @code{RS} to be a regexp +(@pxref{Records}). + +@item +The @code{next file} statement became @code{nextfile} +(@pxref{Nextfile Statement}). + +@item +The @code{fflush()} function from the +Bell Laboratories research version of @command{awk} +(@pxref{I/O Functions}). + +@item +New command line options: + +@itemize @minus +@item +The @option{--lint-old} option to +warn about constructs that are not available in +the original Version 7 Unix version of @command{awk} +(@pxref{V7/SVR3.1}). + +@item +The @option{-m} option from the +Bell Laboratories research version of @command{awk} +This was later removed. + +@item +The @option{--re-interval} option to provide interval expressions in regexps +(@pxref{Regexp Operators}). + +@item +The @option{--traditional} option was added as a better name for +@option{--compat} (@pxref{Options}). +@end itemize + +@item +The use of GNU Autoconf to control the configuration process +(@pxref{Quick Installation}). + +@item +Amiga support. + +@end itemize + +Version 3.1 of @command{gawk} introduced the following features: + +@itemize @bullet +@item +New variables +(@pxref{Built-in Variables}): + +@itemize @minus +@item +@code{BINMODE}, for non-POSIX systems, +which allows binary I/O for input and/or output files +(@pxref{PC Using}). + +@item +@code{LINT}, which dynamically controls lint warnings. + +@item +@code{PROCINFO}, an array for providing process-related information. + +@item +@code{TEXTDOMAIN}, for setting an application's internationalization text domain +(@pxref{Internationalization}). +@end itemize + +@item +The ability to use octal and hexadecimal constants in @command{awk} +program source code +(@pxref{Nondecimal-numbers}). + +@item +The @samp{|&} operator for two-way I/O to a coprocess +(@pxref{Two-way I/O}). + +@item +The @file{/inet} special files for TCP/IP networking using @samp{|&} +(@pxref{TCP/IP Networking}). + +@item +The optional second argument to @code{close()} that allows closing one end +of a two-way pipe to a coprocess +(@pxref{Two-way I/O}). + +@item +The optional third argument to the @code{match()} function +for capturing text-matching subexpressions within a regexp +(@pxref{String Functions}). + +@item +Positional specifiers in @code{printf} formats for +making translations easier +(@pxref{Printf Ordering}). + +@item +A number of new built-in functions: + +@itemize @minus +@item +The @code{asort()} and @code{asorti()} functions for sorting arrays +(@pxref{Array Sorting}). + +@item +The @code{bindtextdomain()}, @code{dcgettext()} and @code{dcngettext()} functions +for internationalization +(@pxref{Programmer i18n}). + +@item +The @code{extension()} function and the ability to add +new built-in functions dynamically +(@pxref{Dynamic Extensions}). + +@item +The @code{mktime()} function for creating timestamps +(@pxref{Time Functions}). + +@item +The @code{and()}, @code{or()}, @code{xor()}, @code{compl()}, +@code{lshift()}, @code{rshift()}, and @code{strtonum()} functions +(@pxref{Bitwise Functions}). +@end itemize + +@item +@cindex @code{next file} statement +The support for @samp{next file} as two words was removed completely +(@pxref{Nextfile Statement}). + +@item +Additional commnd line options +(@pxref{Options}): + +@itemize @minus +@item +The @option{--dump-variables} option to print a list of all global variables. + +@item +The @option{--exec} option, for use in CGI scripts. + +@item +The @option{--gen-po} command-line option and the use of a leading +underscore to mark strings that should be translated +(@pxref{String Extraction}). + +@item +The @option{--non-decimal-data} option to allow non-decimal +input data +(@pxref{Nondecimal Data}). + +@item +The @option{--profile} option and @command{pgawk}, the +profiling version of @command{gawk}, for producing execution +profiles of @command{awk} programs +(@pxref{Profiling}). + +@item +The @option{--use-lc-numeric} option to force @command{gawk} +to use the locale's decimal point for parsing input data +(@pxref{Conversion}). +@end itemize + +@item +The use of GNU Automake to help in standardizing the configuration process +(@pxref{Quick Installation}). + +@item +The use of GNU @code{gettext} for @command{gawk}'s own message output +(@pxref{Gawk I18N}). + +@item +BeOS support. This was later removed. + +@item +Tandem support. This was later removed. + +@item +The Atari port became officially unsupported. + +@item +The source code changed to use ISO C standard-style function definitions. + +@item +POSIX compliance for @code{sub()} and @code{gsub()} +(@pxref{Gory Details}). + +@item +The @code{length()} function was extended to accept an array argument +and return the number of elements in the array +(@pxref{String Functions}). + +@item +The @code{strftime()} function acquired a third argument to +enable printing times as UTC +(@pxref{Time Functions}). +@end itemize + +Version 4.0 of @command{gawk} introduced the following features: + +@itemize @bullet + +@item +Variable additions: + +@itemize @minus +@item +@code{FPAT}, which allows you to specify a regexp that matches +the fields, instead of matching the field separator +(@pxref{Splitting By Content}). + +@item +If @code{PROCINFO["sorted_in"]} exists, @samp{for(iggy in foo)} loops sort the +indices before looping over them. The value of this element +provides control over how the indices are sorted before the loop +traversal starts +(@pxref{Controlling Scanning}). + +@item +@code{PROCINFO["strftime"]}, which holds +the default format for @code{strftime()} +(@pxref{Time Functions}). +@end itemize + +@item +The special files @file{/dev/pid}, @file{/dev/ppid}, @file{/dev/pgrpid} +and @file{/dev/user} were removed. + +@item +Support for IPv6 was added via the @file{/inet6} special file. +@file{/inet4} forces IPv4 and @file{/inet} chooses the system +default, which is probably IPv4 +(@pxref{TCP/IP Networking}). + +@item +The use of @samp{\s} and @samp{\S} escape sequences in regular expressions +(@pxref{GNU Regexp Operators}). + +@item +Interval expressions became part of default regular expressions +(@pxref{Regexp Operators}). + +@item +POSIX character classes work even with @option{--traditional} +(@pxref{Regexp Operators}). + +@item +@code{break} and @code{continue} became invalid outside a loop, +even with @option{--traditional} +(@pxref{Break Statement}, and also see +@ref{Continue Statement}). + +@item +@code{fflush()}, @code{nextfile}, and @samp{delete @var{array}} +are allowed if @option{--posix} or @option{--traditional}, since they +are all now part of POSIX. + +@item +An optional third argument to +@code{asort()} and @code{asorti()}, specifying how to sort +(@pxref{String Functions}). + +@item +The behavior of @code{fflush()} changed to match Brian Kernighan's @command{awk} +and for POSIX; now both @samp{fflush()} and @samp{fflush("")} +flush all open output redirections +(@pxref{I/O Functions}). + +@item +The @code{isarray()} +function which distinguishes if an item is an array +or not, to make it possible to traverse multidimensional arrays +(@pxref{Type Functions}). + +@item +The @code{patsplit()} +function which gives the same capability as @code{FPAT}, for splitting +(@pxref{String Functions}). + +@item +An optional fourth argument to the @code{split()} function, +which is an array to hold the values of the separators +(@pxref{String Functions}). + +@item +Arrays of arrays +(@pxref{Arrays of Arrays}). + +@item +The @code{BEGINFILE} and @code{ENDFILE} special patterns +(@pxref{BEGINFILE/ENDFILE}). + +@item +Indirect function calls +(@pxref{Indirect Calls}). + +@item +@code{switch} / @code{case} are enabled by default +(@pxref{Switch Statement}). + +@item +Command line option changes +(@pxref{Options}): + +@itemize @minus +@item +The @option{-b} and @option{--characters-as-bytes} options +which prevent @command{gawk} from treating input as a multibyte string. + +@item +The redundant @option{--compat}, @option{--copyleft}, and @option{--usage} +long options were removed. + +@item +The @option{--gen-po} option was finally renamed to the correct @option{--gen-pot}. + +@item +The @option{--sandbox} option which disables certain features. + +@item +All long options acquired corresponding short options, for use in @samp{#!} scripts. +@end itemize + +@item +Directories named on the command line now produce a warning, not a fatal +error, unless @option{--posix} or @option{--traditional} are used +(@pxref{Command line directories}). + +@item +The @command{gawk} internals were rewritten, bringing the @command{dgawk} +debugger and possibly improved performance +(@pxref{Debugger}). + +@item +Per the GNU Coding Standards, dynamic extensions must now define +a global symbol indicating that they are GPL-compatible +(@pxref{Plugin License}). + +@item +In POSIX mode, string comparisons use @code{strcoll()} / @code{wcscoll()} +(@pxref{POSIX String Comparison}). + +@item +The option for raw sockets was removed, since it was never implemented +(@pxref{TCP/IP Networking}). + +@item +Ranges of the form @code{[d-h]} are treated as if they were in the +C locale, no matter what kind of regexp is being used, and even if +@option{--posix} +(@pxref{Ranges and Locales}). + +@item +Support was removed for the following systems: + +@itemize @minus +@item +Atari + +@item +Amiga + +@item +BeOS + +@item +Cray + +@item +MIPS RiscOS + +@item +MS-DOS with Microsoft Compiler + +@item +MS-Windows with Microsoft Compiler + +@item +NeXT + +@item +SunOS 3.x, Sun 386 (Road Runner) + +@item +Tandem (non-POSIX) + +@item +Prestandard VAX C compiler for VAX/VMS +@end itemize +@end itemize + +Version 4.1 of @command{gawk} introduced the following features: + +@itemize @bullet + +@item +Three new arrays: +@code{SYMTAB}, @code{FUNCTAB}, and @code{PROCINFO["identifiers"]} +(@pxref{Auto-set}). + +@item +The three executables @command{gawk}, @command{pgawk}, and @command{dgawk}, were merged into +one, named just @command{gawk}. As a result the command line options changed. + +@item +Command line option changes +(@pxref{Options}): + +@itemize @minus +@item +The @option{-D} option invokes the debugger. + +@item +The @option{-i} and @option{--include} options +load @command{awk} library files. + +@item +The @option{-l} and @option{--load} options for load compiled dynamic extensions. + +@item +The @option{-M} and @option{--bignum} options enable MPFR. + +@item +The @option{-o} only does pretty-printing. + +@item +The @option{-p} option is used for profiling. + +@item +The @option{-R} option was removed. +@end itemize + +@item +Support for high precision arithmetic with MPFR. +(@pxref{Gawk and MPFR}). + +@item +The @code{and()}, @code{or()} and @code{xor()} functions +allow any number of arguments, +with a minimum of two +(@pxref{Bitwise Functions}). + +@item +The dynamic extension interface was completely redone +(@pxref{Dynamic Extensions}). + +@end itemize + +@c XXX ADD MORE STUFF HERE + @node Common Extensions @appendixsec Common Extensions Summary @@ -32775,7 +33384,7 @@ the three most widely-used freely available versions of @command{awk} @item @samp{\x} Escape sequence @tab X @tab X @tab X @item @code{RS} as regexp @tab @tab X @tab X @item @code{FS} as null string @tab X @tab X @tab X -@item @file{/dev/stdin} special file @tab X @tab @tab X +@item @file{/dev/stdin} special file @tab X @tab X @tab X @item @file{/dev/stdout} special file @tab X @tab X @tab X @item @file{/dev/stderr} special file @tab X @tab X @tab X @item @code{**} and @code{**=} operators @tab X @tab @tab X @@ -32783,7 +33392,7 @@ the three most widely-used freely available versions of @command{awk} @item @code{func} keyword @tab X @tab @tab X @item @code{nextfile} statement @tab X @tab X @tab X @item @code{delete} without subscript @tab X @tab X @tab X -@item @code{length()} of an array @tab X @tab @tab X +@item @code{length()} of an array @tab X @tab X @tab X @item @code{BINMODE} variable @tab @tab X @tab X @item Time related functions @tab @tab X @tab X @end multitable |