diff options
Diffstat (limited to 'doc/gawk.info')
-rw-r--r-- | doc/gawk.info | 1440 |
1 files changed, 785 insertions, 655 deletions
diff --git a/doc/gawk.info b/doc/gawk.info index 5eef11f6..55ddd990 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()'. @@ -488,6 +490,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"]. @@ -551,6 +554,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. @@ -3221,7 +3225,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 @@ -6972,8 +6978,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 @@ -12781,6 +12787,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 @@ -12793,7 +12800,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 -------------------------------- @@ -12837,9 +12844,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 @@ -12865,7 +12887,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()' @@ -12963,7 +12985,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 @@ -13531,7 +13553,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. @@ -13677,7 +13699,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 @@ -13894,7 +13916,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 @@ -14211,7 +14233,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. @@ -14393,7 +14415,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 @@ -14417,6 +14439,9 @@ contexts. '"number"' X is a number. + '"number|bool"' + X is a Boolean typed value (*note Boolean Typed Values::). + '"string"' X is a string. @@ -14478,7 +14503,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 @@ -15157,7 +15182,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 @@ -20872,6 +20897,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. @@ -20881,7 +20907,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 =================================== @@ -20924,9 +20950,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 @@ -20945,7 +21015,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 @@ -21184,7 +21254,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 @@ -21324,7 +21394,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 @@ -21519,7 +21589,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': @@ -21599,7 +21669,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 @@ -21861,7 +21931,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 @@ -21897,7 +21967,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 @@ -24254,18 +24324,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. @@ -24324,11 +24386,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 @@ -24421,6 +24478,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 @@ -24485,7 +24543,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 .......................... @@ -24533,6 +24591,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 @@ -25479,7 +25595,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'. @@ -25492,6 +25609,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 @@ -25507,6 +25625,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. @@ -25817,6 +25936,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 @@ -26542,16 +26666,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 @@ -33221,8 +33346,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 @@ -35379,6 +35504,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) @@ -36967,6 +37093,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) @@ -38192,605 +38319,608 @@ Index Tag Table: Node: Top1200 -Node: Foreword344934 -Node: Foreword449376 -Node: Preface50908 -Ref: Preface-Footnote-153767 -Ref: Preface-Footnote-253876 -Ref: Preface-Footnote-354110 -Node: History54252 -Node: Names56604 -Ref: Names-Footnote-157708 -Node: This Manual57855 -Ref: This Manual-Footnote-164494 -Node: Conventions64594 -Node: Manual History66963 -Ref: Manual History-Footnote-169960 -Ref: Manual History-Footnote-270001 -Node: How To Contribute70075 -Node: Acknowledgments71001 -Node: Getting Started75938 -Node: Running gawk78377 -Node: One-shot79567 -Node: Read Terminal80830 -Node: Long82823 -Node: Executable Scripts84336 -Ref: Executable Scripts-Footnote-186969 -Node: Comments87072 -Node: Quoting89556 -Node: DOS Quoting95082 -Node: Sample Data Files97138 -Node: Very Simple99733 -Node: Two Rules105835 -Node: More Complex107720 -Node: Statements/Lines110052 -Ref: Statements/Lines-Footnote-1114536 -Node: Other Features114801 -Node: When115737 -Ref: When-Footnote-1117491 -Node: Intro Summary117556 -Node: Invoking Gawk118440 -Node: Command Line119954 -Node: Options120752 -Ref: Options-Footnote-1138666 -Ref: Options-Footnote-2138897 -Node: Other Arguments138922 -Node: Naming Standard Input142933 -Node: Environment Variables144143 -Node: AWKPATH Variable144701 -Ref: AWKPATH Variable-Footnote-1148113 -Ref: AWKPATH Variable-Footnote-2148147 -Node: AWKLIBPATH Variable148518 -Ref: AWKLIBPATH Variable-Footnote-1150215 -Node: Other Environment Variables150590 -Node: Exit Status154411 -Node: Include Files155088 -Node: Loading Shared Libraries158778 -Node: Obsolete160206 -Node: Undocumented160898 -Node: Invoking Summary161195 -Node: Regexp164036 -Node: Regexp Usage165490 -Node: Escape Sequences167527 -Node: Regexp Operators173768 -Node: Regexp Operator Details174253 -Ref: Regexp Operator Details-Footnote-1181617 -Node: Interval Expressions181764 -Ref: Interval Expressions-Footnote-1183185 -Node: Bracket Expressions183283 -Ref: table-char-classes185759 -Node: Leftmost Longest189085 -Node: Computed Regexps190388 -Node: GNU Regexp Operators193815 -Node: Case-sensitivity197552 -Ref: Case-sensitivity-Footnote-1200418 -Ref: Case-sensitivity-Footnote-2200653 -Node: Regexp Summary200761 -Node: Reading Files202227 -Node: Records204496 -Node: awk split records205571 -Node: gawk split records210271 -Ref: gawk split records-Footnote-1215345 -Node: Fields215382 -Node: Nonconstant Fields218123 -Ref: Nonconstant Fields-Footnote-1220359 -Node: Changing Fields220563 -Node: Field Separators226594 -Node: Default Field Splitting229292 -Node: Regexp Field Splitting230410 -Node: Single Character Fields234087 -Node: Command Line Field Separator235147 -Node: Full Line Fields238365 -Ref: Full Line Fields-Footnote-1239887 -Ref: Full Line Fields-Footnote-2239933 -Node: Field Splitting Summary240034 -Node: Constant Size242108 -Node: Fixed width data242840 -Node: Skipping intervening246307 -Node: Allowing trailing data247105 -Node: Fields with fixed data248142 -Node: Splitting By Content249660 -Ref: Splitting By Content-Footnote-1253443 -Node: More CSV253606 -Node: Testing field creation255198 -Node: Multiple Line256823 -Node: Getline263100 -Node: Plain Getline265569 -Node: Getline/Variable268142 -Node: Getline/File269293 -Node: Getline/Variable/File270681 -Ref: Getline/Variable/File-Footnote-1272286 -Node: Getline/Pipe272374 -Node: Getline/Variable/Pipe275078 -Node: Getline/Coprocess276213 -Node: Getline/Variable/Coprocess277480 -Node: Getline Notes278222 -Node: Getline Summary281019 -Ref: table-getline-variants281443 -Node: Read Timeout282191 -Ref: Read Timeout-Footnote-1286097 -Node: Retrying Input286155 -Node: Command-line directories287354 -Node: Input Summary288260 -Node: Input Exercises291432 -Node: Printing291866 -Node: Print293700 -Node: Print Examples295157 -Node: Output Separators297937 -Node: OFMT299954 -Node: Printf301310 -Node: Basic Printf302095 -Node: Control Letters303669 -Node: Format Modifiers308833 -Node: Printf Examples314848 -Node: Redirection317334 -Node: Special FD324175 -Ref: Special FD-Footnote-1327343 -Node: Special Files327417 -Node: Other Inherited Files328034 -Node: Special Network329035 -Node: Special Caveats329895 -Node: Close Files And Pipes330844 -Ref: table-close-pipe-return-values337751 -Ref: Close Files And Pipes-Footnote-1338564 -Ref: Close Files And Pipes-Footnote-2338712 -Node: Nonfatal338864 -Node: Output Summary341202 -Node: Output Exercises342424 -Node: Expressions343103 -Node: Values344291 -Node: Constants344969 -Node: Scalar Constants345660 -Ref: Scalar Constants-Footnote-1348170 -Node: Nondecimal-numbers348420 -Node: Regexp Constants351421 -Node: Using Constant Regexps351947 -Node: Standard Regexp Constants352569 -Node: Strong Regexp Constants355757 -Node: Variables358769 -Node: Using Variables359426 -Node: Assignment Options361336 -Node: Conversion363807 -Node: Strings And Numbers364331 -Ref: Strings And Numbers-Footnote-1367394 -Node: Locale influences conversions367503 -Ref: table-locale-affects370261 -Node: All Operators370879 -Node: Arithmetic Ops371508 -Node: Concatenation374224 -Ref: Concatenation-Footnote-1377071 -Node: Assignment Ops377178 -Ref: table-assign-ops382169 -Node: Increment Ops383482 -Node: Truth Values and Conditions386942 -Node: Truth Values388016 -Node: Typing and Comparison389064 -Node: Variable Typing389884 -Ref: Variable Typing-Footnote-1396347 -Ref: Variable Typing-Footnote-2396419 -Node: Comparison Operators396496 -Ref: table-relational-ops396915 -Node: POSIX String Comparison400410 -Ref: POSIX String Comparison-Footnote-1402105 -Ref: POSIX String Comparison-Footnote-2402244 -Node: Boolean Ops402328 -Ref: Boolean Ops-Footnote-1406810 -Node: Conditional Exp406902 -Node: Function Calls408638 -Node: Precedence412515 -Node: Locales416174 -Node: Expressions Summary417806 -Node: Patterns and Actions420379 -Node: Pattern Overview421499 -Node: Regexp Patterns423176 -Node: Expression Patterns423718 -Node: Ranges427499 -Node: BEGIN/END430607 -Node: Using BEGIN/END431368 -Ref: Using BEGIN/END-Footnote-1434122 -Node: I/O And BEGIN/END434228 -Node: BEGINFILE/ENDFILE436541 -Node: Empty439772 -Node: Using Shell Variables440089 -Node: Action Overview442363 -Node: Statements444688 -Node: If Statement446536 -Node: While Statement448031 -Node: Do Statement450059 -Node: For Statement451207 -Node: Switch Statement454378 -Node: Break Statement456819 -Node: Continue Statement458911 -Node: Next Statement460738 -Node: Nextfile Statement463121 -Node: Exit Statement465810 -Node: Built-in Variables468213 -Node: User-modified469346 -Node: Auto-set477113 -Ref: Auto-set-Footnote-1493920 -Ref: Auto-set-Footnote-2494126 -Node: ARGC and ARGV494182 -Node: Pattern Action Summary498395 -Node: Arrays500825 -Node: Array Basics502154 -Node: Array Intro502998 -Ref: figure-array-elements504973 -Ref: Array Intro-Footnote-1507677 -Node: Reference to Elements507805 -Node: Assigning Elements510269 -Node: Array Example510760 -Node: Scanning an Array512519 -Node: Controlling Scanning515541 -Ref: Controlling Scanning-Footnote-1521997 -Node: Numeric Array Subscripts522313 -Node: Uninitialized Subscripts524497 -Node: Delete526116 -Ref: Delete-Footnote-1528868 -Node: Multidimensional528925 -Node: Multiscanning532020 -Node: Arrays of Arrays533611 -Node: Arrays Summary538379 -Node: Functions540472 -Node: Built-in541510 -Node: Calling Built-in542591 -Node: Numeric Functions544587 -Ref: Numeric Functions-Footnote-1548615 -Ref: Numeric Functions-Footnote-2549263 -Ref: Numeric Functions-Footnote-3549311 -Node: String Functions549583 -Ref: String Functions-Footnote-1573724 -Ref: String Functions-Footnote-2573852 -Ref: String Functions-Footnote-3574100 -Node: Gory Details574187 -Ref: table-sub-escapes575978 -Ref: table-sub-proposed577497 -Ref: table-posix-sub578860 -Ref: table-gensub-escapes580401 -Ref: Gory Details-Footnote-1581224 -Node: I/O Functions581378 -Ref: table-system-return-values587832 -Ref: I/O Functions-Footnote-1589912 -Ref: I/O Functions-Footnote-2590060 -Node: Time Functions590180 -Ref: Time Functions-Footnote-1600851 -Ref: Time Functions-Footnote-2600919 -Ref: Time Functions-Footnote-3601077 -Ref: Time Functions-Footnote-4601188 -Ref: Time Functions-Footnote-5601300 -Ref: Time Functions-Footnote-6601527 -Node: Bitwise Functions601793 -Ref: table-bitwise-ops602387 -Ref: Bitwise Functions-Footnote-1608450 -Ref: Bitwise Functions-Footnote-2608623 -Node: Type Functions608814 -Node: I18N Functions611677 -Node: User-defined613328 -Node: Definition Syntax614140 -Ref: Definition Syntax-Footnote-1619834 -Node: Function Example619905 -Ref: Function Example-Footnote-1622827 -Node: Function Calling622849 -Node: Calling A Function623437 -Node: Variable Scope624395 -Node: Pass By Value/Reference627389 -Node: Function Caveats630033 -Ref: Function Caveats-Footnote-1632080 -Node: Return Statement632200 -Node: Dynamic Typing635179 -Node: Indirect Calls636109 -Ref: Indirect Calls-Footnote-1646361 -Node: Functions Summary646489 -Node: Library Functions649194 -Ref: Library Functions-Footnote-1652801 -Ref: Library Functions-Footnote-2652944 -Node: Library Names653115 -Ref: Library Names-Footnote-1656782 -Ref: Library Names-Footnote-2657005 -Node: General Functions657091 -Node: Strtonum Function658194 -Node: Assert Function661216 -Node: Round Function664542 -Node: Cliff Random Function666082 -Node: Ordinal Functions667098 -Ref: Ordinal Functions-Footnote-1670161 -Ref: Ordinal Functions-Footnote-2670413 -Node: Join Function670623 -Ref: Join Function-Footnote-1672393 -Node: Getlocaltime Function672593 -Node: Readfile Function676335 -Node: Shell Quoting678312 -Node: Data File Management679713 -Node: Filetrans Function680345 -Node: Rewind Function684441 -Node: File Checking686350 -Ref: File Checking-Footnote-1687684 -Node: Empty Files687885 -Node: Ignoring Assigns689864 -Node: Getopt Function691414 -Ref: Getopt Function-Footnote-1706625 -Node: Passwd Functions706825 -Ref: Passwd Functions-Footnote-1715664 -Node: Group Functions715752 -Ref: Group Functions-Footnote-1723650 -Node: Walking Arrays723857 -Node: Library Functions Summary726865 -Node: Library Exercises728271 -Node: Sample Programs728736 -Node: Running Examples729506 -Node: Clones730234 -Node: Cut Program731458 -Node: Egrep Program741598 -Node: Id Program750599 -Node: Split Program760546 -Ref: Split Program-Footnote-1770436 -Node: Tee Program770609 -Node: Uniq Program773399 -Node: Wc Program780987 -Node: Bytes vs. Characters781374 -Node: Using extensions782922 -Node: wc program783676 -Node: Miscellaneous Programs788541 -Node: Dupword Program789754 -Node: Alarm Program791784 -Node: Translate Program796639 -Ref: Translate Program-Footnote-1801204 -Node: Labels Program801474 -Ref: Labels Program-Footnote-1804825 -Node: Word Sorting804909 -Node: History Sorting808981 -Node: Extract Program811206 -Node: Simple Sed819260 -Node: Igawk Program822334 -Ref: Igawk Program-Footnote-1836665 -Ref: Igawk Program-Footnote-2836867 -Ref: Igawk Program-Footnote-3836989 -Node: Anagram Program837104 -Node: Signature Program840166 -Node: Programs Summary841413 -Node: Programs Exercises842627 -Ref: Programs Exercises-Footnote-1846757 -Node: Advanced Features846843 -Node: Nondecimal Data848910 -Node: Array Sorting850501 -Node: Controlling Array Traversal851201 -Ref: Controlling Array Traversal-Footnote-1859569 -Node: Array Sorting Functions859687 -Ref: Array Sorting Functions-Footnote-1864778 -Node: Two-way I/O864974 -Ref: Two-way I/O-Footnote-1872695 -Ref: Two-way I/O-Footnote-2872882 -Node: TCP/IP Networking872964 -Node: Profiling876082 -Node: Extension Philosophy885391 -Node: Advanced Features Summary886870 -Node: Internationalization888885 -Node: I18N and L10N890559 -Node: Explaining gettext891246 -Ref: Explaining gettext-Footnote-1897138 -Ref: Explaining gettext-Footnote-2897323 -Node: Programmer i18n897488 -Ref: Programmer i18n-Footnote-1902437 -Node: Translator i18n902486 -Node: String Extraction903280 -Ref: String Extraction-Footnote-1904412 -Node: Printf Ordering904498 -Ref: Printf Ordering-Footnote-1907284 -Node: I18N Portability907348 -Ref: I18N Portability-Footnote-1909804 -Node: I18N Example909867 -Ref: I18N Example-Footnote-1913142 -Ref: I18N Example-Footnote-2913215 -Node: Gawk I18N913324 -Node: I18N Summary913973 -Node: Debugger915314 -Node: Debugging916314 -Node: Debugging Concepts916755 -Node: Debugging Terms918564 -Node: Awk Debugging921139 -Ref: Awk Debugging-Footnote-1922084 -Node: Sample Debugging Session922216 -Node: Debugger Invocation922750 -Node: Finding The Bug924136 -Node: List of Debugger Commands930610 -Node: Breakpoint Control931943 -Node: Debugger Execution Control935637 -Node: Viewing And Changing Data938999 -Node: Execution Stack942540 -Node: Debugger Info944177 -Node: Miscellaneous Debugger Commands948248 -Node: Readline Support953310 -Node: Limitations954206 -Node: Debugging Summary956760 -Node: Namespaces958039 -Node: Global Namespace959150 -Node: Qualified Names960548 -Node: Default Namespace961547 -Node: Changing The Namespace962288 -Node: Naming Rules963902 -Node: Internal Name Management965750 -Node: Namespace Example966792 -Node: Namespace And Features969354 -Node: Namespace Summary970789 -Node: Arbitrary Precision Arithmetic972266 -Node: Computer Arithmetic973753 -Ref: table-numeric-ranges977519 -Ref: table-floating-point-ranges978012 -Ref: Computer Arithmetic-Footnote-1978670 -Node: Math Definitions978727 -Ref: table-ieee-formats982043 -Ref: Math Definitions-Footnote-1982646 -Node: MPFR features982751 -Node: FP Math Caution984469 -Ref: FP Math Caution-Footnote-1985541 -Node: Inexactness of computations985910 -Node: Inexact representation986870 -Node: Comparing FP Values988230 -Node: Errors accumulate989471 -Node: Getting Accuracy990904 -Node: Try To Round993614 -Node: Setting precision994513 -Ref: table-predefined-precision-strings995210 -Node: Setting the rounding mode997040 -Ref: table-gawk-rounding-modes997414 -Ref: Setting the rounding mode-Footnote-11001345 -Node: Arbitrary Precision Integers1001524 -Ref: Arbitrary Precision Integers-Footnote-11004699 -Node: Checking for MPFR1004848 -Node: POSIX Floating Point Problems1006322 -Ref: POSIX Floating Point Problems-Footnote-11010607 -Node: Floating point summary1010645 -Node: Dynamic Extensions1012835 -Node: Extension Intro1014388 -Node: Plugin License1015654 -Node: Extension Mechanism Outline1016451 -Ref: figure-load-extension1016890 -Ref: figure-register-new-function1018455 -Ref: figure-call-new-function1019547 -Node: Extension API Description1021609 -Node: Extension API Functions Introduction1023322 -Ref: table-api-std-headers1025158 -Node: General Data Types1029407 -Ref: General Data Types-Footnote-11038037 -Node: Memory Allocation Functions1038336 -Ref: Memory Allocation Functions-Footnote-11042837 -Node: Constructor Functions1042936 -Node: API Ownership of MPFR and GMP Values1046402 -Node: Registration Functions1047715 -Node: Extension Functions1048415 -Node: Exit Callback Functions1053737 -Node: Extension Version String1054987 -Node: Input Parsers1055650 -Node: Output Wrappers1068371 -Node: Two-way processors1072883 -Node: Printing Messages1075148 -Ref: Printing Messages-Footnote-11076319 -Node: Updating ERRNO1076472 -Node: Requesting Values1077211 -Ref: table-value-types-returned1077948 -Node: Accessing Parameters1078884 -Node: Symbol Table Access1080121 -Node: Symbol table by name1080633 -Ref: Symbol table by name-Footnote-11083657 -Node: Symbol table by cookie1083785 -Ref: Symbol table by cookie-Footnote-11087970 -Node: Cached values1088034 -Ref: Cached values-Footnote-11091570 -Node: Array Manipulation1091723 -Ref: Array Manipulation-Footnote-11092814 -Node: Array Data Types1092851 -Ref: Array Data Types-Footnote-11095509 -Node: Array Functions1095601 -Node: Flattening Arrays1100099 -Node: Creating Arrays1107075 -Node: Redirection API1111842 -Node: Extension API Variables1114675 -Node: Extension Versioning1115386 -Ref: gawk-api-version1115815 -Node: Extension GMP/MPFR Versioning1117546 -Node: Extension API Informational Variables1119174 -Node: Extension API Boilerplate1120247 -Node: Changes from API V11124221 -Node: Finding Extensions1125793 -Node: Extension Example1126352 -Node: Internal File Description1127150 -Node: Internal File Ops1131230 -Ref: Internal File Ops-Footnote-11142580 -Node: Using Internal File Ops1142720 -Ref: Using Internal File Ops-Footnote-11145103 -Node: Extension Samples1145377 -Node: Extension Sample File Functions1146906 -Node: Extension Sample Fnmatch1154555 -Node: Extension Sample Fork1156042 -Node: Extension Sample Inplace1157260 -Node: Extension Sample Ord1160886 -Node: Extension Sample Readdir1161722 -Ref: table-readdir-file-types1162611 -Node: Extension Sample Revout1163678 -Node: Extension Sample Rev2way1164267 -Node: Extension Sample Read write array1165007 -Node: Extension Sample Readfile1166949 -Node: Extension Sample Time1168044 -Node: Extension Sample API Tests1169796 -Node: gawkextlib1170288 -Node: Extension summary1173206 -Node: Extension Exercises1176908 -Node: Language History1178150 -Node: V7/SVR3.11179806 -Node: SVR41181958 -Node: POSIX1183392 -Node: BTL1184773 -Node: POSIX/GNU1185502 -Node: Feature History1191280 -Node: Common Extensions1208455 -Node: Ranges and Locales1209738 -Ref: Ranges and Locales-Footnote-11214354 -Ref: Ranges and Locales-Footnote-21214381 -Ref: Ranges and Locales-Footnote-31214616 -Node: Contributors1214839 -Node: History summary1220836 -Node: Installation1222216 -Node: Gawk Distribution1223160 -Node: Getting1223644 -Node: Extracting1224607 -Node: Distribution contents1226245 -Node: Unix Installation1232725 -Node: Quick Installation1233407 -Node: Compiling with MPFR1235888 -Node: Shell Startup Files1236580 -Node: Additional Configuration Options1237669 -Node: Configuration Philosophy1239984 -Node: Non-Unix Installation1242353 -Node: PC Installation1242813 -Node: PC Binary Installation1243651 -Node: PC Compiling1244086 -Node: PC Using1245203 -Node: Cygwin1248756 -Node: MSYS1249980 -Node: VMS Installation1250582 -Node: VMS Compilation1251373 -Ref: VMS Compilation-Footnote-11252602 -Node: VMS Dynamic Extensions1252660 -Node: VMS Installation Details1254345 -Node: VMS Running1256598 -Node: VMS GNV1260877 -Node: VMS Old Gawk1261612 -Node: Bugs1262083 -Node: Bug address1262832 -Node: Usenet1265814 -Node: Performance bugs1266823 -Node: Maintainers1269680 -Node: Other Versions1270875 -Node: Installation summary1278740 -Node: Notes1279949 -Node: Compatibility Mode1280743 -Node: Additions1281525 -Node: Accessing The Source1282450 -Node: Adding Code1283887 -Node: New Ports1290106 -Node: Derived Files1294481 -Ref: Derived Files-Footnote-11300141 -Ref: Derived Files-Footnote-21300176 -Ref: Derived Files-Footnote-31300774 -Node: Future Extensions1300888 -Node: Implementation Limitations1301546 -Node: Extension Design1302756 -Node: Old Extension Problems1303900 -Ref: Old Extension Problems-Footnote-11305418 -Node: Extension New Mechanism Goals1305475 -Ref: Extension New Mechanism Goals-Footnote-11308839 -Node: Extension Other Design Decisions1309028 -Node: Extension Future Growth1311141 -Node: Notes summary1311747 -Node: Basic Concepts1312905 -Node: Basic High Level1313586 -Ref: figure-general-flow1313868 -Ref: figure-process-flow1314553 -Ref: Basic High Level-Footnote-11317854 -Node: Basic Data Typing1318039 -Node: Glossary1321367 -Node: Copying1353252 -Node: GNU Free Documentation License1390795 -Node: Index1415915 +Node: Foreword345205 +Node: Foreword449647 +Node: Preface51179 +Ref: Preface-Footnote-154038 +Ref: Preface-Footnote-254147 +Ref: Preface-Footnote-354381 +Node: History54523 +Node: Names56875 +Ref: Names-Footnote-157979 +Node: This Manual58126 +Ref: This Manual-Footnote-164765 +Node: Conventions64865 +Node: Manual History67234 +Ref: Manual History-Footnote-170231 +Ref: Manual History-Footnote-270272 +Node: How To Contribute70346 +Node: Acknowledgments71272 +Node: Getting Started76209 +Node: Running gawk78648 +Node: One-shot79838 +Node: Read Terminal81101 +Node: Long83094 +Node: Executable Scripts84607 +Ref: Executable Scripts-Footnote-187240 +Node: Comments87343 +Node: Quoting89827 +Node: DOS Quoting95353 +Node: Sample Data Files97409 +Node: Very Simple100004 +Node: Two Rules106106 +Node: More Complex107991 +Node: Statements/Lines110323 +Ref: Statements/Lines-Footnote-1114807 +Node: Other Features115072 +Node: When116008 +Ref: When-Footnote-1117762 +Node: Intro Summary117827 +Node: Invoking Gawk118711 +Node: Command Line120225 +Node: Options121023 +Ref: Options-Footnote-1138937 +Ref: Options-Footnote-2139168 +Node: Other Arguments139193 +Node: Naming Standard Input143204 +Node: Environment Variables144414 +Node: AWKPATH Variable144972 +Ref: AWKPATH Variable-Footnote-1148384 +Ref: AWKPATH Variable-Footnote-2148418 +Node: AWKLIBPATH Variable148789 +Ref: AWKLIBPATH Variable-Footnote-1150486 +Node: Other Environment Variables150861 +Node: Exit Status154813 +Node: Include Files155490 +Node: Loading Shared Libraries159180 +Node: Obsolete160608 +Node: Undocumented161300 +Node: Invoking Summary161597 +Node: Regexp164438 +Node: Regexp Usage165892 +Node: Escape Sequences167929 +Node: Regexp Operators174170 +Node: Regexp Operator Details174655 +Ref: Regexp Operator Details-Footnote-1182019 +Node: Interval Expressions182166 +Ref: Interval Expressions-Footnote-1183587 +Node: Bracket Expressions183685 +Ref: table-char-classes186161 +Node: Leftmost Longest189487 +Node: Computed Regexps190790 +Node: GNU Regexp Operators194217 +Node: Case-sensitivity197954 +Ref: Case-sensitivity-Footnote-1200820 +Ref: Case-sensitivity-Footnote-2201055 +Node: Regexp Summary201163 +Node: Reading Files202629 +Node: Records204898 +Node: awk split records205973 +Node: gawk split records210673 +Ref: gawk split records-Footnote-1215747 +Node: Fields215784 +Node: Nonconstant Fields218525 +Ref: Nonconstant Fields-Footnote-1220761 +Node: Changing Fields220965 +Node: Field Separators226996 +Node: Default Field Splitting229694 +Node: Regexp Field Splitting230812 +Node: Single Character Fields234489 +Node: Command Line Field Separator235549 +Node: Full Line Fields238767 +Ref: Full Line Fields-Footnote-1240289 +Ref: Full Line Fields-Footnote-2240335 +Node: Field Splitting Summary240436 +Node: Constant Size242510 +Node: Fixed width data243242 +Node: Skipping intervening246709 +Node: Allowing trailing data247507 +Node: Fields with fixed data248544 +Node: Splitting By Content250062 +Ref: Splitting By Content-Footnote-1253845 +Node: More CSV254008 +Node: Testing field creation255600 +Node: Multiple Line257225 +Node: Getline263502 +Node: Plain Getline265971 +Node: Getline/Variable268544 +Node: Getline/File269695 +Node: Getline/Variable/File271083 +Ref: Getline/Variable/File-Footnote-1272688 +Node: Getline/Pipe272776 +Node: Getline/Variable/Pipe275480 +Node: Getline/Coprocess276615 +Node: Getline/Variable/Coprocess277882 +Node: Getline Notes278624 +Node: Getline Summary281421 +Ref: table-getline-variants281845 +Node: Read Timeout282593 +Ref: Read Timeout-Footnote-1286499 +Node: Retrying Input286557 +Node: Command-line directories287756 +Node: Input Summary288662 +Node: Input Exercises291834 +Node: Printing292268 +Node: Print294102 +Node: Print Examples295559 +Node: Output Separators298339 +Node: OFMT300356 +Node: Printf301712 +Node: Basic Printf302497 +Node: Control Letters304071 +Node: Format Modifiers309233 +Node: Printf Examples315248 +Node: Redirection317734 +Node: Special FD324575 +Ref: Special FD-Footnote-1327743 +Node: Special Files327817 +Node: Other Inherited Files328434 +Node: Special Network329435 +Node: Special Caveats330295 +Node: Close Files And Pipes331244 +Ref: table-close-pipe-return-values338151 +Ref: Close Files And Pipes-Footnote-1338964 +Ref: Close Files And Pipes-Footnote-2339112 +Node: Nonfatal339264 +Node: Output Summary341602 +Node: Output Exercises342824 +Node: Expressions343503 +Node: Values344691 +Node: Constants345369 +Node: Scalar Constants346060 +Ref: Scalar Constants-Footnote-1348570 +Node: Nondecimal-numbers348820 +Node: Regexp Constants351821 +Node: Using Constant Regexps352347 +Node: Standard Regexp Constants352969 +Node: Strong Regexp Constants356157 +Node: Variables359169 +Node: Using Variables359826 +Node: Assignment Options361736 +Node: Conversion364207 +Node: Strings And Numbers364731 +Ref: Strings And Numbers-Footnote-1367794 +Node: Locale influences conversions367903 +Ref: table-locale-affects370661 +Node: All Operators371279 +Node: Arithmetic Ops371908 +Node: Concatenation374624 +Ref: Concatenation-Footnote-1377471 +Node: Assignment Ops377578 +Ref: table-assign-ops382569 +Node: Increment Ops383882 +Node: Truth Values and Conditions387342 +Node: Truth Values388416 +Node: Typing and Comparison389464 +Node: Variable Typing390284 +Ref: Variable Typing-Footnote-1396747 +Ref: Variable Typing-Footnote-2396819 +Node: Comparison Operators396896 +Ref: table-relational-ops397315 +Node: POSIX String Comparison400810 +Ref: POSIX String Comparison-Footnote-1402505 +Ref: POSIX String Comparison-Footnote-2402644 +Node: Boolean Ops402728 +Ref: Boolean Ops-Footnote-1407210 +Node: Conditional Exp407302 +Node: Function Calls409038 +Node: Precedence412915 +Node: Locales416574 +Node: Expressions Summary418206 +Node: Patterns and Actions420779 +Node: Pattern Overview421899 +Node: Regexp Patterns423576 +Node: Expression Patterns424118 +Node: Ranges427899 +Node: BEGIN/END431007 +Node: Using BEGIN/END431768 +Ref: Using BEGIN/END-Footnote-1434522 +Node: I/O And BEGIN/END434628 +Node: BEGINFILE/ENDFILE436941 +Node: Empty440172 +Node: Using Shell Variables440489 +Node: Action Overview442763 +Node: Statements445088 +Node: If Statement446936 +Node: While Statement448431 +Node: Do Statement450459 +Node: For Statement451607 +Node: Switch Statement454778 +Node: Break Statement457219 +Node: Continue Statement459311 +Node: Next Statement461138 +Node: Nextfile Statement463521 +Node: Exit Statement466210 +Node: Built-in Variables468613 +Node: User-modified469746 +Node: Auto-set477513 +Ref: Auto-set-Footnote-1494320 +Ref: Auto-set-Footnote-2494526 +Node: ARGC and ARGV494582 +Node: Pattern Action Summary498795 +Node: Arrays501225 +Node: Array Basics502554 +Node: Array Intro503398 +Ref: figure-array-elements505373 +Ref: Array Intro-Footnote-1508077 +Node: Reference to Elements508205 +Node: Assigning Elements510669 +Node: Array Example511160 +Node: Scanning an Array512919 +Node: Controlling Scanning515941 +Ref: Controlling Scanning-Footnote-1522397 +Node: Numeric Array Subscripts522713 +Node: Uninitialized Subscripts524897 +Node: Delete526516 +Ref: Delete-Footnote-1529268 +Node: Multidimensional529325 +Node: Multiscanning532420 +Node: Arrays of Arrays534011 +Node: Arrays Summary538779 +Node: Functions540872 +Node: Built-in541910 +Node: Calling Built-in543063 +Node: Boolean Functions545059 +Node: Numeric Functions545613 +Ref: Numeric Functions-Footnote-1549640 +Ref: Numeric Functions-Footnote-2550288 +Ref: Numeric Functions-Footnote-3550336 +Node: String Functions550608 +Ref: String Functions-Footnote-1574749 +Ref: String Functions-Footnote-2574877 +Ref: String Functions-Footnote-3575125 +Node: Gory Details575212 +Ref: table-sub-escapes577003 +Ref: table-sub-proposed578522 +Ref: table-posix-sub579885 +Ref: table-gensub-escapes581426 +Ref: Gory Details-Footnote-1582249 +Node: I/O Functions582403 +Ref: table-system-return-values588857 +Ref: I/O Functions-Footnote-1590937 +Ref: I/O Functions-Footnote-2591085 +Node: Time Functions591205 +Ref: Time Functions-Footnote-1601876 +Ref: Time Functions-Footnote-2601944 +Ref: Time Functions-Footnote-3602102 +Ref: Time Functions-Footnote-4602213 +Ref: Time Functions-Footnote-5602325 +Ref: Time Functions-Footnote-6602552 +Node: Bitwise Functions602818 +Ref: table-bitwise-ops603412 +Ref: Bitwise Functions-Footnote-1609475 +Ref: Bitwise Functions-Footnote-2609648 +Node: Type Functions609839 +Node: I18N Functions612793 +Node: User-defined614444 +Node: Definition Syntax615256 +Ref: Definition Syntax-Footnote-1620950 +Node: Function Example621021 +Ref: Function Example-Footnote-1623943 +Node: Function Calling623965 +Node: Calling A Function624553 +Node: Variable Scope625511 +Node: Pass By Value/Reference628505 +Node: Function Caveats631149 +Ref: Function Caveats-Footnote-1633196 +Node: Return Statement633316 +Node: Dynamic Typing636295 +Node: Indirect Calls637225 +Ref: Indirect Calls-Footnote-1647480 +Node: Functions Summary647608 +Node: Library Functions650313 +Ref: Library Functions-Footnote-1653920 +Ref: Library Functions-Footnote-2654063 +Node: Library Names654234 +Ref: Library Names-Footnote-1657901 +Ref: Library Names-Footnote-2658124 +Node: General Functions658210 +Node: Strtonum Function659313 +Node: Assert Function662335 +Node: Round Function665661 +Node: Cliff Random Function667201 +Node: Ordinal Functions668217 +Ref: Ordinal Functions-Footnote-1671280 +Ref: Ordinal Functions-Footnote-2671532 +Node: Join Function671742 +Ref: Join Function-Footnote-1673512 +Node: Getlocaltime Function673712 +Node: Readfile Function677454 +Node: Shell Quoting679431 +Node: Data File Management680832 +Node: Filetrans Function681464 +Node: Rewind Function685560 +Node: File Checking687469 +Ref: File Checking-Footnote-1688803 +Node: Empty Files689004 +Node: Ignoring Assigns690983 +Node: Getopt Function692533 +Ref: Getopt Function-Footnote-1707744 +Node: Passwd Functions707944 +Ref: Passwd Functions-Footnote-1716783 +Node: Group Functions716871 +Ref: Group Functions-Footnote-1724769 +Node: Walking Arrays724976 +Node: Library Functions Summary727984 +Node: Library Exercises729390 +Node: Sample Programs729855 +Node: Running Examples730625 +Node: Clones731353 +Node: Cut Program732577 +Node: Egrep Program742717 +Node: Id Program751718 +Node: Split Program761665 +Ref: Split Program-Footnote-1771555 +Node: Tee Program771728 +Node: Uniq Program774518 +Node: Wc Program782106 +Node: Bytes vs. Characters782493 +Node: Using extensions784041 +Node: wc program784795 +Node: Miscellaneous Programs789660 +Node: Dupword Program790873 +Node: Alarm Program792903 +Node: Translate Program797758 +Ref: Translate Program-Footnote-1802323 +Node: Labels Program802593 +Ref: Labels Program-Footnote-1805944 +Node: Word Sorting806028 +Node: History Sorting810100 +Node: Extract Program812325 +Node: Simple Sed820379 +Node: Igawk Program823453 +Ref: Igawk Program-Footnote-1837784 +Ref: Igawk Program-Footnote-2837986 +Ref: Igawk Program-Footnote-3838108 +Node: Anagram Program838223 +Node: Signature Program841285 +Node: Programs Summary842532 +Node: Programs Exercises843746 +Ref: Programs Exercises-Footnote-1847876 +Node: Advanced Features847962 +Node: Nondecimal Data850093 +Node: Boolean Typed Values851691 +Node: Array Sorting853572 +Node: Controlling Array Traversal854277 +Ref: Controlling Array Traversal-Footnote-1862645 +Node: Array Sorting Functions862763 +Ref: Array Sorting Functions-Footnote-1867854 +Node: Two-way I/O868050 +Ref: Two-way I/O-Footnote-1875771 +Ref: Two-way I/O-Footnote-2875958 +Node: TCP/IP Networking876040 +Node: Profiling879158 +Node: Extension Philosophy888467 +Node: Advanced Features Summary889946 +Node: Internationalization891961 +Node: I18N and L10N893635 +Node: Explaining gettext894322 +Ref: Explaining gettext-Footnote-1900214 +Ref: Explaining gettext-Footnote-2900399 +Node: Programmer i18n900564 +Ref: Programmer i18n-Footnote-1905513 +Node: Translator i18n905562 +Node: String Extraction906356 +Ref: String Extraction-Footnote-1907488 +Node: Printf Ordering907574 +Ref: Printf Ordering-Footnote-1910360 +Node: I18N Portability910424 +Ref: I18N Portability-Footnote-1912880 +Node: I18N Example912943 +Ref: I18N Example-Footnote-1916218 +Ref: I18N Example-Footnote-2916291 +Node: Gawk I18N916400 +Node: I18N Summary917049 +Node: Debugger918390 +Node: Debugging919390 +Node: Debugging Concepts919831 +Node: Debugging Terms921640 +Node: Awk Debugging924215 +Ref: Awk Debugging-Footnote-1925160 +Node: Sample Debugging Session925292 +Node: Debugger Invocation925826 +Node: Finding The Bug927212 +Node: List of Debugger Commands933686 +Node: Breakpoint Control935019 +Node: Debugger Execution Control938713 +Node: Viewing And Changing Data942075 +Node: Execution Stack945616 +Node: Debugger Info947253 +Node: Miscellaneous Debugger Commands951324 +Node: Readline Support956386 +Node: Limitations957282 +Node: Debugging Summary959836 +Node: Namespaces961115 +Node: Global Namespace962226 +Node: Qualified Names963624 +Node: Default Namespace964623 +Node: Changing The Namespace965364 +Node: Naming Rules966978 +Node: Internal Name Management968826 +Node: Namespace Example969868 +Node: Namespace And Features972430 +Node: Namespace Summary973865 +Node: Arbitrary Precision Arithmetic975342 +Node: Computer Arithmetic976829 +Ref: table-numeric-ranges980595 +Ref: table-floating-point-ranges981088 +Ref: Computer Arithmetic-Footnote-1981746 +Node: Math Definitions981803 +Ref: table-ieee-formats984779 +Node: MPFR features985346 +Node: FP Math Caution987064 +Ref: FP Math Caution-Footnote-1988136 +Node: Inexactness of computations988505 +Node: Inexact representation989536 +Node: Comparing FP Values990896 +Node: Errors accumulate992137 +Node: Strange values993593 +Ref: Strange values-Footnote-1996181 +Node: Getting Accuracy996286 +Node: Try To Round998996 +Node: Setting precision999895 +Ref: table-predefined-precision-strings1000592 +Node: Setting the rounding mode1002422 +Ref: table-gawk-rounding-modes1002796 +Ref: Setting the rounding mode-Footnote-11006727 +Node: Arbitrary Precision Integers1006906 +Ref: Arbitrary Precision Integers-Footnote-11010081 +Node: Checking for MPFR1010230 +Node: POSIX Floating Point Problems1011704 +Ref: POSIX Floating Point Problems-Footnote-11015989 +Node: Floating point summary1016027 +Node: Dynamic Extensions1018217 +Node: Extension Intro1019770 +Node: Plugin License1021036 +Node: Extension Mechanism Outline1021833 +Ref: figure-load-extension1022272 +Ref: figure-register-new-function1023837 +Ref: figure-call-new-function1024929 +Node: Extension API Description1026991 +Node: Extension API Functions Introduction1028704 +Ref: table-api-std-headers1030540 +Node: General Data Types1034789 +Ref: General Data Types-Footnote-11043495 +Node: Memory Allocation Functions1043794 +Ref: Memory Allocation Functions-Footnote-11048295 +Node: Constructor Functions1048394 +Node: API Ownership of MPFR and GMP Values1052047 +Node: Registration Functions1053360 +Node: Extension Functions1054060 +Node: Exit Callback Functions1059382 +Node: Extension Version String1060632 +Node: Input Parsers1061295 +Node: Output Wrappers1074016 +Node: Two-way processors1078528 +Node: Printing Messages1080793 +Ref: Printing Messages-Footnote-11081964 +Node: Updating ERRNO1082117 +Node: Requesting Values1082856 +Ref: table-value-types-returned1083593 +Node: Accessing Parameters1084701 +Node: Symbol Table Access1085938 +Node: Symbol table by name1086450 +Ref: Symbol table by name-Footnote-11089474 +Node: Symbol table by cookie1089602 +Ref: Symbol table by cookie-Footnote-11093787 +Node: Cached values1093851 +Ref: Cached values-Footnote-11097387 +Node: Array Manipulation1097540 +Ref: Array Manipulation-Footnote-11098631 +Node: Array Data Types1098668 +Ref: Array Data Types-Footnote-11101326 +Node: Array Functions1101418 +Node: Flattening Arrays1105916 +Node: Creating Arrays1112892 +Node: Redirection API1117659 +Node: Extension API Variables1120492 +Node: Extension Versioning1121203 +Ref: gawk-api-version1121632 +Node: Extension GMP/MPFR Versioning1123363 +Node: Extension API Informational Variables1124991 +Node: Extension API Boilerplate1126064 +Node: Changes from API V11130038 +Node: Finding Extensions1131610 +Node: Extension Example1132169 +Node: Internal File Description1132967 +Node: Internal File Ops1137047 +Ref: Internal File Ops-Footnote-11148397 +Node: Using Internal File Ops1148537 +Ref: Using Internal File Ops-Footnote-11150920 +Node: Extension Samples1151194 +Node: Extension Sample File Functions1152723 +Node: Extension Sample Fnmatch1160372 +Node: Extension Sample Fork1161859 +Node: Extension Sample Inplace1163077 +Node: Extension Sample Ord1166703 +Node: Extension Sample Readdir1167539 +Ref: table-readdir-file-types1168428 +Node: Extension Sample Revout1169495 +Node: Extension Sample Rev2way1170084 +Node: Extension Sample Read write array1170824 +Node: Extension Sample Readfile1172766 +Node: Extension Sample Time1173861 +Node: Extension Sample API Tests1175613 +Node: gawkextlib1176105 +Node: Extension summary1179023 +Node: Extension Exercises1182725 +Node: Language History1183967 +Node: V7/SVR3.11185623 +Node: SVR41187775 +Node: POSIX1189209 +Node: BTL1190590 +Node: POSIX/GNU1191319 +Node: Feature History1197097 +Node: Common Extensions1214272 +Node: Ranges and Locales1215555 +Ref: Ranges and Locales-Footnote-11220171 +Ref: Ranges and Locales-Footnote-21220198 +Ref: Ranges and Locales-Footnote-31220433 +Node: Contributors1220656 +Node: History summary1226653 +Node: Installation1228033 +Node: Gawk Distribution1228977 +Node: Getting1229461 +Node: Extracting1230424 +Node: Distribution contents1232062 +Node: Unix Installation1238542 +Node: Quick Installation1239224 +Node: Compiling with MPFR1241705 +Node: Shell Startup Files1242397 +Node: Additional Configuration Options1243486 +Node: Configuration Philosophy1245801 +Node: Non-Unix Installation1248170 +Node: PC Installation1248630 +Node: PC Binary Installation1249468 +Node: PC Compiling1249903 +Node: PC Using1251020 +Node: Cygwin1254573 +Node: MSYS1255797 +Node: VMS Installation1256399 +Node: VMS Compilation1257190 +Ref: VMS Compilation-Footnote-11258419 +Node: VMS Dynamic Extensions1258477 +Node: VMS Installation Details1260162 +Node: VMS Running1262415 +Node: VMS GNV1266694 +Node: VMS Old Gawk1267429 +Node: Bugs1267900 +Node: Bug address1268649 +Node: Usenet1271631 +Node: Performance bugs1272640 +Node: Maintainers1275497 +Node: Other Versions1276692 +Node: Installation summary1284557 +Node: Notes1285766 +Node: Compatibility Mode1286560 +Node: Additions1287342 +Node: Accessing The Source1288267 +Node: Adding Code1289704 +Node: New Ports1295923 +Node: Derived Files1300298 +Ref: Derived Files-Footnote-11305958 +Ref: Derived Files-Footnote-21305993 +Ref: Derived Files-Footnote-31306591 +Node: Future Extensions1306705 +Node: Implementation Limitations1307363 +Node: Extension Design1308573 +Node: Old Extension Problems1309717 +Ref: Old Extension Problems-Footnote-11311235 +Node: Extension New Mechanism Goals1311292 +Ref: Extension New Mechanism Goals-Footnote-11314656 +Node: Extension Other Design Decisions1314845 +Node: Extension Future Growth1316958 +Node: Notes summary1317564 +Node: Basic Concepts1318722 +Node: Basic High Level1319403 +Ref: figure-general-flow1319685 +Ref: figure-process-flow1320370 +Ref: Basic High Level-Footnote-11323671 +Node: Basic Data Typing1323856 +Node: Glossary1327184 +Node: Copying1359071 +Node: GNU Free Documentation License1396614 +Node: Index1421734 End Tag Table |