diff options
Diffstat (limited to 'doc/gawk.info')
-rw-r--r-- | doc/gawk.info | 1415 |
1 files changed, 744 insertions, 671 deletions
diff --git a/doc/gawk.info b/doc/gawk.info index afdc99b9..7e548a8e 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -246,6 +246,7 @@ entitled "GNU Free Documentation License". * Special Caveats:: Things to watch out for. * Close Files And Pipes:: Closing Input and Output Files and Pipes. +* Nonfatal:: Enabling Nonfatal Output. * Output Summary:: Output summary. * Output Exercises:: Exercises. * Values:: Constants, Variables, and Regular @@ -954,7 +955,7 @@ provided in *note Language History::. The language described in this Info file is often referred to as "new `awk'." By analogy, the original version of `awk' is referred to as "old `awk'." - Today, on most systems, when you run the `awk' utility you get some + On most current systems, when you run the `awk' utility you get some version of new `awk'.(1) If your system's standard `awk' is the old one, you will see something like this if you try the test program: @@ -1874,7 +1875,7 @@ file surrounded by double quotes: File: gawk.info, Node: Sample Data Files, Next: Very Simple, Prev: Running gawk, Up: Getting Started -1.2 Data Files for the Examples +1.2 Data files for the Examples =============================== Many of the examples in this Info file take their input from two sample @@ -3013,7 +3014,8 @@ used by regular users: `GAWK_SOCK_RETRIES' Controls the number of times `gawk' attempts to retry a two-way TCP/IP (socket) connection before giving up. *Note TCP/IP - Networking::. + Networking::. Note that when nonfatal I/O is enabled (*note + Nonfatal::), `gawk' only tries to open a TCP/IP socket once. `POSIXLY_CORRECT' Causes `gawk' to switch to POSIX-compatibility mode, disabling all @@ -6128,6 +6130,7 @@ function. `gawk' allows access to inherited file descriptors. * Close Files And Pipes:: Closing Input and Output Files and Pipes. +* Nonfatal:: Enabling Nonfatal Output. * Output Summary:: Output summary. * Output Exercises:: Exercises. @@ -6525,7 +6528,7 @@ which they may appear: messages at runtime. *Note Printf Ordering::, which describes how and why to use positional specifiers. For now, we ignore them. -`- (Minus)' +`-' (Minus) The minus sign, used before the width modifier (see later on in this list), says to left-justify the argument within its specified width. Normally, the argument is printed right-justified in the @@ -6535,7 +6538,7 @@ which they may appear: prints `foo*'. -`SPACE' +SPACE For numeric conversions, prefix positive values with a space and negative values with a minus sign. @@ -6580,7 +6583,7 @@ which they may appear: programs. For information on appropriate quoting tricks, see *note Quoting::. -`WIDTH' +WIDTH This is a number specifying the desired minimum width of a field. Inserting any number between the `%' sign and the format-control character forces the field to expand to this width. The default @@ -6958,7 +6961,7 @@ option (*note Options::). File: gawk.info, Node: Special Files, Next: Close Files And Pipes, Prev: Special FD, Up: Printing -5.8 Special File Names in `gawk' +5.8 Special File names in `gawk' ================================ Besides access to standard input, standard output, and standard error, @@ -7019,7 +7022,7 @@ mentioned here only for completeness. Full discussion is delayed until File: gawk.info, Node: Special Caveats, Prev: Special Network, Up: Special Files -5.8.3 Special File Name Caveats +5.8.3 Special File name Caveats ------------------------------- Here are some things to bear in mind when using the special file names @@ -7041,7 +7044,7 @@ that `gawk' provides: behavior. -File: gawk.info, Node: Close Files And Pipes, Next: Output Summary, Prev: Special Files, Up: Printing +File: gawk.info, Node: Close Files And Pipes, Next: Nonfatal, Prev: Special Files, Up: Printing 5.9 Closing Input and Output Redirections ========================================= @@ -7210,9 +7213,68 @@ call. See the system manual pages for information on how to decode this value. -File: gawk.info, Node: Output Summary, Next: Output Exercises, Prev: Close Files And Pipes, Up: Printing +File: gawk.info, Node: Nonfatal, Next: Output Summary, Prev: Close Files And Pipes, Up: Printing -5.10 Summary +5.10 Enabling Nonfatal Output +============================= + +This minor node describes a `gawk'-specific feature. + + In standard `awk', output with `print' or `printf' to a nonexistent +file, or some other I/O error (such as filling up the disk) is a fatal +error. + + $ gawk 'BEGIN { print "hi" > "/no/such/file" }' + error--> gawk: cmd. line:1: fatal: can't redirect to `/no/such/file' (No such file or directory) + + `gawk' makes it possible to detect that an error has occurred, +allowing you to possibly recover from the error, or at least print an +error message of your choosing before exiting. You can do this in one +of two ways: + + * For all output files, by assigning any value to + `PROCINFO["NONFATAL"]'. + + * On a per-file basis, by assigning any value to `PROCINFO[FILENAME, + "NONFATAL"]'. Here, FILENAME is the name of the file to which you + wish output to be nonfatal. + + Once you have enabled nonfatal output, you must check `ERRNO' after +every relevant `print' or `printf' statement to see if something went +wrong. It is also a good idea to initialize `ERRNO' to zero before +attempting the output. For example: + + $ gawk ' + > BEGIN { + > PROCINFO["NONFATAL"] = 1 + > ERRNO = 0 + > print "hi" > "/no/such/file" + > if (ERRNO) { + > print("Output failed:", ERRNO) > "/dev/stderr" + > exit 1 + > } + > }' + error--> Output failed: No such file or directory + + Here, `gawk' did not produce a fatal error; instead it let the `awk' +program code detect the problem and handle it. + + This mechanism works also for standard output and standard error. +For standard output, you may use `PROCINFO["-", "NONFATAL"]' or +`PROCINFO["/dev/stdout", "NONFATAL"]'. For standard error, use +`PROCINFO["/dev/stderr", "NONFATAL"]'. + + When attempting to open a TCP/IP socket (*note TCP/IP Networking::), +`gawk' tries multiple times. The `GAWK_SOCK_RETRIES' environment +variable (*note Other Environment Variables::) allows you to override +`gawk''s builtin default number of attempts. However, once nonfatal +I/O is enabled for a given socket, `gawk' only retries once, relying on +`awk'-level code to notice that there was a problem. + + +File: gawk.info, Node: Output Summary, Next: Output Exercises, Prev: Nonfatal, Up: Printing + +5.11 Summary ============ * The `print' statement prints comma-separated expressions. Each @@ -7234,11 +7296,16 @@ File: gawk.info, Node: Output Summary, Next: Output Exercises, Prev: Close Fi For coprocesses, it is possible to close only one direction of the communications. + * Normally errors with `print' or `printf' are fatal. `gawk' lets + you make output errors be nonfatal either for all files or on a + per-file basis. You must then check for errors after every + relevant output statement. + File: gawk.info, Node: Output Exercises, Prev: Output Summary, Up: Printing -5.11 Exercises +5.12 Exercises ============== 1. Rewrite the program: @@ -9821,12 +9888,12 @@ divisor of any integer, and also identifies prime numbers: # find smallest divisor of num { num = $1 - for (div = 2; div * div <= num; div++) { - if (num % div == 0) + for (divisor = 2; divisor * divisor <= num; divisor++) { + if (num % divisor == 0) break } - if (num % div == 0) - printf "Smallest divisor of %d is %d\n", num, div + if (num % divisor == 0) + printf "Smallest divisor of %d is %d\n", num, divisor else printf "%d is prime\n", num } @@ -9844,12 +9911,12 @@ Statement::.) # find smallest divisor of num { num = $1 - for (div = 2; ; div++) { - if (num % div == 0) { - printf "Smallest divisor of %d is %d\n", num, div + for (divisor = 2; ; divisor++) { + if (num % divisor == 0) { + printf "Smallest divisor of %d is %d\n", num, divisor break } - if (div * div > num) { + if (divisor * divisor > num) { printf "%d is prime\n", num break } @@ -10184,15 +10251,14 @@ description of each variable.) `IGNORECASE #' If `IGNORECASE' is nonzero or non-null, then all string comparisons - and all regular expression matching are case-independent. Thus, - regexp matching with `~' and `!~', as well as the `gensub()', + and all regular expression matching are case-independent. This + applies to regexp matching with `~' and `!~', the `gensub()', `gsub()', `index()', `match()', `patsplit()', `split()', and `sub()' functions, record termination with `RS', and field - splitting with `FS' and `FPAT', all ignore case when doing their - particular regexp operations. However, the value of `IGNORECASE' - does _not_ affect array subscripting and it does not affect field - splitting when using a single-character field separator. *Note - Case-sensitivity::. + splitting with `FS' and `FPAT'. However, the value of + `IGNORECASE' does _not_ affect array subscripting and it does not + affect field splitting when using a single-character field + separator. *Note Case-sensitivity::. `LINT #' When this variable is true (nonzero or non-null), `gawk' behaves @@ -12030,7 +12096,7 @@ numbers. (2) `mawk' uses a different seed each time. (3) Computer-generated random numbers really are not truly random. -They are technically known as "pseudorandom." This means that although +They are technically known as "pseudorandom". This means that although the numbers in a sequence appear to be random, you can in fact generate the same sequence of random numbers over and over again. @@ -14318,61 +14384,7 @@ names of the two comparison functions: -| rsort: <100.0 95.6 93.4 87.1> Another example where indirect functions calls are useful can be -found in processing arrays. *note Walking Arrays::, presented a simple -function for "walking" an array of arrays. That function simply -printed the name and value of each scalar array element. However, it is -easy to generalize that function, by passing in the name of a function -to call when walking an array. The modified function looks like this: - - function process_array(arr, name, process, do_arrays, i, new_name) - { - for (i in arr) { - new_name = (name "[" i "]") - if (isarray(arr[i])) { - if (do_arrays) - @process(new_name, arr[i]) - process_array(arr[i], new_name, process, do_arrays) - } else - @process(new_name, arr[i]) - } - } - - The arguments are as follows: - -`arr' - The array. - -`name' - The name of the array (a string). - -`process' - The name of the function to call. - -`do_arrays' - If this is true, the function can handle elements that are - subarrays. - - If subarrays are to be processed, that is done before walking them -further. - - When run with the following scaffolding, the function produces the -same results as does the earlier `walk_array()' function: - - BEGIN { - a[1] = 1 - a[2][1] = 21 - a[2][2] = 22 - a[3] = 3 - a[4][1][1] = 411 - a[4][2] = 42 - - process_array(a, "a", "do_print", 0) - } - - function do_print(name, element) - { - printf "%s = %s\n", name, element - } +found in processing arrays. This is described in *note Walking Arrays::. Remember that you must supply a leading `@' in front of an indirect function call. @@ -15240,7 +15252,7 @@ three-character string `"\"'\""': File: gawk.info, Node: Data File Management, Next: Getopt Function, Prev: General Functions, Up: Library Functions -10.3 Data File Management +10.3 Data file Management ========================= This minor node presents functions that are useful for managing @@ -15257,7 +15269,7 @@ command-line data files. File: gawk.info, Node: Filetrans Function, Next: Rewind Function, Up: Data File Management -10.3.1 Noting Data File Boundaries +10.3.1 Noting Data file Boundaries ---------------------------------- The `BEGIN' and `END' rules are each executed exactly once, at the @@ -15395,7 +15407,7 @@ rule finishes!) File: gawk.info, Node: File Checking, Next: Empty Files, Prev: Rewind Function, Up: Data File Management -10.3.3 Checking for Readable Data Files +10.3.3 Checking for Readable Data files --------------------------------------- Normally, if you give `awk' a data file that isn't readable, it stops @@ -15485,7 +15497,7 @@ of the `for' loop uses the `<=' operator, not `<'. File: gawk.info, Node: Ignoring Assigns, Prev: Empty Files, Up: Data File Management -10.3.5 Treating Assignments as File Names +10.3.5 Treating Assignments as File names ----------------------------------------- Occasionally, you might not want `awk' to process command-line variable @@ -16349,6 +16361,61 @@ value. Here is a main program to demonstrate: -| a[4][1][1] = 411 -| a[4][2] = 42 + The function just presented simply prints the name and value of each +scalar array element. However, it is easy to generalize it, by passing +in the name of a function to call when walking an array. The modified +function looks like this: + + function process_array(arr, name, process, do_arrays, i, new_name) + { + for (i in arr) { + new_name = (name "[" i "]") + if (isarray(arr[i])) { + if (do_arrays) + @process(new_name, arr[i]) + process_array(arr[i], new_name, process, do_arrays) + } else + @process(new_name, arr[i]) + } + } + + The arguments are as follows: + +`arr' + The array. + +`name' + The name of the array (a string). + +`process' + The name of the function to call. + +`do_arrays' + If this is true, the function can handle elements that are + subarrays. + + If subarrays are to be processed, that is done before walking them +further. + + When run with the following scaffolding, the function produces the +same results as does the earlier version of `walk_array()': + + BEGIN { + a[1] = 1 + a[2][1] = 21 + a[2][2] = 22 + a[3] = 3 + a[4][1][1] = 411 + a[4][2] = 42 + + process_array(a, "a", "do_print", 0) + } + + function do_print(name, element) + { + printf "%s = %s\n", name, element + } + File: gawk.info, Node: Library Functions Summary, Next: Library Exercises, Prev: Walking Arrays, Up: Library Functions @@ -16383,7 +16450,7 @@ File: gawk.info, Node: Library Functions Summary, Next: Library Exercises, Pr Two sets of routines that parallel the C library versions Traversing arrays of arrays - A simple function to traverse an array of arrays to any depth + Two functions that traverse an array of arrays to any depth @@ -22677,9 +22744,9 @@ File: gawk.info, Node: Floating point summary, Prev: POSIX Floating Point Prob using the GMP library. This is faster and more space-efficient than using MPFR for the same calculations. - * There are several "dark corners" with respect to floating-point - numbers where `gawk' disagrees with the POSIX standard. It pays - to be aware of them. + * There are several areas with respect to floating-point numbers + where `gawk' disagrees with the POSIX standard. It pays to be + aware of them. * Overall, there is no need to be unduly suspicious about the results from floating-point arithmetic. The lesson to remember is @@ -23272,14 +23339,14 @@ This node presents them all as function prototypes, in the way that extension code would use them: `static inline awk_value_t *' -`make_const_string(const char *string, size_t length, awk_value_t *result)' +`make_const_string(const char *string, size_t length, awk_value_t *result);' This function creates a string value in the `awk_value_t' variable pointed to by `result'. It expects `string' to be a C string constant (or other string data), and automatically creates a _copy_ of the data for storage in `result'. It returns `result'. `static inline awk_value_t *' -`make_malloced_string(const char *string, size_t length, awk_value_t *result)' +`make_malloced_string(const char *string, size_t length, awk_value_t *result);' This function creates a string value in the `awk_value_t' variable pointed to by `result'. It expects `string' to be a `char *' value pointing to data previously obtained from `gawk_malloc()', @@ -23288,13 +23355,13 @@ extension code would use them: for it. It returns `result'. `static inline awk_value_t *' -`make_null_string(awk_value_t *result)' +`make_null_string(awk_value_t *result);' This specialized function creates a null string (the "undefined" value) in the `awk_value_t' variable pointed to by `result'. It returns `result'. `static inline awk_value_t *' -`make_number(double num, awk_value_t *result)' +`make_number(double num, awk_value_t *result);' This function simply creates a numeric value in the `awk_value_t' variable pointed to by `result'. @@ -26479,6 +26546,9 @@ the current version of `gawk'. - Directories on the command line produce a warning and are skipped (*note Command-line directories::) + - Output with `print' and `printf' need not be fatal (*note + Nonfatal::) + * New keywords: - The `BEGINFILE' and `ENDFILE' special patterns (*note @@ -26994,6 +27064,8 @@ in POSIX `awk', in the order they were added to `gawk'. * The maximum number of hexdecimal digits in `\x' escapes is now two. *Note Escape Sequences::. + * Nonfatal output with `print' and `printf'. *Note Nonfatal::. + * Support for MirBSD was removed. @@ -32674,7 +32746,7 @@ Index (line 6) * differences in awk and gawk, line continuations: Conditional Exp. (line 34) -* differences in awk and gawk, LINT variable: User-modified. (line 88) +* differences in awk and gawk, LINT variable: User-modified. (line 87) * differences in awk and gawk, match() function: String Functions. (line 263) * differences in awk and gawk, print/printf statements: Format Modifiers. @@ -32699,7 +32771,7 @@ Index (line 77) * differences in awk and gawk, SYMTAB variable: Auto-set. (line 283) * differences in awk and gawk, TEXTDOMAIN variable: User-modified. - (line 152) + (line 151) * differences in awk and gawk, trunc-mod operation: Arithmetic Ops. (line 66) * directories, command-line: Command-line directories. @@ -33162,7 +33234,7 @@ Index (line 6) * gawk, interval expressions and: Regexp Operators. (line 139) * gawk, line continuation in: Conditional Exp. (line 34) -* gawk, LINT variable in: User-modified. (line 88) +* gawk, LINT variable in: User-modified. (line 87) * gawk, list of contributors to: Contributors. (line 6) * gawk, MS-DOS version of: PC Using. (line 10) * gawk, MS-Windows version of: PC Using. (line 10) @@ -33188,7 +33260,7 @@ Index * gawk, splitting fields and: Constant Size. (line 87) * gawk, string-translation functions: I18N Functions. (line 6) * gawk, SYMTAB array in: Auto-set. (line 283) -* gawk, TEXTDOMAIN variable in: User-modified. (line 152) +* gawk, TEXTDOMAIN variable in: User-modified. (line 151) * gawk, timestamps: Time Functions. (line 6) * gawk, uses for: Preface. (line 34) * gawk, versions of, information about, printing: Options. (line 300) @@ -33392,7 +33464,7 @@ Index * internationalization: I18N Functions. (line 6) * internationalization, localization <1>: Internationalization. (line 13) -* internationalization, localization: User-modified. (line 152) +* internationalization, localization: User-modified. (line 151) * internationalization, localization, character classes: Bracket Expressions. (line 101) * internationalization, localization, gawk and: Internationalization. @@ -33502,7 +33574,7 @@ Index * lines, duplicate, removing: History Sorting. (line 6) * lines, matching ranges of: Ranges. (line 6) * lines, skipping between markers: Ranges. (line 43) -* lint checking: User-modified. (line 88) +* lint checking: User-modified. (line 87) * lint checking, array elements: Delete. (line 34) * lint checking, array subscripts: Uninitialized Subscripts. (line 43) @@ -33512,7 +33584,7 @@ Index (line 339) * lint checking, undefined functions: Pass By Value/Reference. (line 85) -* LINT variable: User-modified. (line 88) +* LINT variable: User-modified. (line 87) * Linux <1>: Glossary. (line 753) * Linux <2>: I18N Example. (line 55) * Linux: Manual History. (line 28) @@ -33684,11 +33756,11 @@ Index * obsolete features: Obsolete. (line 6) * octal numbers: Nondecimal-numbers. (line 6) * octal values, enabling interpretation of: Options. (line 211) -* OFMT variable <1>: User-modified. (line 105) +* OFMT variable <1>: User-modified. (line 104) * OFMT variable <2>: Strings And Numbers. (line 57) * OFMT variable: OFMT. (line 15) * OFMT variable, POSIX awk and: OFMT. (line 27) -* OFS variable <1>: User-modified. (line 114) +* OFS variable <1>: User-modified. (line 113) * OFS variable <2>: Output Separators. (line 6) * OFS variable: Changing Fields. (line 64) * OpenBSD: Glossary. (line 753) @@ -33741,7 +33813,7 @@ Index (line 12) * ord() user-defined function: Ordinal Functions. (line 16) * order of evaluation, concatenation: Concatenation. (line 41) -* ORS variable <1>: User-modified. (line 119) +* ORS variable <1>: User-modified. (line 118) * ORS variable: Output Separators. (line 21) * output field separator, See OFS variable: Changing Fields. (line 64) * output record separator, See ORS variable: Output Separators. @@ -33881,7 +33953,7 @@ Index * POSIX, gawk extensions not included in: POSIX/GNU. (line 6) * POSIX, programs, implementing in awk: Clones. (line 6) * POSIXLY_CORRECT environment variable: Options. (line 339) -* PREC variable: User-modified. (line 124) +* PREC variable: User-modified. (line 123) * precedence <1>: Precedence. (line 6) * precedence: Increment Ops. (line 60) * precedence, regexp operators: Regexp Operators. (line 156) @@ -33896,7 +33968,7 @@ Index * print statement, commas, omitting: Print Examples. (line 31) * print statement, I/O operators in: Precedence. (line 71) * print statement, line continuations and: Print Examples. (line 76) -* print statement, OFMT variable and: User-modified. (line 114) +* print statement, OFMT variable and: User-modified. (line 113) * print statement, See Also redirection, of output: Redirection. (line 17) * print statement, sprintf() function and: Round Function. (line 6) @@ -34011,7 +34083,7 @@ Index * readfile() user-defined function: Readfile Function. (line 30) * reading input files: Reading Files. (line 6) * recipe for a programming language: History. (line 6) -* record separators <1>: User-modified. (line 133) +* record separators <1>: User-modified. (line 132) * record separators: awk split records. (line 6) * record separators, changing: awk split records. (line 85) * record separators, regular expressions as: awk split records. @@ -34123,8 +34195,8 @@ Index * round to nearest integer: Numeric Functions. (line 38) * round() user-defined function: Round Function. (line 16) * rounding numbers: Round Function. (line 6) -* ROUNDMODE variable: User-modified. (line 128) -* RS variable <1>: User-modified. (line 133) +* ROUNDMODE variable: User-modified. (line 127) +* RS variable <1>: User-modified. (line 132) * RS variable: awk split records. (line 12) * RS variable, multiline records and: Multiple Line. (line 17) * rshift: Bitwise Functions. (line 53) @@ -34181,12 +34253,12 @@ Index * separators, field, FIELDWIDTHS variable and: User-modified. (line 37) * separators, field, FPAT variable and: User-modified. (line 43) * separators, field, POSIX and: Fields. (line 6) -* separators, for records <1>: User-modified. (line 133) +* separators, for records <1>: User-modified. (line 132) * separators, for records: awk split records. (line 6) * separators, for records, regular expressions as: awk split records. (line 125) * separators, for statements in actions: Action Overview. (line 19) -* separators, subscript: User-modified. (line 146) +* separators, subscript: User-modified. (line 145) * set breakpoint: Breakpoint Control. (line 11) * set debugger command: Viewing And Changing Data. (line 59) @@ -34318,7 +34390,7 @@ Index * split.awk program: Split Program. (line 30) * sprintf <1>: String Functions. (line 384) * sprintf: OFMT. (line 15) -* sprintf() function, OFMT variable and: User-modified. (line 114) +* sprintf() function, OFMT variable and: User-modified. (line 113) * sprintf() function, print/printf statements and: Round Function. (line 6) * sqrt: Numeric Functions. (line 92) @@ -34380,7 +34452,7 @@ Index (line 43) * sub() function, arguments of: String Functions. (line 463) * sub() function, escape processing: Gory Details. (line 6) -* subscript separators: User-modified. (line 146) +* subscript separators: User-modified. (line 145) * subscripts in arrays, multidimensional: Multidimensional. (line 10) * subscripts in arrays, multidimensional, scanning: Multiscanning. (line 11) @@ -34388,7 +34460,7 @@ Index (line 6) * subscripts in arrays, uninitialized variables as: Uninitialized Subscripts. (line 6) -* SUBSEP variable: User-modified. (line 146) +* SUBSEP variable: User-modified. (line 145) * SUBSEP variable, and multidimensional arrays: Multidimensional. (line 16) * substitute in string: String Functions. (line 90) @@ -34427,7 +34499,7 @@ Index * text, printing: Print. (line 22) * text, printing, unduplicated lines of: Uniq Program. (line 6) * TEXTDOMAIN variable <1>: Programmer i18n. (line 8) -* TEXTDOMAIN variable: User-modified. (line 152) +* TEXTDOMAIN variable: User-modified. (line 151) * TEXTDOMAIN variable, BEGIN pattern and: Programmer i18n. (line 60) * TEXTDOMAIN variable, portability and: I18N Portability. (line 20) * textdomain() function (C library): Explaining gettext. (line 28) @@ -34667,560 +34739,561 @@ Index Tag Table: Node: Top1204 -Node: Foreword342225 -Node: Foreword446669 -Node: Preface48200 -Ref: Preface-Footnote-151071 -Ref: Preface-Footnote-251178 -Ref: Preface-Footnote-351411 -Node: History51553 -Node: Names53904 -Ref: Names-Footnote-154997 -Node: This Manual55143 -Ref: This Manual-Footnote-161643 -Node: Conventions61743 -Node: Manual History64080 -Ref: Manual History-Footnote-167073 -Ref: Manual History-Footnote-267114 -Node: How To Contribute67188 -Node: Acknowledgments68317 -Node: Getting Started73183 -Node: Running gawk75622 -Node: One-shot76812 -Node: Read Terminal78076 -Node: Long80107 -Node: Executable Scripts81620 -Ref: Executable Scripts-Footnote-184409 -Node: Comments84512 -Node: Quoting86994 -Node: DOS Quoting92512 -Node: Sample Data Files93187 -Node: Very Simple95782 -Node: Two Rules100681 -Node: More Complex102567 -Node: Statements/Lines105429 -Ref: Statements/Lines-Footnote-1109884 -Node: Other Features110149 -Node: When111085 -Ref: When-Footnote-1112839 -Node: Intro Summary112904 -Node: Invoking Gawk113788 -Node: Command Line115302 -Node: Options116100 -Ref: Options-Footnote-1131895 -Ref: Options-Footnote-2132124 -Node: Other Arguments132149 -Node: Naming Standard Input135097 -Node: Environment Variables136190 -Node: AWKPATH Variable136748 -Ref: AWKPATH Variable-Footnote-1140155 -Ref: AWKPATH Variable-Footnote-2140200 -Node: AWKLIBPATH Variable140460 -Node: Other Environment Variables141716 -Node: Exit Status145234 -Node: Include Files145910 -Node: Loading Shared Libraries149499 -Node: Obsolete150926 -Node: Undocumented151618 -Node: Invoking Summary151885 -Node: Regexp153548 -Node: Regexp Usage155002 -Node: Escape Sequences157039 -Node: Regexp Operators163268 -Ref: Regexp Operators-Footnote-1170678 -Ref: Regexp Operators-Footnote-2170825 -Node: Bracket Expressions170923 -Ref: table-char-classes172938 -Node: Leftmost Longest175880 -Node: Computed Regexps177182 -Node: GNU Regexp Operators180611 -Node: Case-sensitivity184283 -Ref: Case-sensitivity-Footnote-1187168 -Ref: Case-sensitivity-Footnote-2187403 -Node: Regexp Summary187511 -Node: Reading Files188978 -Node: Records191071 -Node: awk split records191804 -Node: gawk split records196733 -Ref: gawk split records-Footnote-1201272 -Node: Fields201309 -Ref: Fields-Footnote-1204087 -Node: Nonconstant Fields204173 -Ref: Nonconstant Fields-Footnote-1206411 -Node: Changing Fields206614 -Node: Field Separators212545 -Node: Default Field Splitting215249 -Node: Regexp Field Splitting216366 -Node: Single Character Fields219716 -Node: Command Line Field Separator220775 -Node: Full Line Fields223992 -Ref: Full Line Fields-Footnote-1225513 -Ref: Full Line Fields-Footnote-2225559 -Node: Field Splitting Summary225660 -Node: Constant Size227734 -Node: Splitting By Content232317 -Ref: Splitting By Content-Footnote-1236282 -Node: Multiple Line236445 -Ref: Multiple Line-Footnote-1242326 -Node: Getline242505 -Node: Plain Getline244712 -Node: Getline/Variable247352 -Node: Getline/File248501 -Node: Getline/Variable/File249886 -Ref: Getline/Variable/File-Footnote-1251489 -Node: Getline/Pipe251576 -Node: Getline/Variable/Pipe254254 -Node: Getline/Coprocess255385 -Node: Getline/Variable/Coprocess256649 -Node: Getline Notes257388 -Node: Getline Summary260182 -Ref: table-getline-variants260594 -Node: Read Timeout261423 -Ref: Read Timeout-Footnote-1265260 -Node: Command-line directories265318 -Node: Input Summary266223 -Node: Input Exercises269608 -Node: Printing270336 -Node: Print272113 -Node: Print Examples273570 -Node: Output Separators276349 -Node: OFMT278367 -Node: Printf279722 -Node: Basic Printf280507 -Node: Control Letters282079 -Node: Format Modifiers286064 -Node: Printf Examples292074 -Node: Redirection294560 -Node: Special FD301398 -Ref: Special FD-Footnote-1304564 -Node: Special Files304638 -Node: Other Inherited Files305255 -Node: Special Network306255 -Node: Special Caveats307117 -Node: Close Files And Pipes308066 -Ref: Close Files And Pipes-Footnote-1315257 -Ref: Close Files And Pipes-Footnote-2315405 -Node: Output Summary315555 -Node: Output Exercises316553 -Node: Expressions317233 -Node: Values318422 -Node: Constants319099 -Node: Scalar Constants319790 -Ref: Scalar Constants-Footnote-1320652 -Node: Nondecimal-numbers320902 -Node: Regexp Constants323912 -Node: Using Constant Regexps324438 -Node: Variables327601 -Node: Using Variables328258 -Node: Assignment Options330169 -Node: Conversion332044 -Node: Strings And Numbers332568 -Ref: Strings And Numbers-Footnote-1335633 -Node: Locale influences conversions335742 -Ref: table-locale-affects338488 -Node: All Operators339080 -Node: Arithmetic Ops339709 -Node: Concatenation342214 -Ref: Concatenation-Footnote-1345033 -Node: Assignment Ops345140 -Ref: table-assign-ops350119 -Node: Increment Ops351429 -Node: Truth Values and Conditions354860 -Node: Truth Values355943 -Node: Typing and Comparison356992 -Node: Variable Typing357808 -Node: Comparison Operators361475 -Ref: table-relational-ops361885 -Node: POSIX String Comparison365380 -Ref: POSIX String Comparison-Footnote-1366452 -Node: Boolean Ops366591 -Ref: Boolean Ops-Footnote-1371069 -Node: Conditional Exp371160 -Node: Function Calls372898 -Node: Precedence376778 -Node: Locales380438 -Node: Expressions Summary382070 -Node: Patterns and Actions384641 -Node: Pattern Overview385761 -Node: Regexp Patterns387440 -Node: Expression Patterns387983 -Node: Ranges391763 -Node: BEGIN/END394870 -Node: Using BEGIN/END395631 -Ref: Using BEGIN/END-Footnote-1398367 -Node: I/O And BEGIN/END398473 -Node: BEGINFILE/ENDFILE400788 -Node: Empty403685 -Node: Using Shell Variables404002 -Node: Action Overview406275 -Node: Statements408601 -Node: If Statement410449 -Node: While Statement411944 -Node: Do Statement413972 -Node: For Statement415120 -Node: Switch Statement418278 -Node: Break Statement420660 -Node: Continue Statement422701 -Node: Next Statement424528 -Node: Nextfile Statement426909 -Node: Exit Statement429537 -Node: Built-in Variables431948 -Node: User-modified433081 -Ref: User-modified-Footnote-1440784 -Node: Auto-set440846 -Ref: Auto-set-Footnote-1454555 -Ref: Auto-set-Footnote-2454760 -Node: ARGC and ARGV454816 -Node: Pattern Action Summary459034 -Node: Arrays461467 -Node: Array Basics462796 -Node: Array Intro463640 -Ref: figure-array-elements465574 -Ref: Array Intro-Footnote-1468194 -Node: Reference to Elements468322 -Node: Assigning Elements470784 -Node: Array Example471275 -Node: Scanning an Array473034 -Node: Controlling Scanning476054 -Ref: Controlling Scanning-Footnote-1481448 -Node: Numeric Array Subscripts481764 -Node: Uninitialized Subscripts483949 -Node: Delete485566 -Ref: Delete-Footnote-1488315 -Node: Multidimensional488372 -Node: Multiscanning491469 -Node: Arrays of Arrays493058 -Node: Arrays Summary497812 -Node: Functions499903 -Node: Built-in500942 -Node: Calling Built-in502020 -Node: Numeric Functions504015 -Ref: Numeric Functions-Footnote-1508833 -Ref: Numeric Functions-Footnote-2509190 -Ref: Numeric Functions-Footnote-3509238 -Node: String Functions509510 -Ref: String Functions-Footnote-1533011 -Ref: String Functions-Footnote-2533140 -Ref: String Functions-Footnote-3533388 -Node: Gory Details533475 -Ref: table-sub-escapes535256 -Ref: table-sub-proposed536771 -Ref: table-posix-sub538133 -Ref: table-gensub-escapes539670 -Ref: Gory Details-Footnote-1540503 -Node: I/O Functions540654 -Ref: I/O Functions-Footnote-1547890 -Node: Time Functions548037 -Ref: Time Functions-Footnote-1558546 -Ref: Time Functions-Footnote-2558614 -Ref: Time Functions-Footnote-3558772 -Ref: Time Functions-Footnote-4558883 -Ref: Time Functions-Footnote-5558995 -Ref: Time Functions-Footnote-6559222 -Node: Bitwise Functions559488 -Ref: table-bitwise-ops560050 -Ref: Bitwise Functions-Footnote-1564378 -Node: Type Functions564550 -Node: I18N Functions565702 -Node: User-defined567349 -Node: Definition Syntax568154 -Ref: Definition Syntax-Footnote-1573813 -Node: Function Example573884 -Ref: Function Example-Footnote-1576805 -Node: Function Caveats576827 -Node: Calling A Function577345 -Node: Variable Scope578303 -Node: Pass By Value/Reference581296 -Node: Return Statement584793 -Node: Dynamic Typing587772 -Node: Indirect Calls588701 -Ref: Indirect Calls-Footnote-1600007 -Node: Functions Summary600135 -Node: Library Functions602837 -Ref: Library Functions-Footnote-1606445 -Ref: Library Functions-Footnote-2606588 -Node: Library Names606759 -Ref: Library Names-Footnote-1610217 -Ref: Library Names-Footnote-2610440 -Node: General Functions610526 -Node: Strtonum Function611629 -Node: Assert Function614651 -Node: Round Function617975 -Node: Cliff Random Function619516 -Node: Ordinal Functions620532 -Ref: Ordinal Functions-Footnote-1623595 -Ref: Ordinal Functions-Footnote-2623847 -Node: Join Function624058 -Ref: Join Function-Footnote-1625828 -Node: Getlocaltime Function626028 -Node: Readfile Function629772 -Node: Shell Quoting631744 -Node: Data File Management633145 -Node: Filetrans Function633777 -Node: Rewind Function637873 -Node: File Checking639259 -Ref: File Checking-Footnote-1640592 -Node: Empty Files640793 -Node: Ignoring Assigns642772 -Node: Getopt Function644322 -Ref: Getopt Function-Footnote-1655786 -Node: Passwd Functions655986 -Ref: Passwd Functions-Footnote-1664826 -Node: Group Functions664914 -Ref: Group Functions-Footnote-1672811 -Node: Walking Arrays673016 -Node: Library Functions Summary674616 -Node: Library Exercises676020 -Node: Sample Programs677300 -Node: Running Examples678070 -Node: Clones678798 -Node: Cut Program680022 -Node: Egrep Program689742 -Ref: Egrep Program-Footnote-1697245 -Node: Id Program697355 -Node: Split Program701031 -Ref: Split Program-Footnote-1704485 -Node: Tee Program704613 -Node: Uniq Program707402 -Node: Wc Program714821 -Ref: Wc Program-Footnote-1719071 -Node: Miscellaneous Programs719165 -Node: Dupword Program720378 -Node: Alarm Program722409 -Node: Translate Program727214 -Ref: Translate Program-Footnote-1731777 -Node: Labels Program732047 -Ref: Labels Program-Footnote-1735398 -Node: Word Sorting735482 -Node: History Sorting739552 -Node: Extract Program741387 -Node: Simple Sed748911 -Node: Igawk Program751981 -Ref: Igawk Program-Footnote-1766307 -Ref: Igawk Program-Footnote-2766508 -Ref: Igawk Program-Footnote-3766630 -Node: Anagram Program766745 -Node: Signature Program769806 -Node: Programs Summary771053 -Node: Programs Exercises772274 -Ref: Programs Exercises-Footnote-1776405 -Node: Advanced Features776496 -Node: Nondecimal Data778478 -Node: Array Sorting780068 -Node: Controlling Array Traversal780768 -Ref: Controlling Array Traversal-Footnote-1789134 -Node: Array Sorting Functions789252 -Ref: Array Sorting Functions-Footnote-1793138 -Node: Two-way I/O793334 -Ref: Two-way I/O-Footnote-1798279 -Ref: Two-way I/O-Footnote-2798465 -Node: TCP/IP Networking798547 -Node: Profiling801419 -Node: Advanced Features Summary809690 -Node: Internationalization811623 -Node: I18N and L10N813103 -Node: Explaining gettext813789 -Ref: Explaining gettext-Footnote-1818814 -Ref: Explaining gettext-Footnote-2818998 -Node: Programmer i18n819163 -Ref: Programmer i18n-Footnote-1824039 -Node: Translator i18n824088 -Node: String Extraction824882 -Ref: String Extraction-Footnote-1826013 -Node: Printf Ordering826099 -Ref: Printf Ordering-Footnote-1828885 -Node: I18N Portability828949 -Ref: I18N Portability-Footnote-1831405 -Node: I18N Example831468 -Ref: I18N Example-Footnote-1834271 -Node: Gawk I18N834343 -Node: I18N Summary834987 -Node: Debugger836327 -Node: Debugging837349 -Node: Debugging Concepts837790 -Node: Debugging Terms839600 -Node: Awk Debugging842172 -Node: Sample Debugging Session843078 -Node: Debugger Invocation843612 -Node: Finding The Bug844997 -Node: List of Debugger Commands851476 -Node: Breakpoint Control852808 -Node: Debugger Execution Control856485 -Node: Viewing And Changing Data859844 -Node: Execution Stack863220 -Node: Debugger Info864855 -Node: Miscellaneous Debugger Commands868900 -Node: Readline Support873901 -Node: Limitations874795 -Node: Debugging Summary876910 -Node: Arbitrary Precision Arithmetic878084 -Node: Computer Arithmetic879500 -Ref: table-numeric-ranges883099 -Ref: Computer Arithmetic-Footnote-1883623 -Node: Math Definitions883680 -Ref: table-ieee-formats886975 -Ref: Math Definitions-Footnote-1887579 -Node: MPFR features887684 -Node: FP Math Caution889355 -Ref: FP Math Caution-Footnote-1890405 -Node: Inexactness of computations890774 -Node: Inexact representation891733 -Node: Comparing FP Values893091 -Node: Errors accumulate894173 -Node: Getting Accuracy895605 -Node: Try To Round898309 -Node: Setting precision899208 -Ref: table-predefined-precision-strings899892 -Node: Setting the rounding mode901721 -Ref: table-gawk-rounding-modes902085 -Ref: Setting the rounding mode-Footnote-1905537 -Node: Arbitrary Precision Integers905716 -Ref: Arbitrary Precision Integers-Footnote-1910614 -Node: POSIX Floating Point Problems910763 -Ref: POSIX Floating Point Problems-Footnote-1914642 -Node: Floating point summary914680 -Node: Dynamic Extensions916876 -Node: Extension Intro918428 -Node: Plugin License919693 -Node: Extension Mechanism Outline920490 -Ref: figure-load-extension920918 -Ref: figure-register-new-function922398 -Ref: figure-call-new-function923402 -Node: Extension API Description925389 -Node: Extension API Functions Introduction926839 -Node: General Data Types931660 -Ref: General Data Types-Footnote-1937560 -Node: Memory Allocation Functions937859 -Ref: Memory Allocation Functions-Footnote-1940698 -Node: Constructor Functions940797 -Node: Registration Functions942532 -Node: Extension Functions943217 -Node: Exit Callback Functions945514 -Node: Extension Version String946762 -Node: Input Parsers947425 -Node: Output Wrappers957300 -Node: Two-way processors961813 -Node: Printing Messages964076 -Ref: Printing Messages-Footnote-1965152 -Node: Updating `ERRNO'965304 -Node: Requesting Values966044 -Ref: table-value-types-returned966771 -Node: Accessing Parameters967728 -Node: Symbol Table Access968962 -Node: Symbol table by name969476 -Node: Symbol table by cookie971496 -Ref: Symbol table by cookie-Footnote-1975641 -Node: Cached values975704 -Ref: Cached values-Footnote-1979200 -Node: Array Manipulation979291 -Ref: Array Manipulation-Footnote-1980389 -Node: Array Data Types980426 -Ref: Array Data Types-Footnote-1983081 -Node: Array Functions983173 -Node: Flattening Arrays987032 -Node: Creating Arrays993934 -Node: Extension API Variables998705 -Node: Extension Versioning999341 -Node: Extension API Informational Variables1001232 -Node: Extension API Boilerplate1002297 -Node: Finding Extensions1006106 -Node: Extension Example1006666 -Node: Internal File Description1007438 -Node: Internal File Ops1011505 -Ref: Internal File Ops-Footnote-11023256 -Node: Using Internal File Ops1023396 -Ref: Using Internal File Ops-Footnote-11025779 -Node: Extension Samples1026052 -Node: Extension Sample File Functions1027580 -Node: Extension Sample Fnmatch1035261 -Node: Extension Sample Fork1036749 -Node: Extension Sample Inplace1037964 -Node: Extension Sample Ord1039640 -Node: Extension Sample Readdir1040476 -Ref: table-readdir-file-types1041353 -Node: Extension Sample Revout1042164 -Node: Extension Sample Rev2way1042753 -Node: Extension Sample Read write array1043493 -Node: Extension Sample Readfile1045433 -Node: Extension Sample Time1046528 -Node: Extension Sample API Tests1047876 -Node: gawkextlib1048367 -Node: Extension summary1051045 -Node: Extension Exercises1054734 -Node: Language History1055456 -Node: V7/SVR3.11057112 -Node: SVR41059265 -Node: POSIX1060699 -Node: BTL1062080 -Node: POSIX/GNU1062811 -Node: Feature History1068556 -Node: Common Extensions1082282 -Node: Ranges and Locales1083654 -Ref: Ranges and Locales-Footnote-11088273 -Ref: Ranges and Locales-Footnote-21088300 -Ref: Ranges and Locales-Footnote-31088535 -Node: Contributors1088756 -Node: History summary1094296 -Node: Installation1095675 -Node: Gawk Distribution1096621 -Node: Getting1097105 -Node: Extracting1097928 -Node: Distribution contents1099565 -Node: Unix Installation1105667 -Node: Quick Installation1106350 -Node: Shell Startup Files1108761 -Node: Additional Configuration Options1109840 -Node: Configuration Philosophy1111644 -Node: Non-Unix Installation1114013 -Node: PC Installation1114471 -Node: PC Binary Installation1115791 -Node: PC Compiling1117639 -Ref: PC Compiling-Footnote-11120660 -Node: PC Testing1120769 -Node: PC Using1121945 -Node: Cygwin1126060 -Node: MSYS1126830 -Node: VMS Installation1127331 -Node: VMS Compilation1128123 -Ref: VMS Compilation-Footnote-11129352 -Node: VMS Dynamic Extensions1129410 -Node: VMS Installation Details1131094 -Node: VMS Running1133345 -Node: VMS GNV1136185 -Node: VMS Old Gawk1136920 -Node: Bugs1137390 -Node: Other Versions1141279 -Node: Installation summary1147713 -Node: Notes1148772 -Node: Compatibility Mode1149637 -Node: Additions1150419 -Node: Accessing The Source1151344 -Node: Adding Code1152779 -Node: New Ports1158936 -Node: Derived Files1163418 -Ref: Derived Files-Footnote-11168893 -Ref: Derived Files-Footnote-21168927 -Ref: Derived Files-Footnote-31169523 -Node: Future Extensions1169637 -Node: Implementation Limitations1170243 -Node: Extension Design1171491 -Node: Old Extension Problems1172645 -Ref: Old Extension Problems-Footnote-11174162 -Node: Extension New Mechanism Goals1174219 -Ref: Extension New Mechanism Goals-Footnote-11177579 -Node: Extension Other Design Decisions1177768 -Node: Extension Future Growth1179876 -Node: Old Extension Mechanism1180712 -Node: Notes summary1182474 -Node: Basic Concepts1183660 -Node: Basic High Level1184341 -Ref: figure-general-flow1184613 -Ref: figure-process-flow1185212 -Ref: Basic High Level-Footnote-11188441 -Node: Basic Data Typing1188626 -Node: Glossary1191954 -Node: Copying1223883 -Node: GNU Free Documentation License1261439 -Node: Index1286575 +Node: Foreword342291 +Node: Foreword446735 +Node: Preface48266 +Ref: Preface-Footnote-151137 +Ref: Preface-Footnote-251244 +Ref: Preface-Footnote-351477 +Node: History51619 +Node: Names53970 +Ref: Names-Footnote-155064 +Node: This Manual55210 +Ref: This Manual-Footnote-161710 +Node: Conventions61810 +Node: Manual History64147 +Ref: Manual History-Footnote-167140 +Ref: Manual History-Footnote-267181 +Node: How To Contribute67255 +Node: Acknowledgments68384 +Node: Getting Started73250 +Node: Running gawk75689 +Node: One-shot76879 +Node: Read Terminal78143 +Node: Long80174 +Node: Executable Scripts81687 +Ref: Executable Scripts-Footnote-184476 +Node: Comments84579 +Node: Quoting87061 +Node: DOS Quoting92579 +Node: Sample Data Files93254 +Node: Very Simple95849 +Node: Two Rules100748 +Node: More Complex102634 +Node: Statements/Lines105496 +Ref: Statements/Lines-Footnote-1109951 +Node: Other Features110216 +Node: When111152 +Ref: When-Footnote-1112906 +Node: Intro Summary112971 +Node: Invoking Gawk113855 +Node: Command Line115369 +Node: Options116167 +Ref: Options-Footnote-1131962 +Ref: Options-Footnote-2132191 +Node: Other Arguments132216 +Node: Naming Standard Input135164 +Node: Environment Variables136257 +Node: AWKPATH Variable136815 +Ref: AWKPATH Variable-Footnote-1140222 +Ref: AWKPATH Variable-Footnote-2140267 +Node: AWKLIBPATH Variable140527 +Node: Other Environment Variables141783 +Node: Exit Status145414 +Node: Include Files146090 +Node: Loading Shared Libraries149679 +Node: Obsolete151106 +Node: Undocumented151798 +Node: Invoking Summary152065 +Node: Regexp153728 +Node: Regexp Usage155182 +Node: Escape Sequences157219 +Node: Regexp Operators163448 +Ref: Regexp Operators-Footnote-1170858 +Ref: Regexp Operators-Footnote-2171005 +Node: Bracket Expressions171103 +Ref: table-char-classes173118 +Node: Leftmost Longest176060 +Node: Computed Regexps177362 +Node: GNU Regexp Operators180791 +Node: Case-sensitivity184463 +Ref: Case-sensitivity-Footnote-1187348 +Ref: Case-sensitivity-Footnote-2187583 +Node: Regexp Summary187691 +Node: Reading Files189158 +Node: Records191251 +Node: awk split records191984 +Node: gawk split records196913 +Ref: gawk split records-Footnote-1201452 +Node: Fields201489 +Ref: Fields-Footnote-1204267 +Node: Nonconstant Fields204353 +Ref: Nonconstant Fields-Footnote-1206591 +Node: Changing Fields206794 +Node: Field Separators212725 +Node: Default Field Splitting215429 +Node: Regexp Field Splitting216546 +Node: Single Character Fields219896 +Node: Command Line Field Separator220955 +Node: Full Line Fields224172 +Ref: Full Line Fields-Footnote-1225693 +Ref: Full Line Fields-Footnote-2225739 +Node: Field Splitting Summary225840 +Node: Constant Size227914 +Node: Splitting By Content232497 +Ref: Splitting By Content-Footnote-1236462 +Node: Multiple Line236625 +Ref: Multiple Line-Footnote-1242506 +Node: Getline242685 +Node: Plain Getline244892 +Node: Getline/Variable247532 +Node: Getline/File248681 +Node: Getline/Variable/File250066 +Ref: Getline/Variable/File-Footnote-1251669 +Node: Getline/Pipe251756 +Node: Getline/Variable/Pipe254434 +Node: Getline/Coprocess255565 +Node: Getline/Variable/Coprocess256829 +Node: Getline Notes257568 +Node: Getline Summary260362 +Ref: table-getline-variants260774 +Node: Read Timeout261603 +Ref: Read Timeout-Footnote-1265440 +Node: Command-line directories265498 +Node: Input Summary266403 +Node: Input Exercises269788 +Node: Printing270516 +Node: Print272351 +Node: Print Examples273808 +Node: Output Separators276587 +Node: OFMT278605 +Node: Printf279960 +Node: Basic Printf280745 +Node: Control Letters282317 +Node: Format Modifiers286302 +Node: Printf Examples292308 +Node: Redirection294794 +Node: Special FD301632 +Ref: Special FD-Footnote-1304798 +Node: Special Files304872 +Node: Other Inherited Files305489 +Node: Special Network306489 +Node: Special Caveats307351 +Node: Close Files And Pipes308300 +Ref: Close Files And Pipes-Footnote-1315485 +Ref: Close Files And Pipes-Footnote-2315633 +Node: Nonfatal315783 +Node: Output Summary318108 +Node: Output Exercises319329 +Node: Expressions320009 +Node: Values321198 +Node: Constants321875 +Node: Scalar Constants322566 +Ref: Scalar Constants-Footnote-1323428 +Node: Nondecimal-numbers323678 +Node: Regexp Constants326688 +Node: Using Constant Regexps327214 +Node: Variables330377 +Node: Using Variables331034 +Node: Assignment Options332945 +Node: Conversion334820 +Node: Strings And Numbers335344 +Ref: Strings And Numbers-Footnote-1338409 +Node: Locale influences conversions338518 +Ref: table-locale-affects341264 +Node: All Operators341856 +Node: Arithmetic Ops342485 +Node: Concatenation344990 +Ref: Concatenation-Footnote-1347809 +Node: Assignment Ops347916 +Ref: table-assign-ops352895 +Node: Increment Ops354205 +Node: Truth Values and Conditions357636 +Node: Truth Values358719 +Node: Typing and Comparison359768 +Node: Variable Typing360584 +Node: Comparison Operators364251 +Ref: table-relational-ops364661 +Node: POSIX String Comparison368156 +Ref: POSIX String Comparison-Footnote-1369228 +Node: Boolean Ops369367 +Ref: Boolean Ops-Footnote-1373845 +Node: Conditional Exp373936 +Node: Function Calls375674 +Node: Precedence379554 +Node: Locales383214 +Node: Expressions Summary384846 +Node: Patterns and Actions387417 +Node: Pattern Overview388537 +Node: Regexp Patterns390216 +Node: Expression Patterns390759 +Node: Ranges394539 +Node: BEGIN/END397646 +Node: Using BEGIN/END398407 +Ref: Using BEGIN/END-Footnote-1401143 +Node: I/O And BEGIN/END401249 +Node: BEGINFILE/ENDFILE403564 +Node: Empty406461 +Node: Using Shell Variables406778 +Node: Action Overview409051 +Node: Statements411377 +Node: If Statement413225 +Node: While Statement414720 +Node: Do Statement416748 +Node: For Statement417896 +Node: Switch Statement421054 +Node: Break Statement423436 +Node: Continue Statement425529 +Node: Next Statement427356 +Node: Nextfile Statement429737 +Node: Exit Statement432365 +Node: Built-in Variables434776 +Node: User-modified435909 +Ref: User-modified-Footnote-1443543 +Node: Auto-set443605 +Ref: Auto-set-Footnote-1457314 +Ref: Auto-set-Footnote-2457519 +Node: ARGC and ARGV457575 +Node: Pattern Action Summary461793 +Node: Arrays464226 +Node: Array Basics465555 +Node: Array Intro466399 +Ref: figure-array-elements468333 +Ref: Array Intro-Footnote-1470953 +Node: Reference to Elements471081 +Node: Assigning Elements473543 +Node: Array Example474034 +Node: Scanning an Array475793 +Node: Controlling Scanning478813 +Ref: Controlling Scanning-Footnote-1484207 +Node: Numeric Array Subscripts484523 +Node: Uninitialized Subscripts486708 +Node: Delete488325 +Ref: Delete-Footnote-1491074 +Node: Multidimensional491131 +Node: Multiscanning494228 +Node: Arrays of Arrays495817 +Node: Arrays Summary500571 +Node: Functions502662 +Node: Built-in503701 +Node: Calling Built-in504779 +Node: Numeric Functions506774 +Ref: Numeric Functions-Footnote-1511592 +Ref: Numeric Functions-Footnote-2511949 +Ref: Numeric Functions-Footnote-3511997 +Node: String Functions512269 +Ref: String Functions-Footnote-1535770 +Ref: String Functions-Footnote-2535899 +Ref: String Functions-Footnote-3536147 +Node: Gory Details536234 +Ref: table-sub-escapes538015 +Ref: table-sub-proposed539530 +Ref: table-posix-sub540892 +Ref: table-gensub-escapes542429 +Ref: Gory Details-Footnote-1543262 +Node: I/O Functions543413 +Ref: I/O Functions-Footnote-1550649 +Node: Time Functions550796 +Ref: Time Functions-Footnote-1561305 +Ref: Time Functions-Footnote-2561373 +Ref: Time Functions-Footnote-3561531 +Ref: Time Functions-Footnote-4561642 +Ref: Time Functions-Footnote-5561754 +Ref: Time Functions-Footnote-6561981 +Node: Bitwise Functions562247 +Ref: table-bitwise-ops562809 +Ref: Bitwise Functions-Footnote-1567137 +Node: Type Functions567309 +Node: I18N Functions568461 +Node: User-defined570108 +Node: Definition Syntax570913 +Ref: Definition Syntax-Footnote-1576572 +Node: Function Example576643 +Ref: Function Example-Footnote-1579564 +Node: Function Caveats579586 +Node: Calling A Function580104 +Node: Variable Scope581062 +Node: Pass By Value/Reference584055 +Node: Return Statement587552 +Node: Dynamic Typing590531 +Node: Indirect Calls591460 +Ref: Indirect Calls-Footnote-1601325 +Node: Functions Summary601453 +Node: Library Functions604155 +Ref: Library Functions-Footnote-1607763 +Ref: Library Functions-Footnote-2607906 +Node: Library Names608077 +Ref: Library Names-Footnote-1611535 +Ref: Library Names-Footnote-2611758 +Node: General Functions611844 +Node: Strtonum Function612947 +Node: Assert Function615969 +Node: Round Function619293 +Node: Cliff Random Function620834 +Node: Ordinal Functions621850 +Ref: Ordinal Functions-Footnote-1624913 +Ref: Ordinal Functions-Footnote-2625165 +Node: Join Function625376 +Ref: Join Function-Footnote-1627146 +Node: Getlocaltime Function627346 +Node: Readfile Function631090 +Node: Shell Quoting633062 +Node: Data File Management634463 +Node: Filetrans Function635095 +Node: Rewind Function639191 +Node: File Checking640577 +Ref: File Checking-Footnote-1641910 +Node: Empty Files642111 +Node: Ignoring Assigns644090 +Node: Getopt Function645640 +Ref: Getopt Function-Footnote-1657104 +Node: Passwd Functions657304 +Ref: Passwd Functions-Footnote-1666144 +Node: Group Functions666232 +Ref: Group Functions-Footnote-1674129 +Node: Walking Arrays674334 +Node: Library Functions Summary677340 +Node: Library Exercises678742 +Node: Sample Programs680022 +Node: Running Examples680792 +Node: Clones681520 +Node: Cut Program682744 +Node: Egrep Program692464 +Ref: Egrep Program-Footnote-1699967 +Node: Id Program700077 +Node: Split Program703753 +Ref: Split Program-Footnote-1707207 +Node: Tee Program707335 +Node: Uniq Program710124 +Node: Wc Program717543 +Ref: Wc Program-Footnote-1721793 +Node: Miscellaneous Programs721887 +Node: Dupword Program723100 +Node: Alarm Program725131 +Node: Translate Program729936 +Ref: Translate Program-Footnote-1734499 +Node: Labels Program734769 +Ref: Labels Program-Footnote-1738120 +Node: Word Sorting738204 +Node: History Sorting742274 +Node: Extract Program744109 +Node: Simple Sed751633 +Node: Igawk Program754703 +Ref: Igawk Program-Footnote-1769029 +Ref: Igawk Program-Footnote-2769230 +Ref: Igawk Program-Footnote-3769352 +Node: Anagram Program769467 +Node: Signature Program772528 +Node: Programs Summary773775 +Node: Programs Exercises774996 +Ref: Programs Exercises-Footnote-1779127 +Node: Advanced Features779218 +Node: Nondecimal Data781200 +Node: Array Sorting782790 +Node: Controlling Array Traversal783490 +Ref: Controlling Array Traversal-Footnote-1791856 +Node: Array Sorting Functions791974 +Ref: Array Sorting Functions-Footnote-1795860 +Node: Two-way I/O796056 +Ref: Two-way I/O-Footnote-1801001 +Ref: Two-way I/O-Footnote-2801187 +Node: TCP/IP Networking801269 +Node: Profiling804141 +Node: Advanced Features Summary812412 +Node: Internationalization814345 +Node: I18N and L10N815825 +Node: Explaining gettext816511 +Ref: Explaining gettext-Footnote-1821536 +Ref: Explaining gettext-Footnote-2821720 +Node: Programmer i18n821885 +Ref: Programmer i18n-Footnote-1826761 +Node: Translator i18n826810 +Node: String Extraction827604 +Ref: String Extraction-Footnote-1828735 +Node: Printf Ordering828821 +Ref: Printf Ordering-Footnote-1831607 +Node: I18N Portability831671 +Ref: I18N Portability-Footnote-1834127 +Node: I18N Example834190 +Ref: I18N Example-Footnote-1836993 +Node: Gawk I18N837065 +Node: I18N Summary837709 +Node: Debugger839049 +Node: Debugging840071 +Node: Debugging Concepts840512 +Node: Debugging Terms842322 +Node: Awk Debugging844894 +Node: Sample Debugging Session845800 +Node: Debugger Invocation846334 +Node: Finding The Bug847719 +Node: List of Debugger Commands854198 +Node: Breakpoint Control855530 +Node: Debugger Execution Control859207 +Node: Viewing And Changing Data862566 +Node: Execution Stack865942 +Node: Debugger Info867577 +Node: Miscellaneous Debugger Commands871622 +Node: Readline Support876623 +Node: Limitations877517 +Node: Debugging Summary879632 +Node: Arbitrary Precision Arithmetic880806 +Node: Computer Arithmetic882222 +Ref: table-numeric-ranges885821 +Ref: Computer Arithmetic-Footnote-1886345 +Node: Math Definitions886402 +Ref: table-ieee-formats889697 +Ref: Math Definitions-Footnote-1890301 +Node: MPFR features890406 +Node: FP Math Caution892077 +Ref: FP Math Caution-Footnote-1893127 +Node: Inexactness of computations893496 +Node: Inexact representation894455 +Node: Comparing FP Values895813 +Node: Errors accumulate896895 +Node: Getting Accuracy898327 +Node: Try To Round901031 +Node: Setting precision901930 +Ref: table-predefined-precision-strings902614 +Node: Setting the rounding mode904443 +Ref: table-gawk-rounding-modes904807 +Ref: Setting the rounding mode-Footnote-1908259 +Node: Arbitrary Precision Integers908438 +Ref: Arbitrary Precision Integers-Footnote-1913336 +Node: POSIX Floating Point Problems913485 +Ref: POSIX Floating Point Problems-Footnote-1917364 +Node: Floating point summary917402 +Node: Dynamic Extensions919589 +Node: Extension Intro921141 +Node: Plugin License922406 +Node: Extension Mechanism Outline923203 +Ref: figure-load-extension923631 +Ref: figure-register-new-function925111 +Ref: figure-call-new-function926115 +Node: Extension API Description928102 +Node: Extension API Functions Introduction929552 +Node: General Data Types934373 +Ref: General Data Types-Footnote-1940273 +Node: Memory Allocation Functions940572 +Ref: Memory Allocation Functions-Footnote-1943411 +Node: Constructor Functions943510 +Node: Registration Functions945249 +Node: Extension Functions945934 +Node: Exit Callback Functions948231 +Node: Extension Version String949479 +Node: Input Parsers950142 +Node: Output Wrappers960017 +Node: Two-way processors964530 +Node: Printing Messages966793 +Ref: Printing Messages-Footnote-1967869 +Node: Updating `ERRNO'968021 +Node: Requesting Values968761 +Ref: table-value-types-returned969488 +Node: Accessing Parameters970445 +Node: Symbol Table Access971679 +Node: Symbol table by name972193 +Node: Symbol table by cookie974213 +Ref: Symbol table by cookie-Footnote-1978358 +Node: Cached values978421 +Ref: Cached values-Footnote-1981917 +Node: Array Manipulation982008 +Ref: Array Manipulation-Footnote-1983106 +Node: Array Data Types983143 +Ref: Array Data Types-Footnote-1985798 +Node: Array Functions985890 +Node: Flattening Arrays989749 +Node: Creating Arrays996651 +Node: Extension API Variables1001422 +Node: Extension Versioning1002058 +Node: Extension API Informational Variables1003949 +Node: Extension API Boilerplate1005014 +Node: Finding Extensions1008823 +Node: Extension Example1009383 +Node: Internal File Description1010155 +Node: Internal File Ops1014222 +Ref: Internal File Ops-Footnote-11025973 +Node: Using Internal File Ops1026113 +Ref: Using Internal File Ops-Footnote-11028496 +Node: Extension Samples1028769 +Node: Extension Sample File Functions1030297 +Node: Extension Sample Fnmatch1037978 +Node: Extension Sample Fork1039466 +Node: Extension Sample Inplace1040681 +Node: Extension Sample Ord1042357 +Node: Extension Sample Readdir1043193 +Ref: table-readdir-file-types1044070 +Node: Extension Sample Revout1044881 +Node: Extension Sample Rev2way1045470 +Node: Extension Sample Read write array1046210 +Node: Extension Sample Readfile1048150 +Node: Extension Sample Time1049245 +Node: Extension Sample API Tests1050593 +Node: gawkextlib1051084 +Node: Extension summary1053762 +Node: Extension Exercises1057451 +Node: Language History1058173 +Node: V7/SVR3.11059829 +Node: SVR41061982 +Node: POSIX1063416 +Node: BTL1064797 +Node: POSIX/GNU1065528 +Node: Feature History1071364 +Node: Common Extensions1085158 +Node: Ranges and Locales1086530 +Ref: Ranges and Locales-Footnote-11091149 +Ref: Ranges and Locales-Footnote-21091176 +Ref: Ranges and Locales-Footnote-31091411 +Node: Contributors1091632 +Node: History summary1097172 +Node: Installation1098551 +Node: Gawk Distribution1099497 +Node: Getting1099981 +Node: Extracting1100804 +Node: Distribution contents1102441 +Node: Unix Installation1108543 +Node: Quick Installation1109226 +Node: Shell Startup Files1111637 +Node: Additional Configuration Options1112716 +Node: Configuration Philosophy1114520 +Node: Non-Unix Installation1116889 +Node: PC Installation1117347 +Node: PC Binary Installation1118667 +Node: PC Compiling1120515 +Ref: PC Compiling-Footnote-11123536 +Node: PC Testing1123645 +Node: PC Using1124821 +Node: Cygwin1128936 +Node: MSYS1129706 +Node: VMS Installation1130207 +Node: VMS Compilation1130999 +Ref: VMS Compilation-Footnote-11132228 +Node: VMS Dynamic Extensions1132286 +Node: VMS Installation Details1133970 +Node: VMS Running1136221 +Node: VMS GNV1139061 +Node: VMS Old Gawk1139796 +Node: Bugs1140266 +Node: Other Versions1144155 +Node: Installation summary1150589 +Node: Notes1151648 +Node: Compatibility Mode1152513 +Node: Additions1153295 +Node: Accessing The Source1154220 +Node: Adding Code1155655 +Node: New Ports1161812 +Node: Derived Files1166294 +Ref: Derived Files-Footnote-11171769 +Ref: Derived Files-Footnote-21171803 +Ref: Derived Files-Footnote-31172399 +Node: Future Extensions1172513 +Node: Implementation Limitations1173119 +Node: Extension Design1174367 +Node: Old Extension Problems1175521 +Ref: Old Extension Problems-Footnote-11177038 +Node: Extension New Mechanism Goals1177095 +Ref: Extension New Mechanism Goals-Footnote-11180455 +Node: Extension Other Design Decisions1180644 +Node: Extension Future Growth1182752 +Node: Old Extension Mechanism1183588 +Node: Notes summary1185350 +Node: Basic Concepts1186536 +Node: Basic High Level1187217 +Ref: figure-general-flow1187489 +Ref: figure-process-flow1188088 +Ref: Basic High Level-Footnote-11191317 +Node: Basic Data Typing1191502 +Node: Glossary1194830 +Node: Copying1226759 +Node: GNU Free Documentation License1264315 +Node: Index1289451 End Tag Table |