diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2014-08-24 22:16:12 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2014-08-24 22:16:12 +0300 |
commit | cd3f4b04ef1a3a0027e72ed6d7af2fcab5ca64df (patch) | |
tree | 367fb360e952be56470effbd5b93b3ff3e379e82 /doc/gawk.info | |
parent | 3defec04e39c4ca6987a21f79686576d9823c653 (diff) | |
download | egawk-cd3f4b04ef1a3a0027e72ed6d7af2fcab5ca64df.tar.gz egawk-cd3f4b04ef1a3a0027e72ed6d7af2fcab5ca64df.tar.bz2 egawk-cd3f4b04ef1a3a0027e72ed6d7af2fcab5ca64df.zip |
More reviewer comments. This is getting harder.
Diffstat (limited to 'doc/gawk.info')
-rw-r--r-- | doc/gawk.info | 1276 |
1 files changed, 644 insertions, 632 deletions
diff --git a/doc/gawk.info b/doc/gawk.info index 9e4f3ec7..caf36e31 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -905,23 +905,19 @@ A Rose by Any Other Name The `awk' language has evolved over the years. Full details are provided in *note Language History::. The language described in this -Info file is often referred to as "new `awk'" (`nawk'). +Info file is often referred to as "new `awk'". By analogy, the +original version of `awk' is referred to as "old `awk'." - For some time after new `awk' was introduced, there were systems -with multiple versions of `awk'. Some systems had an `awk' utility -that implemented the original version of the `awk' language and a -`nawk' utility for the new version. Others had an `oawk' version for -the "old `awk'" language and plain `awk' for the new one. Still others -only had one version, which is usually the new one. + Today, on most 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: - Today, only Solaris systems still use an old `awk' for the default -`awk' utility. (A more modern `awk' lives in `/usr/xpg6/bin' on these -systems.) All other modern systems use some version of new `awk'.(1) + $ awk 1 /dev/null + error--> awk: syntax error near line 1 + error--> awk: bailing out near line 1 - It is likely that you already have some version of new `awk' on your -system, which is what you should use when running your programs. (Of -course, if you're reading this Info file, chances are good that you -have `gawk'!) +In this case, you should find a version of new `awk', or just install +`gawk'! Throughout this Info file, whenever we refer to a language feature that should be available in any complete implementation of POSIX `awk', @@ -930,7 +926,9 @@ specific to the GNU implementation, we use the term `gawk'. ---------- Footnotes ---------- - (1) Many of these systems use `gawk' for their `awk' implementation! + (1) Only Solaris systems still use an old `awk' for the default +`awk' utility. A more modern `awk' lives in `/usr/xpg6/bin' on these +systems. File: gawk.info, Node: This Manual, Next: Conventions, Prev: Names, Up: Preface @@ -1548,8 +1546,8 @@ like this: BEGIN { print "Don't Panic!" } After making this file executable (with the `chmod' utility), simply -type `advice' at the shell and the system arranges to run `awk'(2) as -if you had typed `awk -f advice': +type `advice' at the shell and the system arranges to run `awk' as if +you had typed `awk -f advice': $ chmod +x advice $ advice @@ -1563,7 +1561,24 @@ at the shell.) program that users can invoke without their having to know that the program is written in `awk'. - Portability Issues with `#!' + Understanding `#!' + + `awk' is an "interpreted" language. This means that the `awk' +utility reads your program and then processes your data according to +the instructions in your program. (This is different from a "compiled" +language such as C, where your program is first compiled into machine +code that is executed directly by your system's hardware.) The `awk' +utility is thus termed an "interpreter". Many modern languages are +interperted. + + The line beginning with `#!' lists the full file name of an +interpreter to run and a single optional initial command-line argument +to pass to that interpreter. The operating system then runs the +interpreter with the given argument and the full argument list of the +executed program. The first argument in the list is the full file name +of the `awk' program. The rest of the argument list contains either +options to `awk', or data files, or both. Note that on many systems +`awk' may be found in `/usr/bin' instead of in `/bin'. Caveat Emptor. Some systems limit the length of the interpreter name to 32 characters. Often, this can be dealt with by using a symbolic link. @@ -1585,15 +1600,6 @@ the name of your script (`advice'). (d.c.) Don't rely on the value of (1) The `#!' mechanism works on GNU/Linux systems, BSD-based systems and commercial Unix systems. - (2) The line beginning with `#!' lists the full file name of an -interpreter to run and a single optional initial command-line argument -to pass to that interpreter. The operating system then runs the -interpreter with the given argument and the full argument list of the -executed program. The first argument in the list is the full file name -of the `awk' program. The rest of the argument list contains either -options to `awk', or data files, or both. Note that on many systems -`awk' may be found in `/usr/bin' instead of in `/bin'. Caveat Emptor. - File: gawk.info, Node: Comments, Next: Quoting, Prev: Executable Scripts, Up: Running gawk @@ -1838,7 +1844,8 @@ shipments during the year. Each record contains the month, the number of green crates shipped, the number of red boxes shipped, the number of orange bags shipped, and the number of blue packages shipped, respectively. There are 16 entries, covering the 12 months of last year -and the first four months of the current year. +and the first four months of the current year. An empty line separates +the data for the two years. Jan 13 25 15 115 Feb 15 32 24 226 @@ -1918,11 +1925,6 @@ often more than one way to do things in `awk'. At some point, you may want to look back at these examples and see if you can come up with different ways to do the same things shown here: - * Print the length of the longest input line: - - awk '{ if (length($0) > max) max = length($0) } - END { print max }' data - * Print every line that is longer than 80 characters: awk 'length($0) > 80' data @@ -1930,15 +1932,20 @@ different ways to do the same things shown here: The sole rule has a relational expression as its pattern and it has no action--so it uses the default action, printing the record. + * Print the length of the longest input line: + + awk '{ if (length($0) > max) max = length($0) } + END { print max }' data + * Print the length of the longest line in `data': expand data | awk '{ if (x < length($0)) x = length($0) } END { print "maximum line length is " x }' - This example differs slightly from the first example in this list: - The input is processed by the `expand' utility to change TABs into - spaces, so the widths compared are actually the right-margin - columns, as opposed to the number of input characters on each line. + This example differs slightly from the previous one: The input is + processed by the `expand' utility to change TABs into spaces, so + the widths compared are actually the right-margin columns, as + opposed to the number of input characters on each line. * Print every line that has at least one field: @@ -3526,22 +3533,20 @@ sequences and that are not listed in the table stand for themselves: matches of one `p' followed by any number of `h's. This also matches just `p' if no `h's are present. - The `*' repeats the _smallest_ possible preceding expression. - (Use parentheses if you want to repeat a larger expression.) It - finds as many repetitions as possible. For example, `awk - '/\(c[ad][ad]*r x\)/ { print }' sample' prints every record in - `sample' containing a string of the form `(car x)', `(cdr x)', - `(cadr x)', and so on. Notice the escaping of the parentheses by - preceding them with backslashes. + There are two subtle points to understand about how `*' works. + First, the `*' applies only to the single preceding regular + expression component (e.g., in `ph*', it applies just to the `h'). + To cause `*' to apply to a larger sub-expression, use parentheses: + `(ph)*' matches `ph', `phph', `phphph' and so on. + + Second, `*' finds as many repetititons as possible. If the text to + be matched is `phhhhhhhhhhhhhhooey', `ph*' matches all of the `h's. `+' This symbol is similar to `*', except that the preceding expression must be matched at least once. This means that `wh+y' would match `why' and `whhy', but not `wy', whereas `wh*y' would - match all three. The following is a simpler way of writing the - last `*' example: - - awk '/\(c[ad]+r x\)/ { print }' sample + match all three. `?' This symbol is similar to `*', except that the preceding @@ -10718,7 +10723,8 @@ array element value: Index 0 Value 8 Index 2 Value "" -The pairs are shown in jumbled order because their order is irrelevant. +The pairs are shown in jumbled order because their order is +irrelevant.(1) One advantage of associative arrays is that new pairs can be added at any time. For example, suppose a tenth element is added to the array @@ -10747,9 +10753,10 @@ from English to French: Here we decided to translate the number one in both spelled-out and numeric form--thus illustrating that a single array can have both numbers and strings as indices. (In fact, array subscripts are always -strings; this is discussed in more detail in *note Numeric Array -Subscripts::.) Here, the number `1' isn't double-quoted, since `awk' -automatically converts it to a string. +strings. There are some subtleties to how numbers work when used as +array subscripts; this is discussed in more detail in *note Numeric +Array Subscripts::.) Here, the number `1' isn't double-quoted, since +`awk' automatically converts it to a string. The value of `IGNORECASE' has no effect upon array subscripting. The identical string value used to store an array element must be used @@ -10760,6 +10767,11 @@ starting at one. (*Note String Functions::.) `awk''s arrays are efficient--the time to access an element is independent of the number of elements in the array. + ---------- Footnotes ---------- + + (1) The ordering will vary among `awk' implementations, which +typically use hash tables to store array elements and values. + File: gawk.info, Node: Reference to Elements, Next: Assigning Elements, Prev: Array Intro, Up: Array Basics @@ -13240,7 +13252,10 @@ File: gawk.info, Node: Definition Syntax, Next: Function Example, Up: User-de 9.2.1 Function Definition Syntax -------------------------------- -Definitions of functions can appear anywhere between the rules of an + It's entirely fair to say that the `awk' syntax for local variable + definitions is appallingly awful -- Brian Kernighan + + Definitions of functions can appear anywhere between the rules of an `awk' program. Thus, the general form of an `awk' program is extended to include sequences of rules _and_ user-defined function definitions. There is no need to put the definition of a function before all uses of @@ -13270,7 +13285,7 @@ have a parameter with the same name as the function itself. In addition, according to the POSIX standard, function parameters cannot have the same name as one of the special built-in variables (*note Built-in Variables::). Not all versions of `awk' enforce this -restriction.) +restriction. Local variables act like the empty string if referenced where a string value is required, and like zero if referenced where a numeric @@ -30968,7 +30983,7 @@ Index * + (plus sign), ++ operator: Increment Ops. (line 11) * + (plus sign), += operator <1>: Precedence. (line 95) * + (plus sign), += operator: Assignment Ops. (line 82) -* + (plus sign), regexp operator: Regexp Operators. (line 104) +* + (plus sign), regexp operator: Regexp Operators. (line 105) * , (comma), in range patterns: Ranges. (line 6) * - (hyphen), - operator: Precedence. (line 52) * - (hyphen), -- operator <1>: Precedence. (line 46) @@ -31111,7 +31126,7 @@ Index * ? (question mark), ?: operator: Precedence. (line 92) * ? (question mark), regexp operator <1>: GNU Regexp Operators. (line 59) -* ? (question mark), regexp operator: Regexp Operators. (line 113) +* ? (question mark), regexp operator: Regexp Operators. (line 111) * [] (square brackets), regexp operator: Regexp Operators. (line 56) * \ (backslash): Comments. (line 50) * \ (backslash) in shell commands: Read Terminal. (line 25) @@ -31233,7 +31248,7 @@ Index * ARGC/ARGV variables, command-line arguments: Other Arguments. (line 12) * ARGC/ARGV variables, how to use: ARGC and ARGV. (line 6) -* ARGC/ARGV variables, portability and: Executable Scripts. (line 42) +* ARGC/ARGV variables, portability and: Executable Scripts. (line 59) * ARGIND variable: Auto-set. (line 44) * ARGIND variable, command-line arguments: Other Arguments. (line 12) * arguments, command-line <1>: ARGC and ARGV. (line 6) @@ -31253,7 +31268,7 @@ Index * arrays: Arrays. (line 6) * arrays of arrays: Arrays of Arrays. (line 6) * arrays, an example of using: Array Example. (line 6) -* arrays, and IGNORECASE variable: Array Intro. (line 92) +* arrays, and IGNORECASE variable: Array Intro. (line 94) * arrays, as parameters to functions: Pass By Value/Reference. (line 47) * arrays, associative: Array Intro. (line 50) @@ -31281,7 +31296,7 @@ Index (line 6) * arrays, sorting, and IGNORECASE variable: Array Sorting Functions. (line 83) -* arrays, sparse: Array Intro. (line 71) +* arrays, sparse: Array Intro. (line 72) * arrays, subscripts, uninitialized variables as: Uninitialized Subscripts. (line 6) * arrays, unassigned elements: Reference to Elements. @@ -31368,8 +31383,7 @@ Index * awk, uses for <1>: When. (line 6) * awk, uses for <2>: Getting Started. (line 12) * awk, uses for: Preface. (line 21) -* awk, versions of <1>: V7/SVR3.1. (line 6) -* awk, versions of: Names. (line 10) +* awk, versions of: V7/SVR3.1. (line 6) * awk, versions of, changes between SVR3.1 and SVR4: SVR4. (line 6) * awk, versions of, changes between SVR4 and POSIX awk: POSIX. (line 6) @@ -31578,7 +31592,7 @@ Index * case keyword: Switch Statement. (line 6) * case sensitivity, and regexps: User-modified. (line 76) * case sensitivity, and string comparisons: User-modified. (line 76) -* case sensitivity, array indices and: Array Intro. (line 92) +* case sensitivity, array indices and: Array Intro. (line 94) * case sensitivity, converting case: String Functions. (line 520) * case sensitivity, example programs: Library Functions. (line 53) * case sensitivity, gawk: Case-sensitivity. (line 26) @@ -31657,7 +31671,7 @@ Index * common extensions, \x escape sequence: Escape Sequences. (line 61) * common extensions, BINMODE variable: PC Using. (line 33) * common extensions, delete to delete entire arrays: Delete. (line 39) -* common extensions, func keyword: Definition Syntax. (line 89) +* common extensions, func keyword: Definition Syntax. (line 92) * common extensions, length() applied to an array: String Functions. (line 197) * common extensions, RS as a regexp: gawk split records. (line 6) @@ -32176,7 +32190,7 @@ Index * extensions, common, BINMODE variable: PC Using. (line 33) * extensions, common, delete to delete entire arrays: Delete. (line 39) * extensions, common, fflush() function: I/O Functions. (line 43) -* extensions, common, func keyword: Definition Syntax. (line 89) +* extensions, common, func keyword: Definition Syntax. (line 92) * extensions, common, length() applied to an array: String Functions. (line 197) * extensions, common, RS as a regexp: gawk split records. (line 6) @@ -32366,7 +32380,7 @@ Index * functions, built-in <1>: Functions. (line 6) * functions, built-in: Function Calls. (line 10) * functions, built-in, evaluation order: Calling Built-in. (line 30) -* functions, defining: Definition Syntax. (line 6) +* functions, defining: Definition Syntax. (line 9) * functions, library: Library Functions. (line 6) * functions, library, assertions: Assert Function. (line 6) * functions, library, associative arrays and: Library Names. (line 57) @@ -32389,9 +32403,9 @@ Index * functions, library, rounding numbers: Round Function. (line 6) * functions, library, user database, reading: Passwd Functions. (line 6) -* functions, names of <1>: Definition Syntax. (line 20) +* functions, names of <1>: Definition Syntax. (line 23) * functions, names of: Arrays. (line 18) -* functions, recursive: Definition Syntax. (line 79) +* functions, recursive: Definition Syntax. (line 82) * functions, string-translation: I18N Functions. (line 6) * functions, undefined: Pass By Value/Reference. (line 71) @@ -32450,7 +32464,7 @@ Index * gawk, IGNORECASE variable in <1>: Array Sorting Functions. (line 83) * gawk, IGNORECASE variable in <2>: String Functions. (line 58) -* gawk, IGNORECASE variable in <3>: Array Intro. (line 92) +* gawk, IGNORECASE variable in <3>: Array Intro. (line 94) * gawk, IGNORECASE variable in <4>: User-modified. (line 76) * gawk, IGNORECASE variable in: Case-sensitivity. (line 26) * gawk, implementation issues: Notes. (line 6) @@ -32464,7 +32478,7 @@ Index (line 13) * gawk, interpreter, adding code to: Using Internal File Ops. (line 6) -* gawk, interval expressions and: Regexp Operators. (line 141) +* 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, list of contributors to: Contributors. (line 6) @@ -32482,7 +32496,7 @@ Index (line 26) * gawk, regular expressions, operators: GNU Regexp Operators. (line 6) -* gawk, regular expressions, precedence: Regexp Operators. (line 163) +* gawk, regular expressions, precedence: Regexp Operators. (line 161) * gawk, RT variable in <1>: Auto-set. (line 257) * gawk, RT variable in <2>: Multiple Line. (line 129) * gawk, RT variable in: awk split records. (line 124) @@ -32616,7 +32630,7 @@ Index * ignore breakpoint: Breakpoint Control. (line 87) * ignore debugger command: Breakpoint Control. (line 87) * IGNORECASE variable: User-modified. (line 76) -* IGNORECASE variable, and array indices: Array Intro. (line 92) +* IGNORECASE variable, and array indices: Array Intro. (line 94) * IGNORECASE variable, and array sorting functions: Array Sorting Functions. (line 83) * IGNORECASE variable, in example programs: Library Functions. @@ -32701,7 +32715,7 @@ Index * internationalizing a program: Explaining gettext. (line 6) * interpreted programs <1>: Glossary. (line 356) * interpreted programs: Basic High Level. (line 15) -* interval expressions, regexp operator: Regexp Operators. (line 118) +* interval expressions, regexp operator: Regexp Operators. (line 116) * inventory-shipped file: Sample Data Files. (line 32) * invoke shell command: I/O Functions. (line 75) * isarray: Type Functions. (line 11) @@ -32893,11 +32907,10 @@ Index * names, arrays/variables <1>: Library Names. (line 6) * names, arrays/variables: Arrays. (line 18) * names, functions <1>: Library Names. (line 6) -* names, functions: Definition Syntax. (line 20) +* names, functions: Definition Syntax. (line 23) * namespace issues <1>: Library Names. (line 6) * namespace issues: Arrays. (line 18) -* namespace issues, functions: Definition Syntax. (line 20) -* nawk utility: Names. (line 10) +* namespace issues, functions: Definition Syntax. (line 23) * NetBSD: Glossary. (line 611) * networks, programming: TCP/IP Networking. (line 6) * networks, support for: Special Network. (line 6) @@ -32976,7 +32989,6 @@ Index * numeric, output format: OFMT. (line 6) * numeric, strings: Variable Typing. (line 6) * o debugger command (alias for option): Debugger Info. (line 57) -* oawk utility: Names. (line 10) * obsolete features: Obsolete. (line 6) * octal numbers: Nondecimal-numbers. (line 6) * octal values, enabling interpretation of: Options. (line 211) @@ -33097,13 +33109,13 @@ Index * plus sign (+), ++ operator: Increment Ops. (line 11) * plus sign (+), += operator <1>: Precedence. (line 95) * plus sign (+), += operator: Assignment Ops. (line 82) -* plus sign (+), regexp operator: Regexp Operators. (line 104) +* plus sign (+), regexp operator: Regexp Operators. (line 105) * pointers to functions: Indirect Calls. (line 6) * portability: Escape Sequences. (line 98) * portability, #! (executable scripts): Executable Scripts. (line 33) * portability, ** operator and: Arithmetic Ops. (line 81) * portability, **= operator and: Assignment Ops. (line 143) -* portability, ARGV variable: Executable Scripts. (line 42) +* portability, ARGV variable: Executable Scripts. (line 59) * portability, backslash continuation and: Statements/Lines. (line 30) * portability, backslash in escape sequences: Escape Sequences. (line 116) @@ -33113,7 +33125,7 @@ Index (line 65) * portability, deleting array elements: Delete. (line 56) * portability, example programs: Library Functions. (line 42) -* portability, functions, defining: Definition Syntax. (line 105) +* portability, functions, defining: Definition Syntax. (line 108) * portability, gawk: New Ports. (line 6) * portability, gettext library and: Explaining gettext. (line 11) * portability, internationalization and: I18N Portability. (line 6) @@ -33159,18 +33171,18 @@ Index (line 40) * POSIX awk, field separators and: Fields. (line 6) * POSIX awk, FS variable and: User-modified. (line 60) -* POSIX awk, function keyword in: Definition Syntax. (line 89) +* POSIX awk, function keyword in: Definition Syntax. (line 92) * POSIX awk, functions and, gsub()/sub(): Gory Details. (line 90) * POSIX awk, functions and, length(): String Functions. (line 176) * POSIX awk, GNU long options and: Options. (line 15) -* POSIX awk, interval expressions in: Regexp Operators. (line 137) +* POSIX awk, interval expressions in: Regexp Operators. (line 135) * POSIX awk, next/nextfile statements and: Next Statement. (line 45) * POSIX awk, numeric strings and: Variable Typing. (line 6) * POSIX awk, OFMT variable and <1>: Strings And Numbers. (line 57) * POSIX awk, OFMT variable and: OFMT. (line 27) * POSIX awk, period (.), using: Regexp Operators. (line 51) * POSIX awk, printf format strings and: Format Modifiers. (line 159) -* POSIX awk, regular expressions and: Regexp Operators. (line 163) +* POSIX awk, regular expressions and: Regexp Operators. (line 161) * POSIX awk, timestamps and: Time Functions. (line 6) * POSIX awk, | I/O operator and: Getline/Pipe. (line 55) * POSIX mode: Options. (line 254) @@ -33181,7 +33193,7 @@ Index * PREC variable: User-modified. (line 124) * precedence <1>: Precedence. (line 6) * precedence: Increment Ops. (line 60) -* precedence, regexp operators: Regexp Operators. (line 158) +* precedence, regexp operators: Regexp Operators. (line 156) * print debugger command: Viewing And Changing Data. (line 36) * print statement: Printing. (line 16) @@ -33248,7 +33260,7 @@ Index * programming conventions, functions, calling: Calling Built-in. (line 10) * programming conventions, functions, writing: Definition Syntax. - (line 61) + (line 64) * programming conventions, gawk extensions: Internal File Ops. (line 45) * programming conventions, private variable names: Library Names. @@ -33268,7 +33280,7 @@ Index * question mark (?), ?: operator: Precedence. (line 92) * question mark (?), regexp operator <1>: GNU Regexp Operators. (line 59) -* question mark (?), regexp operator: Regexp Operators. (line 113) +* question mark (?), regexp operator: Regexp Operators. (line 111) * QuikTrim Awk: Other Versions. (line 135) * quit debugger command: Miscellaneous Debugger Commands. (line 99) @@ -33318,7 +33330,7 @@ Index * records, splitting input into: Records. (line 6) * records, terminating: awk split records. (line 124) * records, treating files as: gawk split records. (line 92) -* recursive functions: Definition Syntax. (line 79) +* recursive functions: Definition Syntax. (line 82) * redirect gawk output, in debugger: Debugger Info. (line 72) * redirection of input: Getline/File. (line 6) * redirection of output: Redirection. (line 6) @@ -33368,7 +33380,7 @@ Index * regular expressions, operators, gawk: GNU Regexp Operators. (line 6) * regular expressions, operators, precedence of: Regexp Operators. - (line 158) + (line 156) * regular expressions, searching for: Egrep Program. (line 6) * relational operators, See comparison operators: Typing and Comparison. (line 9) @@ -33488,7 +33500,7 @@ Index * set directory of message catalogs: I18N Functions. (line 12) * set watchpoint: Viewing And Changing Data. (line 67) -* shadowing of variable values: Definition Syntax. (line 67) +* shadowing of variable values: Definition Syntax. (line 70) * shell quoting, double quote: Read Terminal. (line 25) * shell quoting, rules for: Quoting. (line 6) * shells, piping commands into: Redirection. (line 142) @@ -33541,7 +33553,6 @@ Index * sidebar, Matching the Null String: Gory Details. (line 141) * sidebar, Operator Evaluation Order: Increment Ops. (line 58) * sidebar, Piping into sh: Redirection. (line 140) -* sidebar, Portability Issues with #!: Executable Scripts. (line 31) * sidebar, Pre-POSIX awk Used OFMT For String Conversion: Strings And Numbers. (line 55) * sidebar, Recipe For A Programming Language: History. (line 6) @@ -33550,6 +33561,7 @@ Index (line 83) * sidebar, Syntactic Ambiguities Between /= and Regular Expressions: Assignment Ops. (line 146) +* sidebar, Understanding #!: Executable Scripts. (line 31) * sidebar, Understanding $0: Changing Fields. (line 134) * sidebar, Using \n in Bracket Expressions of Dynamic Regexps: Computed Regexps. (line 57) @@ -33605,7 +33617,7 @@ Index * source code, QuikTrim Awk: Other Versions. (line 135) * source code, Solaris awk: Other Versions. (line 96) * source files, search path for: Programs Exercises. (line 63) -* sparse arrays: Array Intro. (line 71) +* sparse arrays: Array Intro. (line 72) * Spencer, Henry: Glossary. (line 11) * split: String Functions. (line 313) * split string into array: String Functions. (line 294) @@ -33865,7 +33877,7 @@ Index * variables, names of: Arrays. (line 18) * variables, private: Library Names. (line 11) * variables, setting: Options. (line 32) -* variables, shadowing: Definition Syntax. (line 67) +* variables, shadowing: Definition Syntax. (line 70) * variables, types of: Assignment Ops. (line 40) * variables, types of, comparison expressions and: Typing and Comparison. (line 9) @@ -33968,546 +33980,546 @@ Ref: Preface-Footnote-149226 Ref: Preface-Footnote-249333 Node: History49565 Node: Names51939 -Ref: Names-Footnote-153403 -Node: This Manual53476 -Ref: This Manual-Footnote-159255 -Node: Conventions59355 -Node: Manual History61700 -Ref: Manual History-Footnote-164776 -Ref: Manual History-Footnote-264817 -Node: How To Contribute64891 -Node: Acknowledgments66130 -Node: Getting Started70878 -Node: Running gawk73312 -Node: One-shot74502 -Node: Read Terminal75727 -Ref: Read Terminal-Footnote-177690 -Node: Long77861 -Node: Executable Scripts79255 -Ref: Executable Scripts-Footnote-181088 -Ref: Executable Scripts-Footnote-281190 -Node: Comments81743 -Node: Quoting84216 -Node: DOS Quoting89529 -Node: Sample Data Files90204 -Node: Very Simple92758 -Node: Two Rules97531 -Node: More Complex99425 -Ref: More Complex-Footnote-1102357 -Node: Statements/Lines102442 -Ref: Statements/Lines-Footnote-1106898 -Node: Other Features107163 -Node: When108091 -Ref: When-Footnote-1109847 -Node: Intro Summary109912 -Node: Invoking Gawk110795 -Node: Command Line112310 -Node: Options113101 -Ref: Options-Footnote-1128877 -Node: Other Arguments128902 -Node: Naming Standard Input131564 -Node: Environment Variables132657 -Node: AWKPATH Variable133215 -Ref: AWKPATH Variable-Footnote-1136081 -Ref: AWKPATH Variable-Footnote-2136126 -Node: AWKLIBPATH Variable136386 -Node: Other Environment Variables137145 -Node: Exit Status140802 -Node: Include Files141477 -Node: Loading Shared Libraries145055 -Node: Obsolete146439 -Node: Undocumented147136 -Node: Invoking Summary147403 -Node: Regexp149003 -Node: Regexp Usage150462 -Node: Escape Sequences152495 -Node: Regexp Operators158312 -Ref: Regexp Operators-Footnote-1165830 -Ref: Regexp Operators-Footnote-2165977 -Node: Bracket Expressions166075 -Ref: table-char-classes168097 -Node: GNU Regexp Operators171037 -Node: Case-sensitivity174746 -Ref: Case-sensitivity-Footnote-1177638 -Ref: Case-sensitivity-Footnote-2177873 -Node: Leftmost Longest177981 -Node: Computed Regexps179182 -Node: Regexp Summary182554 -Node: Reading Files184023 -Node: Records186115 -Node: awk split records186837 -Node: gawk split records191695 -Ref: gawk split records-Footnote-1196216 -Node: Fields196253 -Ref: Fields-Footnote-1199217 -Node: Nonconstant Fields199303 -Ref: Nonconstant Fields-Footnote-1201533 -Node: Changing Fields201735 -Node: Field Separators207689 -Node: Default Field Splitting210391 -Node: Regexp Field Splitting211508 -Node: Single Character Fields214835 -Node: Command Line Field Separator215894 -Node: Full Line Fields219320 -Ref: Full Line Fields-Footnote-1219828 -Node: Field Splitting Summary219874 -Ref: Field Splitting Summary-Footnote-1223006 -Node: Constant Size223107 -Node: Splitting By Content227713 -Ref: Splitting By Content-Footnote-1231786 -Node: Multiple Line231826 -Ref: Multiple Line-Footnote-1237682 -Node: Getline237861 -Node: Plain Getline240072 -Node: Getline/Variable242167 -Node: Getline/File243314 -Node: Getline/Variable/File244698 -Ref: Getline/Variable/File-Footnote-1246297 -Node: Getline/Pipe246384 -Node: Getline/Variable/Pipe249070 -Node: Getline/Coprocess250177 -Node: Getline/Variable/Coprocess251429 -Node: Getline Notes252166 -Node: Getline Summary254970 -Ref: table-getline-variants255378 -Node: Read Timeout256290 -Ref: Read Timeout-Footnote-1260117 -Node: Command-line directories260175 -Node: Input Summary261079 -Node: Input Exercises264216 -Node: Printing264949 -Node: Print266671 -Node: Print Examples268164 -Node: Output Separators270943 -Node: OFMT272959 -Node: Printf274317 -Node: Basic Printf275223 -Node: Control Letters276762 -Node: Format Modifiers280753 -Node: Printf Examples286780 -Node: Redirection289244 -Node: Special Files296216 -Node: Special FD296749 -Ref: Special FD-Footnote-1300346 -Node: Special Network300420 -Node: Special Caveats301270 -Node: Close Files And Pipes302066 -Ref: Close Files And Pipes-Footnote-1309227 -Ref: Close Files And Pipes-Footnote-2309375 -Node: Output Summary309525 -Node: Output exercises310522 -Node: Expressions311202 -Node: Values312387 -Node: Constants313063 -Node: Scalar Constants313743 -Ref: Scalar Constants-Footnote-1314602 -Node: Nondecimal-numbers314852 -Node: Regexp Constants317852 -Node: Using Constant Regexps318327 -Node: Variables321399 -Node: Using Variables322054 -Node: Assignment Options323778 -Node: Conversion325653 -Node: Strings And Numbers326177 -Ref: Strings And Numbers-Footnote-1329239 -Node: Locale influences conversions329348 -Ref: table-locale-affects332065 -Node: All Operators332653 -Node: Arithmetic Ops333283 -Node: Concatenation335788 -Ref: Concatenation-Footnote-1338607 -Node: Assignment Ops338713 -Ref: table-assign-ops343696 -Node: Increment Ops344999 -Node: Truth Values and Conditions348437 -Node: Truth Values349520 -Node: Typing and Comparison350569 -Node: Variable Typing351362 -Node: Comparison Operators355014 -Ref: table-relational-ops355424 -Node: POSIX String Comparison358974 -Ref: POSIX String Comparison-Footnote-1360058 -Node: Boolean Ops360196 -Ref: Boolean Ops-Footnote-1364271 -Node: Conditional Exp364362 -Node: Function Calls366089 -Node: Precedence369969 -Node: Locales373638 -Node: Expressions Summary375269 -Node: Patterns and Actions377810 -Node: Pattern Overview378926 -Node: Regexp Patterns380603 -Node: Expression Patterns381146 -Node: Ranges384926 -Node: BEGIN/END388032 -Node: Using BEGIN/END388794 -Ref: Using BEGIN/END-Footnote-1391530 -Node: I/O And BEGIN/END391636 -Node: BEGINFILE/ENDFILE393907 -Node: Empty396838 -Node: Using Shell Variables397155 -Node: Action Overview399438 -Node: Statements401765 -Node: If Statement403613 -Node: While Statement405111 -Node: Do Statement407155 -Node: For Statement408311 -Node: Switch Statement411463 -Node: Break Statement413851 -Node: Continue Statement415892 -Node: Next Statement417717 -Node: Nextfile Statement420107 -Node: Exit Statement422743 -Node: Built-in Variables425147 -Node: User-modified426274 -Ref: User-modified-Footnote-1433963 -Node: Auto-set434025 -Ref: Auto-set-Footnote-1446607 -Ref: Auto-set-Footnote-2446812 -Node: ARGC and ARGV446868 -Node: Pattern Action Summary450772 -Node: Arrays452995 -Node: Array Basics454544 -Node: Array Intro455370 -Ref: figure-array-elements457343 -Node: Reference to Elements459750 -Node: Assigning Elements462200 -Node: Array Example462691 -Node: Scanning an Array464423 -Node: Controlling Scanning467424 -Ref: Controlling Scanning-Footnote-1472597 -Node: Delete472913 -Ref: Delete-Footnote-1475664 -Node: Numeric Array Subscripts475721 -Node: Uninitialized Subscripts477904 -Node: Multidimensional479529 -Node: Multiscanning482642 -Node: Arrays of Arrays484231 -Node: Arrays Summary488894 -Node: Functions490999 -Node: Built-in491872 -Node: Calling Built-in492950 -Node: Numeric Functions494938 -Ref: Numeric Functions-Footnote-1498972 -Ref: Numeric Functions-Footnote-2499329 -Ref: Numeric Functions-Footnote-3499377 -Node: String Functions499646 -Ref: String Functions-Footnote-1522643 -Ref: String Functions-Footnote-2522772 -Ref: String Functions-Footnote-3523020 -Node: Gory Details523107 -Ref: table-sub-escapes524880 -Ref: table-sub-proposed526400 -Ref: table-posix-sub527764 -Ref: table-gensub-escapes529304 -Ref: Gory Details-Footnote-1530480 -Node: I/O Functions530631 -Ref: I/O Functions-Footnote-1537741 -Node: Time Functions537888 -Ref: Time Functions-Footnote-1548352 -Ref: Time Functions-Footnote-2548420 -Ref: Time Functions-Footnote-3548578 -Ref: Time Functions-Footnote-4548689 -Ref: Time Functions-Footnote-5548801 -Ref: Time Functions-Footnote-6549028 -Node: Bitwise Functions549294 -Ref: table-bitwise-ops549856 -Ref: Bitwise Functions-Footnote-1554101 -Node: Type Functions554285 -Node: I18N Functions555427 -Node: User-defined557072 -Node: Definition Syntax557876 -Ref: Definition Syntax-Footnote-1563055 -Node: Function Example563124 -Ref: Function Example-Footnote-1565764 -Node: Function Caveats565786 -Node: Calling A Function566304 -Node: Variable Scope567259 -Node: Pass By Value/Reference570247 -Node: Return Statement573757 -Node: Dynamic Typing576741 -Node: Indirect Calls577670 -Node: Functions Summary587383 -Node: Library Functions589922 -Ref: Library Functions-Footnote-1593540 -Ref: Library Functions-Footnote-2593683 -Node: Library Names593854 -Ref: Library Names-Footnote-1597327 -Ref: Library Names-Footnote-2597547 -Node: General Functions597633 -Node: Strtonum Function598661 -Node: Assert Function601441 -Node: Round Function604767 -Node: Cliff Random Function606308 -Node: Ordinal Functions607324 -Ref: Ordinal Functions-Footnote-1610389 -Ref: Ordinal Functions-Footnote-2610641 -Node: Join Function610852 -Ref: Join Function-Footnote-1612623 -Node: Getlocaltime Function612823 -Node: Readfile Function616559 -Node: Data File Management618398 -Node: Filetrans Function619030 -Node: Rewind Function623099 -Node: File Checking624657 -Ref: File Checking-Footnote-1625789 -Node: Empty Files625990 -Node: Ignoring Assigns627969 -Node: Getopt Function629523 -Ref: Getopt Function-Footnote-1640826 -Node: Passwd Functions641029 -Ref: Passwd Functions-Footnote-1650008 -Node: Group Functions650096 -Ref: Group Functions-Footnote-1658027 -Node: Walking Arrays658240 -Node: Library Functions Summary659843 -Node: Library exercises661231 -Node: Sample Programs662511 -Node: Running Examples663281 -Node: Clones664009 -Node: Cut Program665233 -Node: Egrep Program675091 -Ref: Egrep Program-Footnote-1682678 -Node: Id Program682788 -Node: Split Program686442 -Ref: Split Program-Footnote-1689980 -Node: Tee Program690108 -Node: Uniq Program692895 -Node: Wc Program700316 -Ref: Wc Program-Footnote-1704581 -Node: Miscellaneous Programs704673 -Node: Dupword Program705886 -Node: Alarm Program707917 -Node: Translate Program712721 -Ref: Translate Program-Footnote-1717112 -Ref: Translate Program-Footnote-2717382 -Node: Labels Program717516 -Ref: Labels Program-Footnote-1720877 -Node: Word Sorting720961 -Node: History Sorting725004 -Node: Extract Program726840 -Node: Simple Sed734376 -Node: Igawk Program737438 -Ref: Igawk Program-Footnote-1751742 -Ref: Igawk Program-Footnote-2751943 -Node: Anagram Program752081 -Node: Signature Program755149 -Node: Programs Summary756396 -Node: Programs Exercises757611 -Node: Advanced Features761262 -Node: Nondecimal Data763210 -Node: Array Sorting764787 -Node: Controlling Array Traversal765484 -Node: Array Sorting Functions773764 -Ref: Array Sorting Functions-Footnote-1777671 -Node: Two-way I/O777865 -Ref: Two-way I/O-Footnote-1782809 -Ref: Two-way I/O-Footnote-2782988 -Node: TCP/IP Networking783070 -Node: Profiling785915 -Node: Advanced Features Summary793457 -Node: Internationalization795321 -Node: I18N and L10N796801 -Node: Explaining gettext797487 -Ref: Explaining gettext-Footnote-1802513 -Ref: Explaining gettext-Footnote-2802697 -Node: Programmer i18n802862 -Ref: Programmer i18n-Footnote-1807656 -Node: Translator i18n807705 -Node: String Extraction808499 -Ref: String Extraction-Footnote-1809632 -Node: Printf Ordering809718 -Ref: Printf Ordering-Footnote-1812500 -Node: I18N Portability812564 -Ref: I18N Portability-Footnote-1815013 -Node: I18N Example815076 -Ref: I18N Example-Footnote-1817782 -Node: Gawk I18N817854 -Node: I18N Summary818492 -Node: Debugger819831 -Node: Debugging820853 -Node: Debugging Concepts821294 -Node: Debugging Terms823150 -Node: Awk Debugging825747 -Node: Sample Debugging Session826639 -Node: Debugger Invocation827159 -Node: Finding The Bug828492 -Node: List of Debugger Commands834974 -Node: Breakpoint Control836306 -Node: Debugger Execution Control839970 -Node: Viewing And Changing Data843330 -Node: Execution Stack846688 -Node: Debugger Info848201 -Node: Miscellaneous Debugger Commands852195 -Node: Readline Support857379 -Node: Limitations858271 -Node: Debugging Summary860545 -Node: Arbitrary Precision Arithmetic861713 -Node: Computer Arithmetic863200 -Ref: Computer Arithmetic-Footnote-1867587 -Node: Math Definitions867644 -Ref: table-ieee-formats870933 -Ref: Math Definitions-Footnote-1871473 -Node: MPFR features871576 -Node: FP Math Caution873193 -Ref: FP Math Caution-Footnote-1874243 -Node: Inexactness of computations874612 -Node: Inexact representation875560 -Node: Comparing FP Values876915 -Node: Errors accumulate877879 -Node: Getting Accuracy879312 -Node: Try To Round881971 -Node: Setting precision882870 -Ref: table-predefined-precision-strings883552 -Node: Setting the rounding mode885345 -Ref: table-gawk-rounding-modes885709 -Ref: Setting the rounding mode-Footnote-1889163 -Node: Arbitrary Precision Integers889342 -Ref: Arbitrary Precision Integers-Footnote-1892323 -Node: POSIX Floating Point Problems892472 -Ref: POSIX Floating Point Problems-Footnote-1896348 -Node: Floating point summary896386 -Node: Dynamic Extensions898590 -Node: Extension Intro900142 -Node: Plugin License901407 -Node: Extension Mechanism Outline902092 -Ref: figure-load-extension902516 -Ref: figure-load-new-function904001 -Ref: figure-call-new-function905003 -Node: Extension API Description906987 -Node: Extension API Functions Introduction908437 -Node: General Data Types913304 -Ref: General Data Types-Footnote-1918997 -Node: Requesting Values919296 -Ref: table-value-types-returned920033 -Node: Memory Allocation Functions920991 -Ref: Memory Allocation Functions-Footnote-1923738 -Node: Constructor Functions923834 -Node: Registration Functions925592 -Node: Extension Functions926277 -Node: Exit Callback Functions928579 -Node: Extension Version String929827 -Node: Input Parsers930477 -Node: Output Wrappers940291 -Node: Two-way processors944807 -Node: Printing Messages947011 -Ref: Printing Messages-Footnote-1948088 -Node: Updating `ERRNO'948240 -Node: Accessing Parameters948979 -Node: Symbol Table Access950209 -Node: Symbol table by name950723 -Node: Symbol table by cookie952699 -Ref: Symbol table by cookie-Footnote-1956832 -Node: Cached values956895 -Ref: Cached values-Footnote-1960399 -Node: Array Manipulation960490 -Ref: Array Manipulation-Footnote-1961588 -Node: Array Data Types961627 -Ref: Array Data Types-Footnote-1964330 -Node: Array Functions964422 -Node: Flattening Arrays968296 -Node: Creating Arrays975148 -Node: Extension API Variables979879 -Node: Extension Versioning980515 -Node: Extension API Informational Variables982416 -Node: Extension API Boilerplate983502 -Node: Finding Extensions987306 -Node: Extension Example987866 -Node: Internal File Description988596 -Node: Internal File Ops992687 -Ref: Internal File Ops-Footnote-11004119 -Node: Using Internal File Ops1004259 -Ref: Using Internal File Ops-Footnote-11006606 -Node: Extension Samples1006874 -Node: Extension Sample File Functions1008398 -Node: Extension Sample Fnmatch1015966 -Node: Extension Sample Fork1017448 -Node: Extension Sample Inplace1018661 -Node: Extension Sample Ord1020336 -Node: Extension Sample Readdir1021172 -Ref: table-readdir-file-types1022028 -Node: Extension Sample Revout1022827 -Node: Extension Sample Rev2way1023418 -Node: Extension Sample Read write array1024159 -Node: Extension Sample Readfile1026038 -Node: Extension Sample API Tests1027138 -Node: Extension Sample Time1027663 -Node: gawkextlib1028978 -Node: Extension summary1031791 -Node: Extension Exercises1035484 -Node: Language History1036206 -Node: V7/SVR3.11037849 -Node: SVR41040169 -Node: POSIX1041611 -Node: BTL1042997 -Node: POSIX/GNU1043731 -Node: Feature History1049447 -Node: Common Extensions1062538 -Node: Ranges and Locales1063850 -Ref: Ranges and Locales-Footnote-11068467 -Ref: Ranges and Locales-Footnote-21068494 -Ref: Ranges and Locales-Footnote-31068728 -Node: Contributors1068949 -Node: History summary1074374 -Node: Installation1075743 -Node: Gawk Distribution1076694 -Node: Getting1077178 -Node: Extracting1078002 -Node: Distribution contents1079644 -Node: Unix Installation1085361 -Node: Quick Installation1085978 -Node: Additional Configuration Options1088420 -Node: Configuration Philosophy1090158 -Node: Non-Unix Installation1092509 -Node: PC Installation1092967 -Node: PC Binary Installation1094278 -Node: PC Compiling1096126 -Ref: PC Compiling-Footnote-11099125 -Node: PC Testing1099230 -Node: PC Using1100406 -Node: Cygwin1104558 -Node: MSYS1105367 -Node: VMS Installation1105881 -Node: VMS Compilation1106677 -Ref: VMS Compilation-Footnote-11107899 -Node: VMS Dynamic Extensions1107957 -Node: VMS Installation Details1109330 -Node: VMS Running1111582 -Node: VMS GNV1114416 -Node: VMS Old Gawk1115139 -Node: Bugs1115609 -Node: Other Versions1119613 -Node: Installation summary1125840 -Node: Notes1126896 -Node: Compatibility Mode1127761 -Node: Additions1128543 -Node: Accessing The Source1129468 -Node: Adding Code1130904 -Node: New Ports1137082 -Node: Derived Files1141563 -Ref: Derived Files-Footnote-11146644 -Ref: Derived Files-Footnote-21146678 -Ref: Derived Files-Footnote-31147274 -Node: Future Extensions1147388 -Node: Implementation Limitations1147994 -Node: Extension Design1149242 -Node: Old Extension Problems1150396 -Ref: Old Extension Problems-Footnote-11151913 -Node: Extension New Mechanism Goals1151970 -Ref: Extension New Mechanism Goals-Footnote-11155330 -Node: Extension Other Design Decisions1155519 -Node: Extension Future Growth1157625 -Node: Old Extension Mechanism1158461 -Node: Notes summary1160223 -Node: Basic Concepts1161409 -Node: Basic High Level1162090 -Ref: figure-general-flow1162362 -Ref: figure-process-flow1162961 -Ref: Basic High Level-Footnote-11166190 -Node: Basic Data Typing1166375 -Node: Glossary1169703 -Node: Copying1194855 -Node: GNU Free Documentation License1232411 -Node: Index1257547 +Ref: Names-Footnote-153033 +Node: This Manual53179 +Ref: This Manual-Footnote-158958 +Node: Conventions59058 +Node: Manual History61403 +Ref: Manual History-Footnote-164479 +Ref: Manual History-Footnote-264520 +Node: How To Contribute64594 +Node: Acknowledgments65833 +Node: Getting Started70581 +Node: Running gawk73015 +Node: One-shot74205 +Node: Read Terminal75430 +Ref: Read Terminal-Footnote-177393 +Node: Long77564 +Node: Executable Scripts78958 +Ref: Executable Scripts-Footnote-181759 +Node: Comments81861 +Node: Quoting84334 +Node: DOS Quoting89647 +Node: Sample Data Files90322 +Node: Very Simple92929 +Node: Two Rules97688 +Node: More Complex99582 +Ref: More Complex-Footnote-1102514 +Node: Statements/Lines102599 +Ref: Statements/Lines-Footnote-1107055 +Node: Other Features107320 +Node: When108248 +Ref: When-Footnote-1110004 +Node: Intro Summary110069 +Node: Invoking Gawk110952 +Node: Command Line112467 +Node: Options113258 +Ref: Options-Footnote-1129034 +Node: Other Arguments129059 +Node: Naming Standard Input131721 +Node: Environment Variables132814 +Node: AWKPATH Variable133372 +Ref: AWKPATH Variable-Footnote-1136238 +Ref: AWKPATH Variable-Footnote-2136283 +Node: AWKLIBPATH Variable136543 +Node: Other Environment Variables137302 +Node: Exit Status140959 +Node: Include Files141634 +Node: Loading Shared Libraries145212 +Node: Obsolete146596 +Node: Undocumented147293 +Node: Invoking Summary147560 +Node: Regexp149160 +Node: Regexp Usage150619 +Node: Escape Sequences152652 +Node: Regexp Operators158469 +Ref: Regexp Operators-Footnote-1165900 +Ref: Regexp Operators-Footnote-2166047 +Node: Bracket Expressions166145 +Ref: table-char-classes168167 +Node: GNU Regexp Operators171107 +Node: Case-sensitivity174816 +Ref: Case-sensitivity-Footnote-1177708 +Ref: Case-sensitivity-Footnote-2177943 +Node: Leftmost Longest178051 +Node: Computed Regexps179252 +Node: Regexp Summary182624 +Node: Reading Files184093 +Node: Records186185 +Node: awk split records186907 +Node: gawk split records191765 +Ref: gawk split records-Footnote-1196286 +Node: Fields196323 +Ref: Fields-Footnote-1199287 +Node: Nonconstant Fields199373 +Ref: Nonconstant Fields-Footnote-1201603 +Node: Changing Fields201805 +Node: Field Separators207759 +Node: Default Field Splitting210461 +Node: Regexp Field Splitting211578 +Node: Single Character Fields214905 +Node: Command Line Field Separator215964 +Node: Full Line Fields219390 +Ref: Full Line Fields-Footnote-1219898 +Node: Field Splitting Summary219944 +Ref: Field Splitting Summary-Footnote-1223076 +Node: Constant Size223177 +Node: Splitting By Content227783 +Ref: Splitting By Content-Footnote-1231856 +Node: Multiple Line231896 +Ref: Multiple Line-Footnote-1237752 +Node: Getline237931 +Node: Plain Getline240142 +Node: Getline/Variable242237 +Node: Getline/File243384 +Node: Getline/Variable/File244768 +Ref: Getline/Variable/File-Footnote-1246367 +Node: Getline/Pipe246454 +Node: Getline/Variable/Pipe249140 +Node: Getline/Coprocess250247 +Node: Getline/Variable/Coprocess251499 +Node: Getline Notes252236 +Node: Getline Summary255040 +Ref: table-getline-variants255448 +Node: Read Timeout256360 +Ref: Read Timeout-Footnote-1260187 +Node: Command-line directories260245 +Node: Input Summary261149 +Node: Input Exercises264286 +Node: Printing265019 +Node: Print266741 +Node: Print Examples268234 +Node: Output Separators271013 +Node: OFMT273029 +Node: Printf274387 +Node: Basic Printf275293 +Node: Control Letters276832 +Node: Format Modifiers280823 +Node: Printf Examples286850 +Node: Redirection289314 +Node: Special Files296286 +Node: Special FD296819 +Ref: Special FD-Footnote-1300416 +Node: Special Network300490 +Node: Special Caveats301340 +Node: Close Files And Pipes302136 +Ref: Close Files And Pipes-Footnote-1309297 +Ref: Close Files And Pipes-Footnote-2309445 +Node: Output Summary309595 +Node: Output exercises310592 +Node: Expressions311272 +Node: Values312457 +Node: Constants313133 +Node: Scalar Constants313813 +Ref: Scalar Constants-Footnote-1314672 +Node: Nondecimal-numbers314922 +Node: Regexp Constants317922 +Node: Using Constant Regexps318397 +Node: Variables321469 +Node: Using Variables322124 +Node: Assignment Options323848 +Node: Conversion325723 +Node: Strings And Numbers326247 +Ref: Strings And Numbers-Footnote-1329309 +Node: Locale influences conversions329418 +Ref: table-locale-affects332135 +Node: All Operators332723 +Node: Arithmetic Ops333353 +Node: Concatenation335858 +Ref: Concatenation-Footnote-1338677 +Node: Assignment Ops338783 +Ref: table-assign-ops343766 +Node: Increment Ops345069 +Node: Truth Values and Conditions348507 +Node: Truth Values349590 +Node: Typing and Comparison350639 +Node: Variable Typing351432 +Node: Comparison Operators355084 +Ref: table-relational-ops355494 +Node: POSIX String Comparison359044 +Ref: POSIX String Comparison-Footnote-1360128 +Node: Boolean Ops360266 +Ref: Boolean Ops-Footnote-1364341 +Node: Conditional Exp364432 +Node: Function Calls366159 +Node: Precedence370039 +Node: Locales373708 +Node: Expressions Summary375339 +Node: Patterns and Actions377880 +Node: Pattern Overview378996 +Node: Regexp Patterns380673 +Node: Expression Patterns381216 +Node: Ranges384996 +Node: BEGIN/END388102 +Node: Using BEGIN/END388864 +Ref: Using BEGIN/END-Footnote-1391600 +Node: I/O And BEGIN/END391706 +Node: BEGINFILE/ENDFILE393977 +Node: Empty396908 +Node: Using Shell Variables397225 +Node: Action Overview399508 +Node: Statements401835 +Node: If Statement403683 +Node: While Statement405181 +Node: Do Statement407225 +Node: For Statement408381 +Node: Switch Statement411533 +Node: Break Statement413921 +Node: Continue Statement415962 +Node: Next Statement417787 +Node: Nextfile Statement420177 +Node: Exit Statement422813 +Node: Built-in Variables425217 +Node: User-modified426344 +Ref: User-modified-Footnote-1434033 +Node: Auto-set434095 +Ref: Auto-set-Footnote-1446677 +Ref: Auto-set-Footnote-2446882 +Node: ARGC and ARGV446938 +Node: Pattern Action Summary450842 +Node: Arrays453065 +Node: Array Basics454614 +Node: Array Intro455440 +Ref: figure-array-elements457413 +Ref: Array Intro-Footnote-1459937 +Node: Reference to Elements460065 +Node: Assigning Elements462515 +Node: Array Example463006 +Node: Scanning an Array464738 +Node: Controlling Scanning467739 +Ref: Controlling Scanning-Footnote-1472912 +Node: Delete473228 +Ref: Delete-Footnote-1475979 +Node: Numeric Array Subscripts476036 +Node: Uninitialized Subscripts478219 +Node: Multidimensional479844 +Node: Multiscanning482957 +Node: Arrays of Arrays484546 +Node: Arrays Summary489209 +Node: Functions491314 +Node: Built-in492187 +Node: Calling Built-in493265 +Node: Numeric Functions495253 +Ref: Numeric Functions-Footnote-1499287 +Ref: Numeric Functions-Footnote-2499644 +Ref: Numeric Functions-Footnote-3499692 +Node: String Functions499961 +Ref: String Functions-Footnote-1522958 +Ref: String Functions-Footnote-2523087 +Ref: String Functions-Footnote-3523335 +Node: Gory Details523422 +Ref: table-sub-escapes525195 +Ref: table-sub-proposed526715 +Ref: table-posix-sub528079 +Ref: table-gensub-escapes529619 +Ref: Gory Details-Footnote-1530795 +Node: I/O Functions530946 +Ref: I/O Functions-Footnote-1538056 +Node: Time Functions538203 +Ref: Time Functions-Footnote-1548667 +Ref: Time Functions-Footnote-2548735 +Ref: Time Functions-Footnote-3548893 +Ref: Time Functions-Footnote-4549004 +Ref: Time Functions-Footnote-5549116 +Ref: Time Functions-Footnote-6549343 +Node: Bitwise Functions549609 +Ref: table-bitwise-ops550171 +Ref: Bitwise Functions-Footnote-1554416 +Node: Type Functions554600 +Node: I18N Functions555742 +Node: User-defined557387 +Node: Definition Syntax558191 +Ref: Definition Syntax-Footnote-1563502 +Node: Function Example563571 +Ref: Function Example-Footnote-1566211 +Node: Function Caveats566233 +Node: Calling A Function566751 +Node: Variable Scope567706 +Node: Pass By Value/Reference570694 +Node: Return Statement574204 +Node: Dynamic Typing577188 +Node: Indirect Calls578117 +Node: Functions Summary587830 +Node: Library Functions590369 +Ref: Library Functions-Footnote-1593987 +Ref: Library Functions-Footnote-2594130 +Node: Library Names594301 +Ref: Library Names-Footnote-1597774 +Ref: Library Names-Footnote-2597994 +Node: General Functions598080 +Node: Strtonum Function599108 +Node: Assert Function601888 +Node: Round Function605214 +Node: Cliff Random Function606755 +Node: Ordinal Functions607771 +Ref: Ordinal Functions-Footnote-1610836 +Ref: Ordinal Functions-Footnote-2611088 +Node: Join Function611299 +Ref: Join Function-Footnote-1613070 +Node: Getlocaltime Function613270 +Node: Readfile Function617006 +Node: Data File Management618845 +Node: Filetrans Function619477 +Node: Rewind Function623546 +Node: File Checking625104 +Ref: File Checking-Footnote-1626236 +Node: Empty Files626437 +Node: Ignoring Assigns628416 +Node: Getopt Function629970 +Ref: Getopt Function-Footnote-1641273 +Node: Passwd Functions641476 +Ref: Passwd Functions-Footnote-1650455 +Node: Group Functions650543 +Ref: Group Functions-Footnote-1658474 +Node: Walking Arrays658687 +Node: Library Functions Summary660290 +Node: Library exercises661678 +Node: Sample Programs662958 +Node: Running Examples663728 +Node: Clones664456 +Node: Cut Program665680 +Node: Egrep Program675538 +Ref: Egrep Program-Footnote-1683125 +Node: Id Program683235 +Node: Split Program686889 +Ref: Split Program-Footnote-1690427 +Node: Tee Program690555 +Node: Uniq Program693342 +Node: Wc Program700763 +Ref: Wc Program-Footnote-1705028 +Node: Miscellaneous Programs705120 +Node: Dupword Program706333 +Node: Alarm Program708364 +Node: Translate Program713168 +Ref: Translate Program-Footnote-1717559 +Ref: Translate Program-Footnote-2717829 +Node: Labels Program717963 +Ref: Labels Program-Footnote-1721324 +Node: Word Sorting721408 +Node: History Sorting725451 +Node: Extract Program727287 +Node: Simple Sed734823 +Node: Igawk Program737885 +Ref: Igawk Program-Footnote-1752189 +Ref: Igawk Program-Footnote-2752390 +Node: Anagram Program752528 +Node: Signature Program755596 +Node: Programs Summary756843 +Node: Programs Exercises758058 +Node: Advanced Features761709 +Node: Nondecimal Data763657 +Node: Array Sorting765234 +Node: Controlling Array Traversal765931 +Node: Array Sorting Functions774211 +Ref: Array Sorting Functions-Footnote-1778118 +Node: Two-way I/O778312 +Ref: Two-way I/O-Footnote-1783256 +Ref: Two-way I/O-Footnote-2783435 +Node: TCP/IP Networking783517 +Node: Profiling786362 +Node: Advanced Features Summary793904 +Node: Internationalization795768 +Node: I18N and L10N797248 +Node: Explaining gettext797934 +Ref: Explaining gettext-Footnote-1802960 +Ref: Explaining gettext-Footnote-2803144 +Node: Programmer i18n803309 +Ref: Programmer i18n-Footnote-1808103 +Node: Translator i18n808152 +Node: String Extraction808946 +Ref: String Extraction-Footnote-1810079 +Node: Printf Ordering810165 +Ref: Printf Ordering-Footnote-1812947 +Node: I18N Portability813011 +Ref: I18N Portability-Footnote-1815460 +Node: I18N Example815523 +Ref: I18N Example-Footnote-1818229 +Node: Gawk I18N818301 +Node: I18N Summary818939 +Node: Debugger820278 +Node: Debugging821300 +Node: Debugging Concepts821741 +Node: Debugging Terms823597 +Node: Awk Debugging826194 +Node: Sample Debugging Session827086 +Node: Debugger Invocation827606 +Node: Finding The Bug828939 +Node: List of Debugger Commands835421 +Node: Breakpoint Control836753 +Node: Debugger Execution Control840417 +Node: Viewing And Changing Data843777 +Node: Execution Stack847135 +Node: Debugger Info848648 +Node: Miscellaneous Debugger Commands852642 +Node: Readline Support857826 +Node: Limitations858718 +Node: Debugging Summary860992 +Node: Arbitrary Precision Arithmetic862160 +Node: Computer Arithmetic863647 +Ref: Computer Arithmetic-Footnote-1868034 +Node: Math Definitions868091 +Ref: table-ieee-formats871380 +Ref: Math Definitions-Footnote-1871920 +Node: MPFR features872023 +Node: FP Math Caution873640 +Ref: FP Math Caution-Footnote-1874690 +Node: Inexactness of computations875059 +Node: Inexact representation876007 +Node: Comparing FP Values877362 +Node: Errors accumulate878326 +Node: Getting Accuracy879759 +Node: Try To Round882418 +Node: Setting precision883317 +Ref: table-predefined-precision-strings883999 +Node: Setting the rounding mode885792 +Ref: table-gawk-rounding-modes886156 +Ref: Setting the rounding mode-Footnote-1889610 +Node: Arbitrary Precision Integers889789 +Ref: Arbitrary Precision Integers-Footnote-1892770 +Node: POSIX Floating Point Problems892919 +Ref: POSIX Floating Point Problems-Footnote-1896795 +Node: Floating point summary896833 +Node: Dynamic Extensions899037 +Node: Extension Intro900589 +Node: Plugin License901854 +Node: Extension Mechanism Outline902539 +Ref: figure-load-extension902963 +Ref: figure-load-new-function904448 +Ref: figure-call-new-function905450 +Node: Extension API Description907434 +Node: Extension API Functions Introduction908884 +Node: General Data Types913751 +Ref: General Data Types-Footnote-1919444 +Node: Requesting Values919743 +Ref: table-value-types-returned920480 +Node: Memory Allocation Functions921438 +Ref: Memory Allocation Functions-Footnote-1924185 +Node: Constructor Functions924281 +Node: Registration Functions926039 +Node: Extension Functions926724 +Node: Exit Callback Functions929026 +Node: Extension Version String930274 +Node: Input Parsers930924 +Node: Output Wrappers940738 +Node: Two-way processors945254 +Node: Printing Messages947458 +Ref: Printing Messages-Footnote-1948535 +Node: Updating `ERRNO'948687 +Node: Accessing Parameters949426 +Node: Symbol Table Access950656 +Node: Symbol table by name951170 +Node: Symbol table by cookie953146 +Ref: Symbol table by cookie-Footnote-1957279 +Node: Cached values957342 +Ref: Cached values-Footnote-1960846 +Node: Array Manipulation960937 +Ref: Array Manipulation-Footnote-1962035 +Node: Array Data Types962074 +Ref: Array Data Types-Footnote-1964777 +Node: Array Functions964869 +Node: Flattening Arrays968743 +Node: Creating Arrays975595 +Node: Extension API Variables980326 +Node: Extension Versioning980962 +Node: Extension API Informational Variables982863 +Node: Extension API Boilerplate983949 +Node: Finding Extensions987753 +Node: Extension Example988313 +Node: Internal File Description989043 +Node: Internal File Ops993134 +Ref: Internal File Ops-Footnote-11004566 +Node: Using Internal File Ops1004706 +Ref: Using Internal File Ops-Footnote-11007053 +Node: Extension Samples1007321 +Node: Extension Sample File Functions1008845 +Node: Extension Sample Fnmatch1016413 +Node: Extension Sample Fork1017895 +Node: Extension Sample Inplace1019108 +Node: Extension Sample Ord1020783 +Node: Extension Sample Readdir1021619 +Ref: table-readdir-file-types1022475 +Node: Extension Sample Revout1023274 +Node: Extension Sample Rev2way1023865 +Node: Extension Sample Read write array1024606 +Node: Extension Sample Readfile1026485 +Node: Extension Sample API Tests1027585 +Node: Extension Sample Time1028110 +Node: gawkextlib1029425 +Node: Extension summary1032238 +Node: Extension Exercises1035931 +Node: Language History1036653 +Node: V7/SVR3.11038296 +Node: SVR41040616 +Node: POSIX1042058 +Node: BTL1043444 +Node: POSIX/GNU1044178 +Node: Feature History1049894 +Node: Common Extensions1062985 +Node: Ranges and Locales1064297 +Ref: Ranges and Locales-Footnote-11068914 +Ref: Ranges and Locales-Footnote-21068941 +Ref: Ranges and Locales-Footnote-31069175 +Node: Contributors1069396 +Node: History summary1074821 +Node: Installation1076190 +Node: Gawk Distribution1077141 +Node: Getting1077625 +Node: Extracting1078449 +Node: Distribution contents1080091 +Node: Unix Installation1085808 +Node: Quick Installation1086425 +Node: Additional Configuration Options1088867 +Node: Configuration Philosophy1090605 +Node: Non-Unix Installation1092956 +Node: PC Installation1093414 +Node: PC Binary Installation1094725 +Node: PC Compiling1096573 +Ref: PC Compiling-Footnote-11099572 +Node: PC Testing1099677 +Node: PC Using1100853 +Node: Cygwin1105005 +Node: MSYS1105814 +Node: VMS Installation1106328 +Node: VMS Compilation1107124 +Ref: VMS Compilation-Footnote-11108346 +Node: VMS Dynamic Extensions1108404 +Node: VMS Installation Details1109777 +Node: VMS Running1112029 +Node: VMS GNV1114863 +Node: VMS Old Gawk1115586 +Node: Bugs1116056 +Node: Other Versions1120060 +Node: Installation summary1126287 +Node: Notes1127343 +Node: Compatibility Mode1128208 +Node: Additions1128990 +Node: Accessing The Source1129915 +Node: Adding Code1131351 +Node: New Ports1137529 +Node: Derived Files1142010 +Ref: Derived Files-Footnote-11147091 +Ref: Derived Files-Footnote-21147125 +Ref: Derived Files-Footnote-31147721 +Node: Future Extensions1147835 +Node: Implementation Limitations1148441 +Node: Extension Design1149689 +Node: Old Extension Problems1150843 +Ref: Old Extension Problems-Footnote-11152360 +Node: Extension New Mechanism Goals1152417 +Ref: Extension New Mechanism Goals-Footnote-11155777 +Node: Extension Other Design Decisions1155966 +Node: Extension Future Growth1158072 +Node: Old Extension Mechanism1158908 +Node: Notes summary1160670 +Node: Basic Concepts1161856 +Node: Basic High Level1162537 +Ref: figure-general-flow1162809 +Ref: figure-process-flow1163408 +Ref: Basic High Level-Footnote-11166637 +Node: Basic Data Typing1166822 +Node: Glossary1170150 +Node: Copying1195302 +Node: GNU Free Documentation License1232858 +Node: Index1257994 End Tag Table |