diff options
Diffstat (limited to 'doc/gawk.info')
-rw-r--r-- | doc/gawk.info | 1442 |
1 files changed, 786 insertions, 656 deletions
diff --git a/doc/gawk.info b/doc/gawk.info index 022965d1..0d4ec9f9 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -381,6 +381,8 @@ in (a) below. A copy of the license is included in the section entitled * Arrays Summary:: Summary of arrays. * Built-in:: Summarizes the built-in functions. * Calling Built-in:: How to call built-in functions. +* Boolean Functions:: A function that returns Boolean + values. * Numeric Functions:: Functions that work with numbers, including 'int()', 'sin()' and 'rand()'. @@ -490,6 +492,7 @@ in (a) below. A copy of the license is included in the section entitled * Programs Summary:: Summary of programs. * Programs Exercises:: Exercises. * Nondecimal Data:: Allowing nondecimal input data. +* Boolean Typed Values:: Values with 'number|bool' type. * Array Sorting:: Facilities for controlling array traversal and sorting arrays. * Controlling Array Traversal:: How to use PROCINFO["sorted_in"]. @@ -553,6 +556,7 @@ in (a) below. A copy of the license is included in the section entitled * Inexact representation:: Numbers are not exactly represented. * Comparing FP Values:: How to compare floating point values. * Errors accumulate:: Errors get bigger as they go. +* Strange values:: A few words about infinities and NaNs. * Getting Accuracy:: Getting more accuracy takes some work. * Try To Round:: Add digits and round. * Setting precision:: How to set the precision. @@ -3223,7 +3227,9 @@ change. The variables are: 'AWK_HASH' If this variable exists with a value of 'gst', 'gawk' switches to using the hash function from GNU Smalltalk for managing arrays. - This function may be marginally faster than the standard function. + With a value of 'fnv1a', 'gawk' uses the FNV1-A hash function + (http://www.isthe.com/chongo/tech/comp/fnv/index.html). These + functions may be marginally faster than the standard function. 'AWKREADFUNC' If this variable exists, 'gawk' switches to reading source files @@ -6974,8 +6980,8 @@ width. Here is a list of the format-control letters: On systems supporting IEEE 754 floating-point format, values representing negative infinity are formatted as '-inf' or '-infinity', and positive infinity as 'inf' or 'infinity'. The - special "not a number" value formats as '-nan' or 'nan' (*note Math - Definitions::). + special "not a number" value formats as '-nan' or 'nan' (*note + Strange values::). '%F' Like '%f', but the infinity and "not a number" values are spelled @@ -12783,6 +12789,7 @@ your convenience. * Menu: * Calling Built-in:: How to call built-in functions. +* Boolean Functions:: A function that returns Boolean values. * Numeric Functions:: Functions that work with numbers, including 'int()', 'sin()' and 'rand()'. * String Functions:: Functions for string manipulation, such as @@ -12795,7 +12802,7 @@ your convenience. * I18N Functions:: Functions for string translation. -File: gawk.info, Node: Calling Built-in, Next: Numeric Functions, Up: Built-in +File: gawk.info, Node: Calling Built-in, Next: Boolean Functions, Up: Built-in 9.1.1 Calling Built-in Functions -------------------------------- @@ -12839,9 +12846,24 @@ six, and then 12, and 'atan2()' is called with the two arguments six and 10, then 11, and 'atan2()' is called with the two arguments 11 and 10. -File: gawk.info, Node: Numeric Functions, Next: String Functions, Prev: Calling Built-in, Up: Built-in +File: gawk.info, Node: Boolean Functions, Next: Numeric Functions, Prev: Calling Built-in, Up: Built-in -9.1.2 Numeric Functions +9.1.2 Generating Boolean Values +------------------------------- + +This function is specific to 'gawk'. It is not available in +compatibility mode (*note Options::): + +'mkbool(EXPRESSION)' + Return a Boolean-typed value based on the regular Boolean value of + EXPRESSION. Boolean "true" values have numeric value one. Boolean + "false" values have numeric zero. This is discussed in more detail + in *note Boolean Typed Values::. + + +File: gawk.info, Node: Numeric Functions, Next: String Functions, Prev: Boolean Functions, Up: Built-in + +9.1.3 Numeric Functions ----------------------- The following list describes all of the built-in functions that work @@ -12867,7 +12889,7 @@ brackets ([ ]): 'log(X)' Return the natural logarithm of X, if X is positive; otherwise, - return 'NaN' ("not a number") on IEEE 754 systems. Additionally, + return NaN ("not a number") on IEEE 754 systems. Additionally, 'gawk' prints a warning message when 'x' is negative. 'rand()' @@ -12965,7 +12987,7 @@ the same sequence of random numbers over and over again. File: gawk.info, Node: String Functions, Next: I/O Functions, Prev: Numeric Functions, Up: Built-in -9.1.3 String-Manipulation Functions +9.1.4 String-Manipulation Functions ----------------------------------- The functions in this minor node look at or change the text of one or @@ -13533,7 +13555,7 @@ number zero. File: gawk.info, Node: Gory Details, Up: String Functions -9.1.3.1 More about '\' and '&' with 'sub()', 'gsub()', and 'gensub()' +9.1.4.1 More about '\' and '&' with 'sub()', 'gsub()', and 'gensub()' ..................................................................... CAUTION: This subsubsection has been reported to cause headaches. @@ -13679,7 +13701,7 @@ POSIX rules. File: gawk.info, Node: I/O Functions, Next: Time Functions, Prev: String Functions, Up: Built-in -9.1.4 Input/Output Functions +9.1.5 Input/Output Functions ---------------------------- The following functions relate to input/output (I/O). Optional @@ -13896,7 +13918,7 @@ the way this was done was probably a mistake. File: gawk.info, Node: Time Functions, Next: Bitwise Functions, Prev: I/O Functions, Up: Built-in -9.1.5 Time Functions +9.1.6 Time Functions -------------------- 'awk' programs are commonly used to process log files containing @@ -14213,7 +14235,7 @@ does not appear in the returned string or appears literally. File: gawk.info, Node: Bitwise Functions, Next: Type Functions, Prev: Time Functions, Up: Built-in -9.1.6 Bit-Manipulation Functions +9.1.7 Bit-Manipulation Functions -------------------------------- I can explain it for you, but I can't understand it for you. @@ -14395,7 +14417,7 @@ that range are reduced to fit within the range. File: gawk.info, Node: Type Functions, Next: I18N Functions, Prev: Bitwise Functions, Up: Built-in -9.1.7 Getting Type Information +9.1.8 Getting Type Information ------------------------------ 'gawk' provides two functions that let you distinguish the type of a @@ -14419,6 +14441,9 @@ contexts. '"number"' X is a number. + '"number|bool"' + X is a Boolean typed value (*note Boolean Typed Values::). + '"string"' X is a string. @@ -14480,7 +14505,7 @@ arguments from untyped to unassigned. File: gawk.info, Node: I18N Functions, Prev: Type Functions, Up: Built-in -9.1.8 String-Translation Functions +9.1.9 String-Translation Functions ---------------------------------- 'gawk' provides facilities for internationalizing 'awk' programs. These @@ -15159,7 +15184,7 @@ File: gawk.info, Node: Indirect Calls, Next: Functions Summary, Prev: User-de 9.3 Indirect Function Calls =========================== -This section describes an advanced, 'gawk'-specific extension. +This minor node describes an advanced, 'gawk'-specific extension. Often, you may wish to defer the choice of function to call until runtime. For example, you may have different kinds of records, each of @@ -20906,6 +20931,7 @@ their own: * Menu: * Nondecimal Data:: Allowing nondecimal input data. +* Boolean Typed Values:: Values with 'number|bool' type. * Array Sorting:: Facilities for controlling array traversal and sorting arrays. * Two-way I/O:: Two-way communications with another process. @@ -20915,7 +20941,7 @@ their own: * Advanced Features Summary:: Summary of advanced features. -File: gawk.info, Node: Nondecimal Data, Next: Array Sorting, Up: Advanced Features +File: gawk.info, Node: Nondecimal Data, Next: Boolean Typed Values, Up: Advanced Features 12.1 Allowing Nondecimal Input Data =================================== @@ -20958,9 +20984,53 @@ request it. This option may disappear in a future version of 'gawk'. -File: gawk.info, Node: Array Sorting, Next: Two-way I/O, Prev: Nondecimal Data, Up: Advanced Features +File: gawk.info, Node: Boolean Typed Values, Next: Array Sorting, Prev: Nondecimal Data, Up: Advanced Features + +12.2 Boolean Typed Values +========================= + +Scalar values in 'awk' are either numbers or strings. 'gawk' also +supports values of type 'regexp' (*note Strong Regexp Constants::). + + As described in *note Truth Values::, Boolean values in 'awk' don't +have a separate type: a value counts as "true" if it is nonzero or +non-null, and as "false" otherwise. + + When interchanging data with languages that do have a real Boolean +type, using a standard format such as JSON or XML, the lack of a true +Boolean type in 'awk' is problematic. (See, for example, the 'json' +extension provided by the 'gawkextlib' project +(https://sourceforge.net/projects/gawkextlib).) -12.2 Controlling Array Traversal and Array Sorting + It's easy to import Boolean data into 'awk', but then the fact that +it was originally Boolean is lost. Exporting data is even harder; +there's no way to indicate that a value is really Boolean. + + To solve this problem, 'gawk' provides a function named 'mkbool()'. +It takes one argument, which is any 'awk' expression, and it returns a +value of Boolean type. + + The returned values are normal 'awk' numeric values, with values of +either one or zero, depending upon the truth value of the original +expression passed in the call to 'mkbool()'. + + The 'typeof()' function (*note Type Functions::) returns +'"number|bool"' for these values. + + Thus Boolean-typed values _are_ numbers as far as 'gawk' is +concerned, except that extension code can treat them as Booleans if +desired. + + While it would have been possible to add two new built-in variables +of Boolean type named 'TRUE' and 'FALSE', doing so would undoubtedly +have broken many existing 'awk' programs. Instead, having a "generator" +function that creates Boolean values gives flexibility, without breaking +as much existing code. + + +File: gawk.info, Node: Array Sorting, Next: Two-way I/O, Prev: Boolean Typed Values, Up: Advanced Features + +12.3 Controlling Array Traversal and Array Sorting ================================================== 'gawk' lets you control the order in which a 'for (INDX in ARRAY)' loop @@ -20979,7 +21049,7 @@ to order the elements during sorting. File: gawk.info, Node: Controlling Array Traversal, Next: Array Sorting Functions, Up: Array Sorting -12.2.1 Controlling Array Traversal +12.3.1 Controlling Array Traversal ---------------------------------- By default, the order in which a 'for (INDX in ARRAY)' loop scans an @@ -21218,7 +21288,7 @@ character, which cannot be part of an identifier. File: gawk.info, Node: Array Sorting Functions, Prev: Controlling Array Traversal, Up: Array Sorting -12.2.2 Sorting Array Values and Indices with 'gawk' +12.3.2 Sorting Array Values and Indices with 'gawk' --------------------------------------------------- In most 'awk' implementations, sorting an array requires writing a @@ -21358,7 +21428,7 @@ POSIX-compatibility mode, and because 'asort()' and 'asorti()' are File: gawk.info, Node: Two-way I/O, Next: TCP/IP Networking, Prev: Array Sorting, Up: Advanced Features -12.3 Two-Way Communications with Another Process +12.4 Two-Way Communications with Another Process ================================================ It is often useful to be able to send data to a separate program for @@ -21553,7 +21623,7 @@ in Bash. File: gawk.info, Node: TCP/IP Networking, Next: Profiling, Prev: Two-way I/O, Up: Advanced Features -12.4 Using 'gawk' for Network Programming +12.5 Using 'gawk' for Network Programming ========================================= 'EMRED': @@ -21633,7 +21703,7 @@ complete introduction and discussion, as well as extensive examples. File: gawk.info, Node: Profiling, Next: Extension Philosophy, Prev: TCP/IP Networking, Up: Advanced Features -12.5 Profiling Your 'awk' Programs +12.6 Profiling Your 'awk' Programs ================================== You may produce execution traces of your 'awk' programs. This is done @@ -21895,7 +21965,7 @@ source code, it will appear that way in the output. File: gawk.info, Node: Extension Philosophy, Next: Advanced Features Summary, Prev: Profiling, Up: Advanced Features -12.6 Builtin Features versus Extensions +12.7 Builtin Features versus Extensions ======================================= As this and subsequent major nodes show, 'gawk' has a large number of @@ -21931,7 +22001,7 @@ or need. File: gawk.info, Node: Advanced Features Summary, Prev: Extension Philosophy, Up: Advanced Features -12.7 Summary +12.8 Summary ============ * The '--non-decimal-data' option causes 'gawk' to treat octal- and @@ -24288,18 +24358,10 @@ material here: another number and infinity produce infinity. "NaN" - "Not a number."(1) A special value that results from attempting a - calculation that has no answer as a real number. In such a case, - programs can either receive a floating-point exception, or get - 'NaN' back as the result. The IEEE 754 standard recommends that - systems return 'NaN'. Some examples: - - 'sqrt(-1)' - This makes sense in the range of complex numbers, but not in - the range of real numbers, so the result is 'NaN'. - - 'log(-8)' - -8 is out of the domain of 'log()', so the result is 'NaN'. + "Not a number." A special value that results from attempting a + calculation that has no answer as a real number. *Note Strange + values::, for more information about infinity and not-a-number + values. "Normalized" How the significand (see later in this list) is usually stored. @@ -24358,11 +24420,6 @@ Table 16.3: Basic IEEE format values NOTE: The precision numbers include the implied leading one that gives them one extra bit of significand. - ---------- Footnotes ---------- - - (1) Thanks to Michael Brennan for this description, which we have -paraphrased, and for the examples. - File: gawk.info, Node: MPFR features, Next: FP Math Caution, Prev: Math Definitions, Up: Arbitrary Precision Arithmetic @@ -24455,6 +24512,7 @@ be sure of the number of significant decimal places in the final result. * Inexact representation:: Numbers are not exactly represented. * Comparing FP Values:: How to compare floating point values. * Errors accumulate:: Errors get bigger as they go. +* Strange values:: A few words about infinities and NaNs. File: gawk.info, Node: Inexact representation, Next: Comparing FP Values, Up: Inexactness of computations @@ -24519,7 +24577,7 @@ values with a delta, you should be sure to use 'difference < abs(delta)' in case someone passes in a negative delta value. -File: gawk.info, Node: Errors accumulate, Prev: Comparing FP Values, Up: Inexactness of computations +File: gawk.info, Node: Errors accumulate, Next: Strange values, Prev: Comparing FP Values, Up: Inexactness of computations 16.4.1.3 Errors Accumulate .......................... @@ -24567,6 +24625,64 @@ representations yield an unexpected result: -| 4 +File: gawk.info, Node: Strange values, Prev: Errors accumulate, Up: Inexactness of computations + +16.4.1.4 Floating Point Values They Didn't Talk About In School +............................................................... + +Both IEEE 754 floating-point hardware, and MPFR, support two kinds of +values that you probably didn't learn about in school. The first is +"infinity", a special value, that can be either negative or positive, +and which is either smaller than any other value (negative infinity), or +larger than any other value (positive infinity). When such values are +generated, 'gawk' prints them as either '-inf' or '+inf', respectively. +It accepts those strings as data input and converts them to the proper +floating-point values internally. + + Infinity values of the same sign compare as equal to each other. +Otherwise, operations (addition, subtraction, etc.) involving another +number and infinity produce mathematically reasonable results. + + The second kind of value is "not a number", or NaN for short.(1) +This is a special value that results from attempting a calculation that +has no answer as a real number. In such a case, programs can either +receive a floating-point exception, or get NaN back as the result. The +IEEE 754 standard recommends that systems return NaN. Some examples: + +'sqrt(-1)' + This makes sense in the range of complex numbers, but not in the + range of real numbers, so the result is NaN. + +'log(-8)' + -8 is out of the domain of 'log()', so the result is NaN. + + NaN values are strange. In particular, they cannot be compared with +other floating point values; any such comparison, except for "is not +equal to", returns false. NaN values are so much unequal to other +values that even comparing two identical NaN values with '!=' returns +true! + + NaN values can also be signed, although it depends upon the +implementation as to which sign you get for any operation that returns a +NaN. For example, on some systems, 'sqrt(-1)' returns a negative NaN. On +others, it returns a positive NaN. + + When such values are generated, 'gawk' prints them as either '-nan' +or '+nan', respectively. Here too, 'gawk' accepts those strings as data +input and converts them to the proper floating-point values internally. + + If you want to dive more deeply into this topic, you can find test +programs in C, 'awk' and Python in the directory +'awklib/eg/test-programs' in the 'gawk' distribution. These programs +enable comparison among programming languages as to how they handle NaN +and infinity values. + + ---------- Footnotes ---------- + + (1) Thanks to Michael Brennan for this description, which we have +paraphrased, and for the examples. + + File: gawk.info, Node: Getting Accuracy, Next: Try To Round, Prev: Inexactness of computations, Up: FP Math Caution 16.4.2 Getting the Accuracy You Need @@ -25513,7 +25629,8 @@ use them. ' AWK_STRNUM,' ' AWK_ARRAY,' ' AWK_SCALAR, /* opaque access to a variable */' -' AWK_VALUE_COOKIE /* for updating a previously created value */' +' AWK_VALUE_COOKIE, /* for updating a previously created value */' +' AWK_BOOL' '} awk_valtype_t;' This 'enum' indicates the type of a value. It is used in the following 'struct'. @@ -25526,6 +25643,7 @@ use them. ' awk_array_t a;' ' awk_scalar_t scl;' ' awk_value_cookie_t vc;' +' awk_bool_t b;' ' } u;' '} awk_value_t;' An "'awk' value." The 'val_type' member indicates what kind of @@ -25541,6 +25659,7 @@ use them. '#define array_cookie u.a' '#define scalar_cookie u.scl' '#define value_cookie u.vc' +'#define bool_value u.b' Using these macros makes accessing the fields of the 'awk_value_t' more readable. @@ -25851,6 +25970,11 @@ code would use them: a 'char *' value pointing to data previously obtained from 'gawk_malloc()', 'gawk_calloc()', or 'gawk_realloc()'. +'static inline awk_value_t *' +'make_bool(awk_bool_t boolval, awk_value_t *result);' + This function creates a boolean value in the 'awk_value_t' variable + pointed to by 'result'. + File: gawk.info, Node: API Ownership of MPFR and GMP Values, Next: Registration Functions, Prev: Constructor Functions, Up: Extension API Description @@ -26576,16 +26700,17 @@ summarized in *note Table 17.2: table-value-types-returned. Type of Actual Value -------------------------------------------------------------------------- - String Strnum Number Regex Array Undefined -------------------------------------------------------------------------------- - String String String String String false false - Strnum false Strnum Strnum false false false - Number Number Number Number false false false -Type Regex false false false Regex false false -Requested Array false false false false Array false - Scalar Scalar Scalar Scalar Scalar false false - Undefined String Strnum Number Regex Array Undefined - Value false false false false false false + String Strnum Number Regex Bool Array Undefined +---------------------------------------------------------------------------------------- + String String String String String String false false + Strnum false Strnum Strnum false false false false + Number Number Number Number false Number false false +Type Regex false false false Regex false false false +Requested Bool false false false false Bool false false + Array false false false false false Array false + Scalar Scalar Scalar Scalar Scalar Scalar false false + Undefined String Strnum Number Regex Bool Array Undefined + Value false false false false false false false cookie Table 17.2: API value types returned @@ -33255,8 +33380,8 @@ Localization Logical Expression An expression using the operators for logic, AND, OR, and NOT, - written '&&', '||', and '!' in 'awk'. Often called Boolean - expressions, after the mathematician who pioneered this kind of + written '&&', '||', and '!' in 'awk'. Often called "Boolean + expressions", after the mathematician who pioneered this kind of mathematical logic. Lvalue @@ -35413,6 +35538,7 @@ Index * body, in loops: While Statement. (line 14) * Boolean expressions: Boolean Ops. (line 6) * Boolean expressions, as patterns: Expression Patterns. (line 39) +* boolean function: Boolean Functions. (line 6) * Bourne shell, quoting rules for: Quoting. (line 18) * braces ({}), regexp operator: Regexp Operator Details. (line 118) @@ -37002,6 +37128,7 @@ Index * metacharacters, escape sequences for: Escape Sequences. (line 140) * metacharacters, in regular expressions: Regexp Operators. (line 6) * minimum precision required by MPFR library: Auto-set. (line 279) +* mkbool: Boolean Functions. (line 10) * mktime: Time Functions. (line 25) * modifiers, in format specifiers: Format Modifiers. (line 6) * module, definition of: Global Namespace. (line 18) @@ -38228,606 +38355,609 @@ Index Tag Table: Node: Top1200 -Node: Foreword345061 -Node: Foreword449503 -Node: Preface51035 -Ref: Preface-Footnote-153894 -Ref: Preface-Footnote-254003 -Ref: Preface-Footnote-354237 -Node: History54379 -Node: Names56731 -Ref: Names-Footnote-157835 -Node: This Manual57982 -Ref: This Manual-Footnote-164621 -Node: Conventions64721 -Node: Manual History67090 -Ref: Manual History-Footnote-170087 -Ref: Manual History-Footnote-270128 -Node: How To Contribute70202 -Node: Acknowledgments71128 -Node: Getting Started76065 -Node: Running gawk78504 -Node: One-shot79694 -Node: Read Terminal80957 -Node: Long82950 -Node: Executable Scripts84463 -Ref: Executable Scripts-Footnote-187096 -Node: Comments87199 -Node: Quoting89683 -Node: DOS Quoting95209 -Node: Sample Data Files97265 -Node: Very Simple99860 -Node: Two Rules105962 -Node: More Complex107847 -Node: Statements/Lines110179 -Ref: Statements/Lines-Footnote-1114663 -Node: Other Features114928 -Node: When115864 -Ref: When-Footnote-1117618 -Node: Intro Summary117683 -Node: Invoking Gawk118567 -Node: Command Line120081 -Node: Options120879 -Ref: Options-Footnote-1138793 -Ref: Options-Footnote-2139024 -Node: Other Arguments139049 -Node: Naming Standard Input143060 -Node: Environment Variables144270 -Node: AWKPATH Variable144828 -Ref: AWKPATH Variable-Footnote-1148240 -Ref: AWKPATH Variable-Footnote-2148274 -Node: AWKLIBPATH Variable148645 -Ref: AWKLIBPATH Variable-Footnote-1150342 -Node: Other Environment Variables150717 -Node: Exit Status154538 -Node: Include Files155215 -Node: Loading Shared Libraries158905 -Node: Obsolete160333 -Node: Undocumented161025 -Node: Invoking Summary161322 -Node: Regexp164163 -Node: Regexp Usage165617 -Node: Escape Sequences167654 -Node: Regexp Operators173895 -Node: Regexp Operator Details174380 -Ref: Regexp Operator Details-Footnote-1181744 -Node: Interval Expressions181891 -Ref: Interval Expressions-Footnote-1183312 -Node: Bracket Expressions183410 -Ref: table-char-classes185886 -Node: Leftmost Longest189212 -Node: Computed Regexps190515 -Node: GNU Regexp Operators193942 -Node: Case-sensitivity197679 -Ref: Case-sensitivity-Footnote-1200545 -Ref: Case-sensitivity-Footnote-2200780 -Node: Regexp Summary200888 -Node: Reading Files202354 -Node: Records204623 -Node: awk split records205698 -Node: gawk split records210398 -Ref: gawk split records-Footnote-1215472 -Node: Fields215509 -Node: Nonconstant Fields218250 -Ref: Nonconstant Fields-Footnote-1220486 -Node: Changing Fields220690 -Node: Field Separators226721 -Node: Default Field Splitting229419 -Node: Regexp Field Splitting230537 -Node: Single Character Fields234214 -Node: Command Line Field Separator235274 -Node: Full Line Fields238492 -Ref: Full Line Fields-Footnote-1240014 -Ref: Full Line Fields-Footnote-2240060 -Node: Field Splitting Summary240161 -Node: Constant Size242235 -Node: Fixed width data242967 -Node: Skipping intervening246434 -Node: Allowing trailing data247232 -Node: Fields with fixed data248269 -Node: Splitting By Content249787 -Ref: Splitting By Content-Footnote-1253570 -Node: More CSV253733 -Node: Testing field creation255325 -Node: Multiple Line256950 -Node: Getline263227 -Node: Plain Getline265696 -Node: Getline/Variable268269 -Node: Getline/File269420 -Node: Getline/Variable/File270808 -Ref: Getline/Variable/File-Footnote-1272413 -Node: Getline/Pipe272501 -Node: Getline/Variable/Pipe275205 -Node: Getline/Coprocess276340 -Node: Getline/Variable/Coprocess277607 -Node: Getline Notes278349 -Node: Getline Summary281146 -Ref: table-getline-variants281570 -Node: Read Timeout282318 -Ref: Read Timeout-Footnote-1286224 -Node: Retrying Input286282 -Node: Command-line directories287481 -Node: Input Summary288387 -Node: Input Exercises291559 -Node: Printing291993 -Node: Print293827 -Node: Print Examples295284 -Node: Output Separators298064 -Node: OFMT300081 -Node: Printf301437 -Node: Basic Printf302222 -Node: Control Letters303796 -Node: Format Modifiers308960 -Node: Printf Examples314975 -Node: Redirection317461 -Node: Special FD324302 -Ref: Special FD-Footnote-1327470 -Node: Special Files327544 -Node: Other Inherited Files328161 -Node: Special Network329162 -Node: Special Caveats330022 -Node: Close Files And Pipes330971 -Ref: table-close-pipe-return-values337878 -Ref: Close Files And Pipes-Footnote-1338691 -Ref: Close Files And Pipes-Footnote-2338839 -Node: Nonfatal338991 -Node: Output Summary341329 -Node: Output Exercises342551 -Node: Expressions343230 -Node: Values344418 -Node: Constants345096 -Node: Scalar Constants345787 -Ref: Scalar Constants-Footnote-1348297 -Node: Nondecimal-numbers348547 -Node: Regexp Constants351548 -Node: Using Constant Regexps352074 -Node: Standard Regexp Constants352696 -Node: Strong Regexp Constants355884 -Node: Variables358896 -Node: Using Variables359553 -Node: Assignment Options361463 -Node: Conversion363934 -Node: Strings And Numbers364458 -Ref: Strings And Numbers-Footnote-1367521 -Node: Locale influences conversions367630 -Ref: table-locale-affects370388 -Node: All Operators371006 -Node: Arithmetic Ops371635 -Node: Concatenation374351 -Ref: Concatenation-Footnote-1377198 -Node: Assignment Ops377305 -Ref: table-assign-ops382296 -Node: Increment Ops383609 -Node: Truth Values and Conditions387069 -Node: Truth Values388143 -Node: Typing and Comparison389191 -Node: Variable Typing390011 -Ref: Variable Typing-Footnote-1396474 -Ref: Variable Typing-Footnote-2396546 -Node: Comparison Operators396623 -Ref: table-relational-ops397042 -Node: POSIX String Comparison400537 -Ref: POSIX String Comparison-Footnote-1402232 -Ref: POSIX String Comparison-Footnote-2402371 -Node: Boolean Ops402455 -Ref: Boolean Ops-Footnote-1406937 -Node: Conditional Exp407029 -Node: Function Calls408765 -Node: Precedence412642 -Node: Locales416301 -Node: Expressions Summary417933 -Node: Patterns and Actions420506 -Node: Pattern Overview421626 -Node: Regexp Patterns423303 -Node: Expression Patterns423845 -Node: Ranges427626 -Node: BEGIN/END430734 -Node: Using BEGIN/END431495 -Ref: Using BEGIN/END-Footnote-1434249 -Node: I/O And BEGIN/END434355 -Node: BEGINFILE/ENDFILE436668 -Node: Empty439899 -Node: Using Shell Variables440216 -Node: Action Overview442490 -Node: Statements444815 -Node: If Statement446663 -Node: While Statement448158 -Node: Do Statement450186 -Node: For Statement451334 -Node: Switch Statement454505 -Node: Break Statement456946 -Node: Continue Statement459038 -Node: Next Statement460865 -Node: Nextfile Statement463248 -Node: Exit Statement465937 -Node: Built-in Variables468340 -Node: User-modified469473 -Node: Auto-set477240 -Ref: Auto-set-Footnote-1494047 -Ref: Auto-set-Footnote-2494253 -Node: ARGC and ARGV494309 -Node: Pattern Action Summary498522 -Node: Arrays500952 -Node: Array Basics502281 -Node: Array Intro503125 -Ref: figure-array-elements505100 -Ref: Array Intro-Footnote-1507804 -Node: Reference to Elements507932 -Node: Assigning Elements510396 -Node: Array Example510887 -Node: Scanning an Array512646 -Node: Controlling Scanning515668 -Ref: Controlling Scanning-Footnote-1522124 -Node: Numeric Array Subscripts522440 -Node: Uninitialized Subscripts524624 -Node: Delete526243 -Ref: Delete-Footnote-1528995 -Node: Multidimensional529052 -Node: Multiscanning532147 -Node: Arrays of Arrays533738 -Node: Arrays Summary538506 -Node: Functions540599 -Node: Built-in541637 -Node: Calling Built-in542718 -Node: Numeric Functions544714 -Ref: Numeric Functions-Footnote-1548742 -Ref: Numeric Functions-Footnote-2549390 -Ref: Numeric Functions-Footnote-3549438 -Node: String Functions549710 -Ref: String Functions-Footnote-1573851 -Ref: String Functions-Footnote-2573979 -Ref: String Functions-Footnote-3574227 -Node: Gory Details574314 -Ref: table-sub-escapes576105 -Ref: table-sub-proposed577624 -Ref: table-posix-sub578987 -Ref: table-gensub-escapes580528 -Ref: Gory Details-Footnote-1581351 -Node: I/O Functions581505 -Ref: table-system-return-values587959 -Ref: I/O Functions-Footnote-1590039 -Ref: I/O Functions-Footnote-2590187 -Node: Time Functions590307 -Ref: Time Functions-Footnote-1600978 -Ref: Time Functions-Footnote-2601046 -Ref: Time Functions-Footnote-3601204 -Ref: Time Functions-Footnote-4601315 -Ref: Time Functions-Footnote-5601427 -Ref: Time Functions-Footnote-6601654 -Node: Bitwise Functions601920 -Ref: table-bitwise-ops602514 -Ref: Bitwise Functions-Footnote-1608577 -Ref: Bitwise Functions-Footnote-2608750 -Node: Type Functions608941 -Node: I18N Functions611804 -Node: User-defined613455 -Node: Definition Syntax614267 -Ref: Definition Syntax-Footnote-1619961 -Node: Function Example620032 -Ref: Function Example-Footnote-1622954 -Node: Function Calling622976 -Node: Calling A Function623564 -Node: Variable Scope624522 -Node: Pass By Value/Reference627516 -Node: Function Caveats630160 -Ref: Function Caveats-Footnote-1632207 -Node: Return Statement632327 -Node: Dynamic Typing635306 -Node: Indirect Calls636236 -Ref: Indirect Calls-Footnote-1646488 -Node: Functions Summary646616 -Node: Library Functions649321 -Ref: Library Functions-Footnote-1652928 -Ref: Library Functions-Footnote-2653071 -Node: Library Names653242 -Ref: Library Names-Footnote-1656909 -Ref: Library Names-Footnote-2657132 -Node: General Functions657218 -Node: Strtonum Function658400 -Node: Assert Function661422 -Node: Round Function664748 -Node: Cliff Random Function666288 -Node: Ordinal Functions667304 -Ref: Ordinal Functions-Footnote-1670367 -Ref: Ordinal Functions-Footnote-2670619 -Node: Join Function670829 -Ref: Join Function-Footnote-1672599 -Node: Getlocaltime Function672799 -Node: Readfile Function676541 -Node: Shell Quoting678518 -Node: Isnumeric Function679946 -Node: Data File Management680927 -Node: Filetrans Function681559 -Node: Rewind Function685655 -Node: File Checking687564 -Ref: File Checking-Footnote-1688898 -Node: Empty Files689099 -Node: Ignoring Assigns691078 -Node: Getopt Function692628 -Ref: Getopt Function-Footnote-1707851 -Node: Passwd Functions708051 -Ref: Passwd Functions-Footnote-1716890 -Node: Group Functions716978 -Ref: Group Functions-Footnote-1724876 -Node: Walking Arrays725083 -Node: Library Functions Summary728091 -Node: Library Exercises729497 -Node: Sample Programs729962 -Node: Running Examples730732 -Node: Clones731460 -Node: Cut Program732684 -Node: Egrep Program742824 -Node: Id Program751825 -Node: Split Program761772 -Ref: Split Program-Footnote-1771665 -Node: Tee Program771838 -Node: Uniq Program774628 -Node: Wc Program782216 -Node: Bytes vs. Characters782603 -Node: Using extensions784151 -Node: wc program784905 -Node: Miscellaneous Programs789770 -Node: Dupword Program790983 -Node: Alarm Program793013 -Node: Translate Program797868 -Ref: Translate Program-Footnote-1802433 -Node: Labels Program802703 -Ref: Labels Program-Footnote-1806054 -Node: Word Sorting806138 -Node: History Sorting810210 -Node: Extract Program812435 -Node: Simple Sed820489 -Node: Igawk Program823563 -Ref: Igawk Program-Footnote-1837894 -Ref: Igawk Program-Footnote-2838096 -Ref: Igawk Program-Footnote-3838218 -Node: Anagram Program838333 -Node: Signature Program841395 -Node: Programs Summary842642 -Node: Programs Exercises843856 -Ref: Programs Exercises-Footnote-1847986 -Node: Advanced Features848072 -Node: Nondecimal Data850139 -Node: Array Sorting851730 -Node: Controlling Array Traversal852430 -Ref: Controlling Array Traversal-Footnote-1860798 -Node: Array Sorting Functions860916 -Ref: Array Sorting Functions-Footnote-1866007 -Node: Two-way I/O866203 -Ref: Two-way I/O-Footnote-1873929 -Ref: Two-way I/O-Footnote-2874116 -Node: TCP/IP Networking874198 -Node: Profiling877316 -Node: Extension Philosophy886625 -Node: Advanced Features Summary888104 -Node: Internationalization890119 -Node: I18N and L10N891793 -Node: Explaining gettext892480 -Ref: Explaining gettext-Footnote-1898372 -Ref: Explaining gettext-Footnote-2898557 -Node: Programmer i18n898722 -Ref: Programmer i18n-Footnote-1903671 -Node: Translator i18n903720 -Node: String Extraction904514 -Ref: String Extraction-Footnote-1905646 -Node: Printf Ordering905732 -Ref: Printf Ordering-Footnote-1908518 -Node: I18N Portability908582 -Ref: I18N Portability-Footnote-1911038 -Node: I18N Example911101 -Ref: I18N Example-Footnote-1914376 -Ref: I18N Example-Footnote-2914449 -Node: Gawk I18N914558 -Node: I18N Summary915207 -Node: Debugger916548 -Node: Debugging917548 -Node: Debugging Concepts917989 -Node: Debugging Terms919798 -Node: Awk Debugging922373 -Ref: Awk Debugging-Footnote-1923318 -Node: Sample Debugging Session923450 -Node: Debugger Invocation923984 -Node: Finding The Bug925370 -Node: List of Debugger Commands931844 -Node: Breakpoint Control933177 -Node: Debugger Execution Control936871 -Node: Viewing And Changing Data940233 -Node: Execution Stack943774 -Node: Debugger Info945411 -Node: Miscellaneous Debugger Commands949482 -Node: Readline Support954544 -Node: Limitations955440 -Node: Debugging Summary957994 -Node: Namespaces959273 -Node: Global Namespace960384 -Node: Qualified Names961782 -Node: Default Namespace962781 -Node: Changing The Namespace963522 -Node: Naming Rules965136 -Node: Internal Name Management966984 -Node: Namespace Example968026 -Node: Namespace And Features970588 -Node: Namespace Summary972023 -Node: Arbitrary Precision Arithmetic973500 -Node: Computer Arithmetic974987 -Ref: table-numeric-ranges978753 -Ref: table-floating-point-ranges979246 -Ref: Computer Arithmetic-Footnote-1979904 -Node: Math Definitions979961 -Ref: table-ieee-formats983277 -Ref: Math Definitions-Footnote-1983880 -Node: MPFR features983985 -Node: FP Math Caution985703 -Ref: FP Math Caution-Footnote-1986775 -Node: Inexactness of computations987144 -Node: Inexact representation988104 -Node: Comparing FP Values989464 -Node: Errors accumulate990705 -Node: Getting Accuracy992138 -Node: Try To Round994848 -Node: Setting precision995747 -Ref: table-predefined-precision-strings996444 -Node: Setting the rounding mode998274 -Ref: table-gawk-rounding-modes998648 -Ref: Setting the rounding mode-Footnote-11002579 -Node: Arbitrary Precision Integers1002758 -Ref: Arbitrary Precision Integers-Footnote-11005933 -Node: Checking for MPFR1006082 -Node: POSIX Floating Point Problems1007556 -Ref: POSIX Floating Point Problems-Footnote-11011841 -Node: Floating point summary1011879 -Node: Dynamic Extensions1014069 -Node: Extension Intro1015622 -Node: Plugin License1016888 -Node: Extension Mechanism Outline1017685 -Ref: figure-load-extension1018124 -Ref: figure-register-new-function1019689 -Ref: figure-call-new-function1020781 -Node: Extension API Description1022843 -Node: Extension API Functions Introduction1024556 -Ref: table-api-std-headers1026392 -Node: General Data Types1030641 -Ref: General Data Types-Footnote-11039271 -Node: Memory Allocation Functions1039570 -Ref: Memory Allocation Functions-Footnote-11044071 -Node: Constructor Functions1044170 -Node: API Ownership of MPFR and GMP Values1047636 -Node: Registration Functions1048949 -Node: Extension Functions1049649 -Node: Exit Callback Functions1054971 -Node: Extension Version String1056221 -Node: Input Parsers1056884 -Node: Output Wrappers1069605 -Node: Two-way processors1074117 -Node: Printing Messages1076382 -Ref: Printing Messages-Footnote-11077553 -Node: Updating ERRNO1077706 -Node: Requesting Values1078445 -Ref: table-value-types-returned1079182 -Node: Accessing Parameters1080118 -Node: Symbol Table Access1081355 -Node: Symbol table by name1081867 -Ref: Symbol table by name-Footnote-11084891 -Node: Symbol table by cookie1085019 -Ref: Symbol table by cookie-Footnote-11089204 -Node: Cached values1089268 -Ref: Cached values-Footnote-11092804 -Node: Array Manipulation1092957 -Ref: Array Manipulation-Footnote-11094048 -Node: Array Data Types1094085 -Ref: Array Data Types-Footnote-11096743 -Node: Array Functions1096835 -Node: Flattening Arrays1101333 -Node: Creating Arrays1108309 -Node: Redirection API1113076 -Node: Extension API Variables1115909 -Node: Extension Versioning1116620 -Ref: gawk-api-version1117049 -Node: Extension GMP/MPFR Versioning1118780 -Node: Extension API Informational Variables1120408 -Node: Extension API Boilerplate1121481 -Node: Changes from API V11125455 -Node: Finding Extensions1127027 -Node: Extension Example1127586 -Node: Internal File Description1128384 -Node: Internal File Ops1132464 -Ref: Internal File Ops-Footnote-11143814 -Node: Using Internal File Ops1143954 -Ref: Using Internal File Ops-Footnote-11146337 -Node: Extension Samples1146611 -Node: Extension Sample File Functions1148140 -Node: Extension Sample Fnmatch1155789 -Node: Extension Sample Fork1157276 -Node: Extension Sample Inplace1158494 -Node: Extension Sample Ord1162120 -Node: Extension Sample Readdir1162956 -Ref: table-readdir-file-types1163845 -Node: Extension Sample Revout1164912 -Node: Extension Sample Rev2way1165501 -Node: Extension Sample Read write array1166241 -Node: Extension Sample Readfile1168183 -Node: Extension Sample Time1169278 -Node: Extension Sample API Tests1171030 -Node: gawkextlib1171522 -Node: Extension summary1174440 -Node: Extension Exercises1178142 -Node: Language History1179384 -Node: V7/SVR3.11181040 -Node: SVR41183192 -Node: POSIX1184626 -Node: BTL1186007 -Node: POSIX/GNU1186736 -Node: Feature History1192514 -Node: Common Extensions1209689 -Node: Ranges and Locales1210972 -Ref: Ranges and Locales-Footnote-11215588 -Ref: Ranges and Locales-Footnote-21215615 -Ref: Ranges and Locales-Footnote-31215850 -Node: Contributors1216073 -Node: History summary1222070 -Node: Installation1223450 -Node: Gawk Distribution1224394 -Node: Getting1224878 -Node: Extracting1225841 -Node: Distribution contents1227479 -Node: Unix Installation1233959 -Node: Quick Installation1234641 -Node: Compiling with MPFR1237122 -Node: Shell Startup Files1237814 -Node: Additional Configuration Options1238903 -Node: Configuration Philosophy1241218 -Node: Non-Unix Installation1243587 -Node: PC Installation1244047 -Node: PC Binary Installation1244885 -Node: PC Compiling1245320 -Node: PC Using1246437 -Node: Cygwin1249990 -Node: MSYS1251214 -Node: VMS Installation1251816 -Node: VMS Compilation1252607 -Ref: VMS Compilation-Footnote-11253836 -Node: VMS Dynamic Extensions1253894 -Node: VMS Installation Details1255579 -Node: VMS Running1257832 -Node: VMS GNV1262111 -Node: VMS Old Gawk1262846 -Node: Bugs1263317 -Node: Bug address1264066 -Node: Usenet1267048 -Node: Performance bugs1268057 -Node: Maintainers1270914 -Node: Other Versions1272109 -Node: Installation summary1279974 -Node: Notes1281183 -Node: Compatibility Mode1281977 -Node: Additions1282759 -Node: Accessing The Source1283684 -Node: Adding Code1285121 -Node: New Ports1291340 -Node: Derived Files1295715 -Ref: Derived Files-Footnote-11301375 -Ref: Derived Files-Footnote-21301410 -Ref: Derived Files-Footnote-31302008 -Node: Future Extensions1302122 -Node: Implementation Limitations1302780 -Node: Extension Design1303990 -Node: Old Extension Problems1305134 -Ref: Old Extension Problems-Footnote-11306652 -Node: Extension New Mechanism Goals1306709 -Ref: Extension New Mechanism Goals-Footnote-11310073 -Node: Extension Other Design Decisions1310262 -Node: Extension Future Growth1312375 -Node: Notes summary1312981 -Node: Basic Concepts1314139 -Node: Basic High Level1314820 -Ref: figure-general-flow1315102 -Ref: figure-process-flow1315787 -Ref: Basic High Level-Footnote-11319088 -Node: Basic Data Typing1319273 -Node: Glossary1322601 -Node: Copying1354486 -Node: GNU Free Documentation License1392029 -Node: Index1417149 +Node: Foreword345332 +Node: Foreword449774 +Node: Preface51306 +Ref: Preface-Footnote-154165 +Ref: Preface-Footnote-254274 +Ref: Preface-Footnote-354508 +Node: History54650 +Node: Names57002 +Ref: Names-Footnote-158106 +Node: This Manual58253 +Ref: This Manual-Footnote-164892 +Node: Conventions64992 +Node: Manual History67361 +Ref: Manual History-Footnote-170358 +Ref: Manual History-Footnote-270399 +Node: How To Contribute70473 +Node: Acknowledgments71399 +Node: Getting Started76336 +Node: Running gawk78775 +Node: One-shot79965 +Node: Read Terminal81228 +Node: Long83221 +Node: Executable Scripts84734 +Ref: Executable Scripts-Footnote-187367 +Node: Comments87470 +Node: Quoting89954 +Node: DOS Quoting95480 +Node: Sample Data Files97536 +Node: Very Simple100131 +Node: Two Rules106233 +Node: More Complex108118 +Node: Statements/Lines110450 +Ref: Statements/Lines-Footnote-1114934 +Node: Other Features115199 +Node: When116135 +Ref: When-Footnote-1117889 +Node: Intro Summary117954 +Node: Invoking Gawk118838 +Node: Command Line120352 +Node: Options121150 +Ref: Options-Footnote-1139064 +Ref: Options-Footnote-2139295 +Node: Other Arguments139320 +Node: Naming Standard Input143331 +Node: Environment Variables144541 +Node: AWKPATH Variable145099 +Ref: AWKPATH Variable-Footnote-1148511 +Ref: AWKPATH Variable-Footnote-2148545 +Node: AWKLIBPATH Variable148916 +Ref: AWKLIBPATH Variable-Footnote-1150613 +Node: Other Environment Variables150988 +Node: Exit Status154940 +Node: Include Files155617 +Node: Loading Shared Libraries159307 +Node: Obsolete160735 +Node: Undocumented161427 +Node: Invoking Summary161724 +Node: Regexp164565 +Node: Regexp Usage166019 +Node: Escape Sequences168056 +Node: Regexp Operators174297 +Node: Regexp Operator Details174782 +Ref: Regexp Operator Details-Footnote-1182146 +Node: Interval Expressions182293 +Ref: Interval Expressions-Footnote-1183714 +Node: Bracket Expressions183812 +Ref: table-char-classes186288 +Node: Leftmost Longest189614 +Node: Computed Regexps190917 +Node: GNU Regexp Operators194344 +Node: Case-sensitivity198081 +Ref: Case-sensitivity-Footnote-1200947 +Ref: Case-sensitivity-Footnote-2201182 +Node: Regexp Summary201290 +Node: Reading Files202756 +Node: Records205025 +Node: awk split records206100 +Node: gawk split records210800 +Ref: gawk split records-Footnote-1215874 +Node: Fields215911 +Node: Nonconstant Fields218652 +Ref: Nonconstant Fields-Footnote-1220888 +Node: Changing Fields221092 +Node: Field Separators227123 +Node: Default Field Splitting229821 +Node: Regexp Field Splitting230939 +Node: Single Character Fields234616 +Node: Command Line Field Separator235676 +Node: Full Line Fields238894 +Ref: Full Line Fields-Footnote-1240416 +Ref: Full Line Fields-Footnote-2240462 +Node: Field Splitting Summary240563 +Node: Constant Size242637 +Node: Fixed width data243369 +Node: Skipping intervening246836 +Node: Allowing trailing data247634 +Node: Fields with fixed data248671 +Node: Splitting By Content250189 +Ref: Splitting By Content-Footnote-1253972 +Node: More CSV254135 +Node: Testing field creation255727 +Node: Multiple Line257352 +Node: Getline263629 +Node: Plain Getline266098 +Node: Getline/Variable268671 +Node: Getline/File269822 +Node: Getline/Variable/File271210 +Ref: Getline/Variable/File-Footnote-1272815 +Node: Getline/Pipe272903 +Node: Getline/Variable/Pipe275607 +Node: Getline/Coprocess276742 +Node: Getline/Variable/Coprocess278009 +Node: Getline Notes278751 +Node: Getline Summary281548 +Ref: table-getline-variants281972 +Node: Read Timeout282720 +Ref: Read Timeout-Footnote-1286626 +Node: Retrying Input286684 +Node: Command-line directories287883 +Node: Input Summary288789 +Node: Input Exercises291961 +Node: Printing292395 +Node: Print294229 +Node: Print Examples295686 +Node: Output Separators298466 +Node: OFMT300483 +Node: Printf301839 +Node: Basic Printf302624 +Node: Control Letters304198 +Node: Format Modifiers309360 +Node: Printf Examples315375 +Node: Redirection317861 +Node: Special FD324702 +Ref: Special FD-Footnote-1327870 +Node: Special Files327944 +Node: Other Inherited Files328561 +Node: Special Network329562 +Node: Special Caveats330422 +Node: Close Files And Pipes331371 +Ref: table-close-pipe-return-values338278 +Ref: Close Files And Pipes-Footnote-1339091 +Ref: Close Files And Pipes-Footnote-2339239 +Node: Nonfatal339391 +Node: Output Summary341729 +Node: Output Exercises342951 +Node: Expressions343630 +Node: Values344818 +Node: Constants345496 +Node: Scalar Constants346187 +Ref: Scalar Constants-Footnote-1348697 +Node: Nondecimal-numbers348947 +Node: Regexp Constants351948 +Node: Using Constant Regexps352474 +Node: Standard Regexp Constants353096 +Node: Strong Regexp Constants356284 +Node: Variables359296 +Node: Using Variables359953 +Node: Assignment Options361863 +Node: Conversion364334 +Node: Strings And Numbers364858 +Ref: Strings And Numbers-Footnote-1367921 +Node: Locale influences conversions368030 +Ref: table-locale-affects370788 +Node: All Operators371406 +Node: Arithmetic Ops372035 +Node: Concatenation374751 +Ref: Concatenation-Footnote-1377598 +Node: Assignment Ops377705 +Ref: table-assign-ops382696 +Node: Increment Ops384009 +Node: Truth Values and Conditions387469 +Node: Truth Values388543 +Node: Typing and Comparison389591 +Node: Variable Typing390411 +Ref: Variable Typing-Footnote-1396874 +Ref: Variable Typing-Footnote-2396946 +Node: Comparison Operators397023 +Ref: table-relational-ops397442 +Node: POSIX String Comparison400937 +Ref: POSIX String Comparison-Footnote-1402632 +Ref: POSIX String Comparison-Footnote-2402771 +Node: Boolean Ops402855 +Ref: Boolean Ops-Footnote-1407337 +Node: Conditional Exp407429 +Node: Function Calls409165 +Node: Precedence413042 +Node: Locales416701 +Node: Expressions Summary418333 +Node: Patterns and Actions420906 +Node: Pattern Overview422026 +Node: Regexp Patterns423703 +Node: Expression Patterns424245 +Node: Ranges428026 +Node: BEGIN/END431134 +Node: Using BEGIN/END431895 +Ref: Using BEGIN/END-Footnote-1434649 +Node: I/O And BEGIN/END434755 +Node: BEGINFILE/ENDFILE437068 +Node: Empty440299 +Node: Using Shell Variables440616 +Node: Action Overview442890 +Node: Statements445215 +Node: If Statement447063 +Node: While Statement448558 +Node: Do Statement450586 +Node: For Statement451734 +Node: Switch Statement454905 +Node: Break Statement457346 +Node: Continue Statement459438 +Node: Next Statement461265 +Node: Nextfile Statement463648 +Node: Exit Statement466337 +Node: Built-in Variables468740 +Node: User-modified469873 +Node: Auto-set477640 +Ref: Auto-set-Footnote-1494447 +Ref: Auto-set-Footnote-2494653 +Node: ARGC and ARGV494709 +Node: Pattern Action Summary498922 +Node: Arrays501352 +Node: Array Basics502681 +Node: Array Intro503525 +Ref: figure-array-elements505500 +Ref: Array Intro-Footnote-1508204 +Node: Reference to Elements508332 +Node: Assigning Elements510796 +Node: Array Example511287 +Node: Scanning an Array513046 +Node: Controlling Scanning516068 +Ref: Controlling Scanning-Footnote-1522524 +Node: Numeric Array Subscripts522840 +Node: Uninitialized Subscripts525024 +Node: Delete526643 +Ref: Delete-Footnote-1529395 +Node: Multidimensional529452 +Node: Multiscanning532547 +Node: Arrays of Arrays534138 +Node: Arrays Summary538906 +Node: Functions540999 +Node: Built-in542037 +Node: Calling Built-in543190 +Node: Boolean Functions545186 +Node: Numeric Functions545740 +Ref: Numeric Functions-Footnote-1549767 +Ref: Numeric Functions-Footnote-2550415 +Ref: Numeric Functions-Footnote-3550463 +Node: String Functions550735 +Ref: String Functions-Footnote-1574876 +Ref: String Functions-Footnote-2575004 +Ref: String Functions-Footnote-3575252 +Node: Gory Details575339 +Ref: table-sub-escapes577130 +Ref: table-sub-proposed578649 +Ref: table-posix-sub580012 +Ref: table-gensub-escapes581553 +Ref: Gory Details-Footnote-1582376 +Node: I/O Functions582530 +Ref: table-system-return-values588984 +Ref: I/O Functions-Footnote-1591064 +Ref: I/O Functions-Footnote-2591212 +Node: Time Functions591332 +Ref: Time Functions-Footnote-1602003 +Ref: Time Functions-Footnote-2602071 +Ref: Time Functions-Footnote-3602229 +Ref: Time Functions-Footnote-4602340 +Ref: Time Functions-Footnote-5602452 +Ref: Time Functions-Footnote-6602679 +Node: Bitwise Functions602945 +Ref: table-bitwise-ops603539 +Ref: Bitwise Functions-Footnote-1609602 +Ref: Bitwise Functions-Footnote-2609775 +Node: Type Functions609966 +Node: I18N Functions612920 +Node: User-defined614571 +Node: Definition Syntax615383 +Ref: Definition Syntax-Footnote-1621077 +Node: Function Example621148 +Ref: Function Example-Footnote-1624070 +Node: Function Calling624092 +Node: Calling A Function624680 +Node: Variable Scope625638 +Node: Pass By Value/Reference628632 +Node: Function Caveats631276 +Ref: Function Caveats-Footnote-1633323 +Node: Return Statement633443 +Node: Dynamic Typing636422 +Node: Indirect Calls637352 +Ref: Indirect Calls-Footnote-1647607 +Node: Functions Summary647735 +Node: Library Functions650440 +Ref: Library Functions-Footnote-1654047 +Ref: Library Functions-Footnote-2654190 +Node: Library Names654361 +Ref: Library Names-Footnote-1658028 +Ref: Library Names-Footnote-2658251 +Node: General Functions658337 +Node: Strtonum Function659519 +Node: Assert Function662541 +Node: Round Function665867 +Node: Cliff Random Function667407 +Node: Ordinal Functions668423 +Ref: Ordinal Functions-Footnote-1671486 +Ref: Ordinal Functions-Footnote-2671738 +Node: Join Function671948 +Ref: Join Function-Footnote-1673718 +Node: Getlocaltime Function673918 +Node: Readfile Function677660 +Node: Shell Quoting679637 +Node: Isnumeric Function681065 +Node: Data File Management682046 +Node: Filetrans Function682678 +Node: Rewind Function686774 +Node: File Checking688683 +Ref: File Checking-Footnote-1690017 +Node: Empty Files690218 +Node: Ignoring Assigns692197 +Node: Getopt Function693747 +Ref: Getopt Function-Footnote-1708970 +Node: Passwd Functions709170 +Ref: Passwd Functions-Footnote-1718009 +Node: Group Functions718097 +Ref: Group Functions-Footnote-1725995 +Node: Walking Arrays726202 +Node: Library Functions Summary729210 +Node: Library Exercises730616 +Node: Sample Programs731081 +Node: Running Examples731851 +Node: Clones732579 +Node: Cut Program733803 +Node: Egrep Program743943 +Node: Id Program752944 +Node: Split Program762891 +Ref: Split Program-Footnote-1772784 +Node: Tee Program772957 +Node: Uniq Program775747 +Node: Wc Program783335 +Node: Bytes vs. Characters783722 +Node: Using extensions785270 +Node: wc program786024 +Node: Miscellaneous Programs790889 +Node: Dupword Program792102 +Node: Alarm Program794132 +Node: Translate Program798987 +Ref: Translate Program-Footnote-1803552 +Node: Labels Program803822 +Ref: Labels Program-Footnote-1807173 +Node: Word Sorting807257 +Node: History Sorting811329 +Node: Extract Program813554 +Node: Simple Sed821608 +Node: Igawk Program824682 +Ref: Igawk Program-Footnote-1839013 +Ref: Igawk Program-Footnote-2839215 +Ref: Igawk Program-Footnote-3839337 +Node: Anagram Program839452 +Node: Signature Program842514 +Node: Programs Summary843761 +Node: Programs Exercises844975 +Ref: Programs Exercises-Footnote-1849105 +Node: Advanced Features849191 +Node: Nondecimal Data851322 +Node: Boolean Typed Values852920 +Node: Array Sorting854801 +Node: Controlling Array Traversal855506 +Ref: Controlling Array Traversal-Footnote-1863874 +Node: Array Sorting Functions863992 +Ref: Array Sorting Functions-Footnote-1869083 +Node: Two-way I/O869279 +Ref: Two-way I/O-Footnote-1877005 +Ref: Two-way I/O-Footnote-2877192 +Node: TCP/IP Networking877274 +Node: Profiling880392 +Node: Extension Philosophy889701 +Node: Advanced Features Summary891180 +Node: Internationalization893195 +Node: I18N and L10N894869 +Node: Explaining gettext895556 +Ref: Explaining gettext-Footnote-1901448 +Ref: Explaining gettext-Footnote-2901633 +Node: Programmer i18n901798 +Ref: Programmer i18n-Footnote-1906747 +Node: Translator i18n906796 +Node: String Extraction907590 +Ref: String Extraction-Footnote-1908722 +Node: Printf Ordering908808 +Ref: Printf Ordering-Footnote-1911594 +Node: I18N Portability911658 +Ref: I18N Portability-Footnote-1914114 +Node: I18N Example914177 +Ref: I18N Example-Footnote-1917452 +Ref: I18N Example-Footnote-2917525 +Node: Gawk I18N917634 +Node: I18N Summary918283 +Node: Debugger919624 +Node: Debugging920624 +Node: Debugging Concepts921065 +Node: Debugging Terms922874 +Node: Awk Debugging925449 +Ref: Awk Debugging-Footnote-1926394 +Node: Sample Debugging Session926526 +Node: Debugger Invocation927060 +Node: Finding The Bug928446 +Node: List of Debugger Commands934920 +Node: Breakpoint Control936253 +Node: Debugger Execution Control939947 +Node: Viewing And Changing Data943309 +Node: Execution Stack946850 +Node: Debugger Info948487 +Node: Miscellaneous Debugger Commands952558 +Node: Readline Support957620 +Node: Limitations958516 +Node: Debugging Summary961070 +Node: Namespaces962349 +Node: Global Namespace963460 +Node: Qualified Names964858 +Node: Default Namespace965857 +Node: Changing The Namespace966598 +Node: Naming Rules968212 +Node: Internal Name Management970060 +Node: Namespace Example971102 +Node: Namespace And Features973664 +Node: Namespace Summary975099 +Node: Arbitrary Precision Arithmetic976576 +Node: Computer Arithmetic978063 +Ref: table-numeric-ranges981829 +Ref: table-floating-point-ranges982322 +Ref: Computer Arithmetic-Footnote-1982980 +Node: Math Definitions983037 +Ref: table-ieee-formats986013 +Node: MPFR features986580 +Node: FP Math Caution988298 +Ref: FP Math Caution-Footnote-1989370 +Node: Inexactness of computations989739 +Node: Inexact representation990770 +Node: Comparing FP Values992130 +Node: Errors accumulate993371 +Node: Strange values994827 +Ref: Strange values-Footnote-1997415 +Node: Getting Accuracy997520 +Node: Try To Round1000230 +Node: Setting precision1001129 +Ref: table-predefined-precision-strings1001826 +Node: Setting the rounding mode1003656 +Ref: table-gawk-rounding-modes1004030 +Ref: Setting the rounding mode-Footnote-11007961 +Node: Arbitrary Precision Integers1008140 +Ref: Arbitrary Precision Integers-Footnote-11011315 +Node: Checking for MPFR1011464 +Node: POSIX Floating Point Problems1012938 +Ref: POSIX Floating Point Problems-Footnote-11017223 +Node: Floating point summary1017261 +Node: Dynamic Extensions1019451 +Node: Extension Intro1021004 +Node: Plugin License1022270 +Node: Extension Mechanism Outline1023067 +Ref: figure-load-extension1023506 +Ref: figure-register-new-function1025071 +Ref: figure-call-new-function1026163 +Node: Extension API Description1028225 +Node: Extension API Functions Introduction1029938 +Ref: table-api-std-headers1031774 +Node: General Data Types1036023 +Ref: General Data Types-Footnote-11044729 +Node: Memory Allocation Functions1045028 +Ref: Memory Allocation Functions-Footnote-11049529 +Node: Constructor Functions1049628 +Node: API Ownership of MPFR and GMP Values1053281 +Node: Registration Functions1054594 +Node: Extension Functions1055294 +Node: Exit Callback Functions1060616 +Node: Extension Version String1061866 +Node: Input Parsers1062529 +Node: Output Wrappers1075250 +Node: Two-way processors1079762 +Node: Printing Messages1082027 +Ref: Printing Messages-Footnote-11083198 +Node: Updating ERRNO1083351 +Node: Requesting Values1084090 +Ref: table-value-types-returned1084827 +Node: Accessing Parameters1085935 +Node: Symbol Table Access1087172 +Node: Symbol table by name1087684 +Ref: Symbol table by name-Footnote-11090708 +Node: Symbol table by cookie1090836 +Ref: Symbol table by cookie-Footnote-11095021 +Node: Cached values1095085 +Ref: Cached values-Footnote-11098621 +Node: Array Manipulation1098774 +Ref: Array Manipulation-Footnote-11099865 +Node: Array Data Types1099902 +Ref: Array Data Types-Footnote-11102560 +Node: Array Functions1102652 +Node: Flattening Arrays1107150 +Node: Creating Arrays1114126 +Node: Redirection API1118893 +Node: Extension API Variables1121726 +Node: Extension Versioning1122437 +Ref: gawk-api-version1122866 +Node: Extension GMP/MPFR Versioning1124597 +Node: Extension API Informational Variables1126225 +Node: Extension API Boilerplate1127298 +Node: Changes from API V11131272 +Node: Finding Extensions1132844 +Node: Extension Example1133403 +Node: Internal File Description1134201 +Node: Internal File Ops1138281 +Ref: Internal File Ops-Footnote-11149631 +Node: Using Internal File Ops1149771 +Ref: Using Internal File Ops-Footnote-11152154 +Node: Extension Samples1152428 +Node: Extension Sample File Functions1153957 +Node: Extension Sample Fnmatch1161606 +Node: Extension Sample Fork1163093 +Node: Extension Sample Inplace1164311 +Node: Extension Sample Ord1167937 +Node: Extension Sample Readdir1168773 +Ref: table-readdir-file-types1169662 +Node: Extension Sample Revout1170729 +Node: Extension Sample Rev2way1171318 +Node: Extension Sample Read write array1172058 +Node: Extension Sample Readfile1174000 +Node: Extension Sample Time1175095 +Node: Extension Sample API Tests1176847 +Node: gawkextlib1177339 +Node: Extension summary1180257 +Node: Extension Exercises1183959 +Node: Language History1185201 +Node: V7/SVR3.11186857 +Node: SVR41189009 +Node: POSIX1190443 +Node: BTL1191824 +Node: POSIX/GNU1192553 +Node: Feature History1198331 +Node: Common Extensions1215506 +Node: Ranges and Locales1216789 +Ref: Ranges and Locales-Footnote-11221405 +Ref: Ranges and Locales-Footnote-21221432 +Ref: Ranges and Locales-Footnote-31221667 +Node: Contributors1221890 +Node: History summary1227887 +Node: Installation1229267 +Node: Gawk Distribution1230211 +Node: Getting1230695 +Node: Extracting1231658 +Node: Distribution contents1233296 +Node: Unix Installation1239776 +Node: Quick Installation1240458 +Node: Compiling with MPFR1242939 +Node: Shell Startup Files1243631 +Node: Additional Configuration Options1244720 +Node: Configuration Philosophy1247035 +Node: Non-Unix Installation1249404 +Node: PC Installation1249864 +Node: PC Binary Installation1250702 +Node: PC Compiling1251137 +Node: PC Using1252254 +Node: Cygwin1255807 +Node: MSYS1257031 +Node: VMS Installation1257633 +Node: VMS Compilation1258424 +Ref: VMS Compilation-Footnote-11259653 +Node: VMS Dynamic Extensions1259711 +Node: VMS Installation Details1261396 +Node: VMS Running1263649 +Node: VMS GNV1267928 +Node: VMS Old Gawk1268663 +Node: Bugs1269134 +Node: Bug address1269883 +Node: Usenet1272865 +Node: Performance bugs1273874 +Node: Maintainers1276731 +Node: Other Versions1277926 +Node: Installation summary1285791 +Node: Notes1287000 +Node: Compatibility Mode1287794 +Node: Additions1288576 +Node: Accessing The Source1289501 +Node: Adding Code1290938 +Node: New Ports1297157 +Node: Derived Files1301532 +Ref: Derived Files-Footnote-11307192 +Ref: Derived Files-Footnote-21307227 +Ref: Derived Files-Footnote-31307825 +Node: Future Extensions1307939 +Node: Implementation Limitations1308597 +Node: Extension Design1309807 +Node: Old Extension Problems1310951 +Ref: Old Extension Problems-Footnote-11312469 +Node: Extension New Mechanism Goals1312526 +Ref: Extension New Mechanism Goals-Footnote-11315890 +Node: Extension Other Design Decisions1316079 +Node: Extension Future Growth1318192 +Node: Notes summary1318798 +Node: Basic Concepts1319956 +Node: Basic High Level1320637 +Ref: figure-general-flow1320919 +Ref: figure-process-flow1321604 +Ref: Basic High Level-Footnote-11324905 +Node: Basic Data Typing1325090 +Node: Glossary1328418 +Node: Copying1360305 +Node: GNU Free Documentation License1397848 +Node: Index1422968 End Tag Table |