diff options
Diffstat (limited to 'doc/gawk.info')
-rw-r--r-- | doc/gawk.info | 1444 |
1 files changed, 787 insertions, 657 deletions
diff --git a/doc/gawk.info b/doc/gawk.info index 94ebf260..e6f85e82 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 @@ -6990,8 +6996,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 @@ -12811,6 +12817,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 @@ -12823,7 +12830,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 -------------------------------- @@ -12867,9 +12874,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 @@ -12895,7 +12917,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()' @@ -12993,7 +13015,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 @@ -13569,7 +13591,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. @@ -13715,7 +13737,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 @@ -13932,7 +13954,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 @@ -14249,7 +14271,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. @@ -14431,7 +14453,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 @@ -14455,6 +14477,9 @@ contexts. '"number"' X is a number. + '"number|bool"' + X is a Boolean typed value (*note Boolean Typed Values::). + '"string"' X is a string. @@ -14516,7 +14541,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 @@ -15195,7 +15220,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 @@ -20948,6 +20973,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. @@ -20957,7 +20983,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 =================================== @@ -21000,9 +21026,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 @@ -21021,7 +21091,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 @@ -21260,7 +21330,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 @@ -21405,7 +21475,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 @@ -21600,7 +21670,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': @@ -21680,7 +21750,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 @@ -21942,7 +22012,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 @@ -21978,7 +22048,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 @@ -24335,18 +24405,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. @@ -24405,11 +24467,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 @@ -24502,6 +24559,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 @@ -24566,7 +24624,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 .......................... @@ -24614,6 +24672,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 @@ -25560,7 +25676,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'. @@ -25573,6 +25690,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 @@ -25588,6 +25706,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. @@ -25898,6 +26017,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 @@ -26623,16 +26747,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 @@ -33425,8 +33550,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 @@ -35583,6 +35708,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) @@ -37174,6 +37300,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) @@ -38401,607 +38528,610 @@ Index Tag Table: Node: Top1200 -Node: Foreword345084 -Node: Foreword449526 -Node: Preface51058 -Ref: Preface-Footnote-153917 -Ref: Preface-Footnote-254026 -Ref: Preface-Footnote-354260 -Node: History54402 -Node: Names56754 -Ref: Names-Footnote-157858 -Node: This Manual58005 -Ref: This Manual-Footnote-164644 -Node: Conventions64744 -Node: Manual History67113 -Ref: Manual History-Footnote-170110 -Ref: Manual History-Footnote-270151 -Node: How To Contribute70225 -Node: Acknowledgments71151 -Node: Getting Started76088 -Node: Running gawk78527 -Node: One-shot79717 -Node: Read Terminal80980 -Node: Long82973 -Node: Executable Scripts84486 -Ref: Executable Scripts-Footnote-187119 -Node: Comments87222 -Node: Quoting89706 -Node: DOS Quoting95232 -Node: Sample Data Files97288 -Node: Very Simple99883 -Node: Two Rules105985 -Node: More Complex107870 -Node: Statements/Lines110202 -Ref: Statements/Lines-Footnote-1114686 -Node: Other Features114951 -Node: When115887 -Ref: When-Footnote-1117641 -Node: Intro Summary117706 -Node: Invoking Gawk118590 -Node: Command Line120104 -Node: Options120902 -Ref: Options-Footnote-1138816 -Ref: Options-Footnote-2139047 -Node: Other Arguments139072 -Node: Naming Standard Input143083 -Node: Environment Variables144293 -Node: AWKPATH Variable144851 -Ref: AWKPATH Variable-Footnote-1148263 -Ref: AWKPATH Variable-Footnote-2148297 -Node: AWKLIBPATH Variable148668 -Ref: AWKLIBPATH Variable-Footnote-1150365 -Node: Other Environment Variables150740 -Node: Exit Status154561 -Node: Include Files155238 -Node: Loading Shared Libraries158928 -Node: Obsolete160356 -Node: Undocumented161048 -Node: Invoking Summary161345 -Node: Regexp164186 -Node: Regexp Usage165640 -Node: Escape Sequences167677 -Node: Regexp Operators173918 -Node: Regexp Operator Details174403 -Ref: Regexp Operator Details-Footnote-1181767 -Node: Interval Expressions181914 -Ref: Interval Expressions-Footnote-1184114 -Node: Bracket Expressions184212 -Ref: table-char-classes186688 -Node: Leftmost Longest190014 -Node: Computed Regexps191317 -Node: GNU Regexp Operators194744 -Node: Case-sensitivity198481 -Ref: Case-sensitivity-Footnote-1201347 -Ref: Case-sensitivity-Footnote-2201582 -Node: Regexp Summary201690 -Node: Reading Files203156 -Node: Records205425 -Node: awk split records206500 -Node: gawk split records211200 -Ref: gawk split records-Footnote-1216274 -Node: Fields216311 -Node: Nonconstant Fields219052 -Ref: Nonconstant Fields-Footnote-1221288 -Node: Changing Fields221492 -Node: Field Separators227523 -Node: Default Field Splitting230221 -Node: Regexp Field Splitting231339 -Node: Single Character Fields235016 -Node: Command Line Field Separator236076 -Node: Full Line Fields239294 -Ref: Full Line Fields-Footnote-1240816 -Ref: Full Line Fields-Footnote-2240862 -Node: Field Splitting Summary240963 -Node: Constant Size243037 -Node: Fixed width data243769 -Node: Skipping intervening247236 -Node: Allowing trailing data248034 -Node: Fields with fixed data249071 -Node: Splitting By Content250589 -Ref: Splitting By Content-Footnote-1254372 -Node: More CSV254535 -Node: Testing field creation256127 -Node: Multiple Line257752 -Node: Getline264029 -Node: Plain Getline266498 -Node: Getline/Variable269071 -Node: Getline/File270222 -Node: Getline/Variable/File271610 -Ref: Getline/Variable/File-Footnote-1273215 -Node: Getline/Pipe273303 -Node: Getline/Variable/Pipe276007 -Node: Getline/Coprocess277142 -Node: Getline/Variable/Coprocess278409 -Node: Getline Notes279151 -Node: Getline Summary281948 -Ref: table-getline-variants282372 -Node: Read Timeout283120 -Ref: Read Timeout-Footnote-1287026 -Node: Retrying Input287084 -Node: Command-line directories288283 -Node: Input Summary289189 -Node: Input Exercises292361 -Node: Printing292795 -Node: Print294629 -Node: Print Examples296086 -Node: Output Separators298866 -Node: OFMT300883 -Node: Printf302239 -Node: Basic Printf303024 -Node: Control Letters304598 -Node: Format Modifiers309762 -Node: Printf Examples315777 -Node: Redirection318263 -Node: Special FD325104 -Ref: Special FD-Footnote-1328272 -Node: Special Files328346 -Node: Other Inherited Files328963 -Node: Special Network329964 -Node: Special Caveats330824 -Node: Close Files And Pipes331773 -Ref: table-close-pipe-return-values338680 -Ref: Close Files And Pipes-Footnote-1339493 -Ref: Close Files And Pipes-Footnote-2339641 -Node: Nonfatal339793 -Node: Output Summary342131 -Node: Output Exercises343353 -Node: Expressions344032 -Node: Values345220 -Node: Constants345898 -Node: Scalar Constants346589 -Ref: Scalar Constants-Footnote-1349099 -Node: Nondecimal-numbers349349 -Node: Regexp Constants352350 -Node: Using Constant Regexps352876 -Node: Standard Regexp Constants353498 -Node: Strong Regexp Constants356686 -Node: Variables360110 -Node: Using Variables360767 -Node: Assignment Options362677 -Node: Conversion365148 -Node: Strings And Numbers365672 -Ref: Strings And Numbers-Footnote-1368735 -Node: Locale influences conversions368844 -Ref: table-locale-affects371602 -Node: All Operators372220 -Node: Arithmetic Ops372849 -Node: Concatenation375565 -Ref: Concatenation-Footnote-1378412 -Node: Assignment Ops378519 -Ref: table-assign-ops383510 -Node: Increment Ops384823 -Node: Truth Values and Conditions388283 -Node: Truth Values389357 -Node: Typing and Comparison390405 -Node: Variable Typing391225 -Ref: Variable Typing-Footnote-1397688 -Ref: Variable Typing-Footnote-2397760 -Node: Comparison Operators397837 -Ref: table-relational-ops398256 -Node: POSIX String Comparison401751 -Ref: POSIX String Comparison-Footnote-1403446 -Ref: POSIX String Comparison-Footnote-2403585 -Node: Boolean Ops403669 -Ref: Boolean Ops-Footnote-1408151 -Node: Conditional Exp408243 -Node: Function Calls409979 -Node: Precedence413856 -Node: Locales417515 -Node: Expressions Summary419147 -Node: Patterns and Actions421720 -Node: Pattern Overview422840 -Node: Regexp Patterns424517 -Node: Expression Patterns425059 -Node: Ranges428840 -Node: BEGIN/END431948 -Node: Using BEGIN/END432709 -Ref: Using BEGIN/END-Footnote-1435463 -Node: I/O And BEGIN/END435569 -Node: BEGINFILE/ENDFILE437882 -Node: Empty441113 -Node: Using Shell Variables441430 -Node: Action Overview443704 -Node: Statements446029 -Node: If Statement447877 -Node: While Statement449372 -Node: Do Statement451400 -Node: For Statement452548 -Node: Switch Statement455719 -Node: Break Statement458160 -Node: Continue Statement460252 -Node: Next Statement462079 -Node: Nextfile Statement464462 -Node: Exit Statement467151 -Node: Built-in Variables469554 -Node: User-modified470687 -Node: Auto-set478454 -Ref: Auto-set-Footnote-1495261 -Ref: Auto-set-Footnote-2495467 -Node: ARGC and ARGV495523 -Node: Pattern Action Summary499736 -Node: Arrays502166 -Node: Array Basics503495 -Node: Array Intro504339 -Ref: figure-array-elements506314 -Ref: Array Intro-Footnote-1509018 -Node: Reference to Elements509146 -Node: Assigning Elements511610 -Node: Array Example512101 -Node: Scanning an Array513860 -Node: Controlling Scanning516882 -Ref: Controlling Scanning-Footnote-1523338 -Node: Numeric Array Subscripts523654 -Node: Uninitialized Subscripts525838 -Node: Delete527457 -Ref: Delete-Footnote-1530209 -Node: Multidimensional530266 -Node: Multiscanning533361 -Node: Arrays of Arrays534952 -Node: Arrays Summary539720 -Node: Functions541813 -Node: Built-in542851 -Node: Calling Built-in543932 -Node: Numeric Functions545928 -Ref: Numeric Functions-Footnote-1549956 -Ref: Numeric Functions-Footnote-2550604 -Ref: Numeric Functions-Footnote-3550652 -Node: String Functions550924 -Ref: String Functions-Footnote-1575439 -Ref: String Functions-Footnote-2575567 -Ref: String Functions-Footnote-3575815 -Node: Gory Details575902 -Ref: table-sub-escapes577693 -Ref: table-sub-proposed579212 -Ref: table-posix-sub580575 -Ref: table-gensub-escapes582116 -Ref: Gory Details-Footnote-1582939 -Node: I/O Functions583093 -Ref: table-system-return-values589547 -Ref: I/O Functions-Footnote-1591627 -Ref: I/O Functions-Footnote-2591775 -Node: Time Functions591895 -Ref: Time Functions-Footnote-1602566 -Ref: Time Functions-Footnote-2602634 -Ref: Time Functions-Footnote-3602792 -Ref: Time Functions-Footnote-4602903 -Ref: Time Functions-Footnote-5603015 -Ref: Time Functions-Footnote-6603242 -Node: Bitwise Functions603508 -Ref: table-bitwise-ops604102 -Ref: Bitwise Functions-Footnote-1610165 -Ref: Bitwise Functions-Footnote-2610338 -Node: Type Functions610529 -Node: I18N Functions613392 -Node: User-defined615043 -Node: Definition Syntax615855 -Ref: Definition Syntax-Footnote-1621549 -Node: Function Example621620 -Ref: Function Example-Footnote-1624542 -Node: Function Calling624564 -Node: Calling A Function625152 -Node: Variable Scope626110 -Node: Pass By Value/Reference629104 -Node: Function Caveats631748 -Ref: Function Caveats-Footnote-1633795 -Node: Return Statement633915 -Node: Dynamic Typing636894 -Node: Indirect Calls637824 -Ref: Indirect Calls-Footnote-1648076 -Node: Functions Summary648204 -Node: Library Functions650909 -Ref: Library Functions-Footnote-1654516 -Ref: Library Functions-Footnote-2654659 -Node: Library Names654830 -Ref: Library Names-Footnote-1658497 -Ref: Library Names-Footnote-2658720 -Node: General Functions658806 -Node: Strtonum Function659988 -Node: Assert Function663010 -Node: Round Function666336 -Node: Cliff Random Function667876 -Node: Ordinal Functions668892 -Ref: Ordinal Functions-Footnote-1671955 -Ref: Ordinal Functions-Footnote-2672207 -Node: Join Function672417 -Ref: Join Function-Footnote-1674187 -Node: Getlocaltime Function674387 -Node: Readfile Function678129 -Node: Shell Quoting680106 -Node: Isnumeric Function681534 -Node: Data File Management682922 -Node: Filetrans Function683554 -Node: Rewind Function687650 -Node: File Checking689559 -Ref: File Checking-Footnote-1690893 -Node: Empty Files691094 -Node: Ignoring Assigns693073 -Node: Getopt Function694623 -Ref: Getopt Function-Footnote-1709846 -Node: Passwd Functions710046 -Ref: Passwd Functions-Footnote-1718885 -Node: Group Functions718973 -Ref: Group Functions-Footnote-1726871 -Node: Walking Arrays727078 -Node: Library Functions Summary730086 -Node: Library Exercises731492 -Node: Sample Programs731957 -Node: Running Examples732727 -Node: Clones733455 -Node: Cut Program734679 -Node: Egrep Program744819 -Node: Id Program753820 -Node: Split Program763767 -Ref: Split Program-Footnote-1773660 -Node: Tee Program773833 -Node: Uniq Program776623 -Node: Wc Program784211 -Node: Bytes vs. Characters784598 -Node: Using extensions786146 -Node: wc program786900 -Node: Miscellaneous Programs791765 -Node: Dupword Program792978 -Node: Alarm Program795008 -Node: Translate Program799863 -Ref: Translate Program-Footnote-1804428 -Node: Labels Program804698 -Ref: Labels Program-Footnote-1808049 -Node: Word Sorting808133 -Node: History Sorting812205 -Node: Extract Program814430 -Node: Simple Sed822484 -Node: Igawk Program825558 -Ref: Igawk Program-Footnote-1839889 -Ref: Igawk Program-Footnote-2840091 -Ref: Igawk Program-Footnote-3840213 -Node: Anagram Program840328 -Node: Signature Program843390 -Node: Programs Summary844637 -Node: Programs Exercises845851 -Ref: Programs Exercises-Footnote-1849981 -Node: Advanced Features850067 -Node: Nondecimal Data852134 -Node: Array Sorting853725 -Node: Controlling Array Traversal854425 -Ref: Controlling Array Traversal-Footnote-1862793 -Node: Array Sorting Functions862911 -Ref: Array Sorting Functions-Footnote-1868285 -Node: Two-way I/O868481 -Ref: Two-way I/O-Footnote-1876207 -Ref: Two-way I/O-Footnote-2876394 -Node: TCP/IP Networking876476 -Node: Profiling879594 -Node: Extension Philosophy888903 -Node: Advanced Features Summary890382 -Node: Internationalization892397 -Node: I18N and L10N894071 -Node: Explaining gettext894758 -Ref: Explaining gettext-Footnote-1900650 -Ref: Explaining gettext-Footnote-2900835 -Node: Programmer i18n901000 -Ref: Programmer i18n-Footnote-1905949 -Node: Translator i18n905998 -Node: String Extraction906792 -Ref: String Extraction-Footnote-1907924 -Node: Printf Ordering908010 -Ref: Printf Ordering-Footnote-1910796 -Node: I18N Portability910860 -Ref: I18N Portability-Footnote-1913316 -Node: I18N Example913379 -Ref: I18N Example-Footnote-1916654 -Ref: I18N Example-Footnote-2916727 -Node: Gawk I18N916836 -Node: I18N Summary917485 -Node: Debugger918826 -Node: Debugging919826 -Node: Debugging Concepts920267 -Node: Debugging Terms922076 -Node: Awk Debugging924651 -Ref: Awk Debugging-Footnote-1925596 -Node: Sample Debugging Session925728 -Node: Debugger Invocation926262 -Node: Finding The Bug927648 -Node: List of Debugger Commands934122 -Node: Breakpoint Control935455 -Node: Debugger Execution Control939149 -Node: Viewing And Changing Data942511 -Node: Execution Stack946052 -Node: Debugger Info947689 -Node: Miscellaneous Debugger Commands951760 -Node: Readline Support956822 -Node: Limitations957718 -Node: Debugging Summary960272 -Node: Namespaces961551 -Node: Global Namespace962662 -Node: Qualified Names964060 -Node: Default Namespace965059 -Node: Changing The Namespace965800 -Node: Naming Rules967414 -Node: Internal Name Management969262 -Node: Namespace Example970304 -Node: Namespace And Features972866 -Node: Namespace Summary974301 -Node: Arbitrary Precision Arithmetic975778 -Node: Computer Arithmetic977265 -Ref: table-numeric-ranges981031 -Ref: table-floating-point-ranges981524 -Ref: Computer Arithmetic-Footnote-1982182 -Node: Math Definitions982239 -Ref: table-ieee-formats985555 -Ref: Math Definitions-Footnote-1986158 -Node: MPFR features986263 -Node: FP Math Caution987981 -Ref: FP Math Caution-Footnote-1989053 -Node: Inexactness of computations989422 -Node: Inexact representation990382 -Node: Comparing FP Values991742 -Node: Errors accumulate992983 -Node: Getting Accuracy994416 -Node: Try To Round997126 -Node: Setting precision998025 -Ref: table-predefined-precision-strings998722 -Node: Setting the rounding mode1000552 -Ref: table-gawk-rounding-modes1000926 -Ref: Setting the rounding mode-Footnote-11004857 -Node: Arbitrary Precision Integers1005036 -Ref: Arbitrary Precision Integers-Footnote-11008211 -Node: Checking for MPFR1008360 -Node: POSIX Floating Point Problems1009834 -Ref: POSIX Floating Point Problems-Footnote-11014119 -Node: Floating point summary1014157 -Node: Dynamic Extensions1016347 -Node: Extension Intro1017900 -Node: Plugin License1019166 -Node: Extension Mechanism Outline1019963 -Ref: figure-load-extension1020402 -Ref: figure-register-new-function1021967 -Ref: figure-call-new-function1023059 -Node: Extension API Description1025121 -Node: Extension API Functions Introduction1026834 -Ref: table-api-std-headers1028670 -Node: General Data Types1032919 -Ref: General Data Types-Footnote-11041549 -Node: Memory Allocation Functions1041848 -Ref: Memory Allocation Functions-Footnote-11046349 -Node: Constructor Functions1046448 -Node: API Ownership of MPFR and GMP Values1049914 -Node: Registration Functions1051227 -Node: Extension Functions1051927 -Node: Exit Callback Functions1057249 -Node: Extension Version String1058499 -Node: Input Parsers1059162 -Node: Output Wrappers1071883 -Node: Two-way processors1076395 -Node: Printing Messages1078660 -Ref: Printing Messages-Footnote-11079831 -Node: Updating ERRNO1079984 -Node: Requesting Values1080723 -Ref: table-value-types-returned1081460 -Node: Accessing Parameters1082396 -Node: Symbol Table Access1083633 -Node: Symbol table by name1084145 -Ref: Symbol table by name-Footnote-11087169 -Node: Symbol table by cookie1087297 -Ref: Symbol table by cookie-Footnote-11091482 -Node: Cached values1091546 -Ref: Cached values-Footnote-11095082 -Node: Array Manipulation1095235 -Ref: Array Manipulation-Footnote-11096326 -Node: Array Data Types1096363 -Ref: Array Data Types-Footnote-11099021 -Node: Array Functions1099113 -Node: Flattening Arrays1103611 -Node: Creating Arrays1110587 -Node: Redirection API1115354 -Node: Extension API Variables1118187 -Node: Extension Versioning1118898 -Ref: gawk-api-version1119327 -Node: Extension GMP/MPFR Versioning1121058 -Node: Extension API Informational Variables1122686 -Node: Extension API Boilerplate1123759 -Node: Changes from API V11127733 -Node: Finding Extensions1129305 -Node: Extension Example1129864 -Node: Internal File Description1130662 -Node: Internal File Ops1134742 -Ref: Internal File Ops-Footnote-11146092 -Node: Using Internal File Ops1146232 -Ref: Using Internal File Ops-Footnote-11148615 -Node: Extension Samples1148889 -Node: Extension Sample File Functions1150418 -Node: Extension Sample Fnmatch1158067 -Node: Extension Sample Fork1159554 -Node: Extension Sample Inplace1160772 -Node: Extension Sample Ord1164398 -Node: Extension Sample Readdir1165234 -Ref: table-readdir-file-types1166123 -Node: Extension Sample Revout1167190 -Node: Extension Sample Rev2way1167779 -Node: Extension Sample Read write array1168519 -Node: Extension Sample Readfile1170461 -Node: Extension Sample Time1171556 -Node: Extension Sample API Tests1173308 -Node: gawkextlib1173800 -Node: Extension summary1176718 -Node: Extension Exercises1180420 -Node: Language History1181662 -Node: V7/SVR3.11183318 -Node: SVR41185470 -Node: POSIX1186904 -Node: BTL1188285 -Node: POSIX/GNU1189014 -Node: Feature History1194792 -Node: Common Extensions1211967 -Node: Ranges and Locales1213250 -Ref: Ranges and Locales-Footnote-11217866 -Ref: Ranges and Locales-Footnote-21217893 -Ref: Ranges and Locales-Footnote-31218128 -Node: Contributors1218351 -Node: History summary1224348 -Node: Installation1225728 -Node: Gawk Distribution1226672 -Node: Getting1227156 -Node: Extracting1228119 -Node: Distribution contents1229757 -Node: Unix Installation1236237 -Node: Quick Installation1236919 -Node: Compiling with MPFR1239400 -Node: Shell Startup Files1240092 -Node: Additional Configuration Options1241181 -Node: Configuration Philosophy1243496 -Node: Non-Unix Installation1245865 -Node: PC Installation1246325 -Node: PC Binary Installation1247163 -Node: PC Compiling1247598 -Node: PC Using1248715 -Node: Cygwin1252268 -Node: MSYS1253492 -Node: VMS Installation1254094 -Node: VMS Compilation1254813 -Ref: VMS Compilation-Footnote-11256042 -Node: VMS Dynamic Extensions1256100 -Node: VMS Installation Details1257785 -Node: VMS Running1260047 -Node: VMS GNV1264326 -Node: Bugs1265040 -Node: Bug definition1265920 -Node: Bug address1268424 -Node: Usenet1271812 -Node: Performance bugs1272821 -Node: Asking for help1275742 -Node: Maintainers1277704 -Node: Other Versions1278898 -Node: Installation summary1286750 -Node: Notes1288114 -Node: Compatibility Mode1288908 -Node: Additions1289690 -Node: Accessing The Source1290615 -Node: Adding Code1292052 -Node: New Ports1298271 -Node: Derived Files1302646 -Ref: Derived Files-Footnote-11308306 -Ref: Derived Files-Footnote-21308341 -Ref: Derived Files-Footnote-31308939 -Node: Future Extensions1309053 -Node: Implementation Limitations1309711 -Node: Extension Design1310921 -Node: Old Extension Problems1312065 -Ref: Old Extension Problems-Footnote-11313583 -Node: Extension New Mechanism Goals1313640 -Ref: Extension New Mechanism Goals-Footnote-11317004 -Node: Extension Other Design Decisions1317193 -Node: Extension Future Growth1319306 -Node: Notes summary1319912 -Node: Basic Concepts1321070 -Node: Basic High Level1321751 -Ref: figure-general-flow1322033 -Ref: figure-process-flow1322718 -Ref: Basic High Level-Footnote-11326019 -Node: Basic Data Typing1326204 -Node: Glossary1329532 -Node: Copying1361417 -Node: GNU Free Documentation License1398960 -Node: Index1424080 +Node: Foreword345355 +Node: Foreword449797 +Node: Preface51329 +Ref: Preface-Footnote-154188 +Ref: Preface-Footnote-254297 +Ref: Preface-Footnote-354531 +Node: History54673 +Node: Names57025 +Ref: Names-Footnote-158129 +Node: This Manual58276 +Ref: This Manual-Footnote-164915 +Node: Conventions65015 +Node: Manual History67384 +Ref: Manual History-Footnote-170381 +Ref: Manual History-Footnote-270422 +Node: How To Contribute70496 +Node: Acknowledgments71422 +Node: Getting Started76359 +Node: Running gawk78798 +Node: One-shot79988 +Node: Read Terminal81251 +Node: Long83244 +Node: Executable Scripts84757 +Ref: Executable Scripts-Footnote-187390 +Node: Comments87493 +Node: Quoting89977 +Node: DOS Quoting95503 +Node: Sample Data Files97559 +Node: Very Simple100154 +Node: Two Rules106256 +Node: More Complex108141 +Node: Statements/Lines110473 +Ref: Statements/Lines-Footnote-1114957 +Node: Other Features115222 +Node: When116158 +Ref: When-Footnote-1117912 +Node: Intro Summary117977 +Node: Invoking Gawk118861 +Node: Command Line120375 +Node: Options121173 +Ref: Options-Footnote-1139087 +Ref: Options-Footnote-2139318 +Node: Other Arguments139343 +Node: Naming Standard Input143354 +Node: Environment Variables144564 +Node: AWKPATH Variable145122 +Ref: AWKPATH Variable-Footnote-1148534 +Ref: AWKPATH Variable-Footnote-2148568 +Node: AWKLIBPATH Variable148939 +Ref: AWKLIBPATH Variable-Footnote-1150636 +Node: Other Environment Variables151011 +Node: Exit Status154963 +Node: Include Files155640 +Node: Loading Shared Libraries159330 +Node: Obsolete160758 +Node: Undocumented161450 +Node: Invoking Summary161747 +Node: Regexp164588 +Node: Regexp Usage166042 +Node: Escape Sequences168079 +Node: Regexp Operators174320 +Node: Regexp Operator Details174805 +Ref: Regexp Operator Details-Footnote-1182169 +Node: Interval Expressions182316 +Ref: Interval Expressions-Footnote-1184516 +Node: Bracket Expressions184614 +Ref: table-char-classes187090 +Node: Leftmost Longest190416 +Node: Computed Regexps191719 +Node: GNU Regexp Operators195146 +Node: Case-sensitivity198883 +Ref: Case-sensitivity-Footnote-1201749 +Ref: Case-sensitivity-Footnote-2201984 +Node: Regexp Summary202092 +Node: Reading Files203558 +Node: Records205827 +Node: awk split records206902 +Node: gawk split records211602 +Ref: gawk split records-Footnote-1216676 +Node: Fields216713 +Node: Nonconstant Fields219454 +Ref: Nonconstant Fields-Footnote-1221690 +Node: Changing Fields221894 +Node: Field Separators227925 +Node: Default Field Splitting230623 +Node: Regexp Field Splitting231741 +Node: Single Character Fields235418 +Node: Command Line Field Separator236478 +Node: Full Line Fields239696 +Ref: Full Line Fields-Footnote-1241218 +Ref: Full Line Fields-Footnote-2241264 +Node: Field Splitting Summary241365 +Node: Constant Size243439 +Node: Fixed width data244171 +Node: Skipping intervening247638 +Node: Allowing trailing data248436 +Node: Fields with fixed data249473 +Node: Splitting By Content250991 +Ref: Splitting By Content-Footnote-1254774 +Node: More CSV254937 +Node: Testing field creation256529 +Node: Multiple Line258154 +Node: Getline264431 +Node: Plain Getline266900 +Node: Getline/Variable269473 +Node: Getline/File270624 +Node: Getline/Variable/File272012 +Ref: Getline/Variable/File-Footnote-1273617 +Node: Getline/Pipe273705 +Node: Getline/Variable/Pipe276409 +Node: Getline/Coprocess277544 +Node: Getline/Variable/Coprocess278811 +Node: Getline Notes279553 +Node: Getline Summary282350 +Ref: table-getline-variants282774 +Node: Read Timeout283522 +Ref: Read Timeout-Footnote-1287428 +Node: Retrying Input287486 +Node: Command-line directories288685 +Node: Input Summary289591 +Node: Input Exercises292763 +Node: Printing293197 +Node: Print295031 +Node: Print Examples296488 +Node: Output Separators299268 +Node: OFMT301285 +Node: Printf302641 +Node: Basic Printf303426 +Node: Control Letters305000 +Node: Format Modifiers310162 +Node: Printf Examples316177 +Node: Redirection318663 +Node: Special FD325504 +Ref: Special FD-Footnote-1328672 +Node: Special Files328746 +Node: Other Inherited Files329363 +Node: Special Network330364 +Node: Special Caveats331224 +Node: Close Files And Pipes332173 +Ref: table-close-pipe-return-values339080 +Ref: Close Files And Pipes-Footnote-1339893 +Ref: Close Files And Pipes-Footnote-2340041 +Node: Nonfatal340193 +Node: Output Summary342531 +Node: Output Exercises343753 +Node: Expressions344432 +Node: Values345620 +Node: Constants346298 +Node: Scalar Constants346989 +Ref: Scalar Constants-Footnote-1349499 +Node: Nondecimal-numbers349749 +Node: Regexp Constants352750 +Node: Using Constant Regexps353276 +Node: Standard Regexp Constants353898 +Node: Strong Regexp Constants357086 +Node: Variables360510 +Node: Using Variables361167 +Node: Assignment Options363077 +Node: Conversion365548 +Node: Strings And Numbers366072 +Ref: Strings And Numbers-Footnote-1369135 +Node: Locale influences conversions369244 +Ref: table-locale-affects372002 +Node: All Operators372620 +Node: Arithmetic Ops373249 +Node: Concatenation375965 +Ref: Concatenation-Footnote-1378812 +Node: Assignment Ops378919 +Ref: table-assign-ops383910 +Node: Increment Ops385223 +Node: Truth Values and Conditions388683 +Node: Truth Values389757 +Node: Typing and Comparison390805 +Node: Variable Typing391625 +Ref: Variable Typing-Footnote-1398088 +Ref: Variable Typing-Footnote-2398160 +Node: Comparison Operators398237 +Ref: table-relational-ops398656 +Node: POSIX String Comparison402151 +Ref: POSIX String Comparison-Footnote-1403846 +Ref: POSIX String Comparison-Footnote-2403985 +Node: Boolean Ops404069 +Ref: Boolean Ops-Footnote-1408551 +Node: Conditional Exp408643 +Node: Function Calls410379 +Node: Precedence414256 +Node: Locales417915 +Node: Expressions Summary419547 +Node: Patterns and Actions422120 +Node: Pattern Overview423240 +Node: Regexp Patterns424917 +Node: Expression Patterns425459 +Node: Ranges429240 +Node: BEGIN/END432348 +Node: Using BEGIN/END433109 +Ref: Using BEGIN/END-Footnote-1435863 +Node: I/O And BEGIN/END435969 +Node: BEGINFILE/ENDFILE438282 +Node: Empty441513 +Node: Using Shell Variables441830 +Node: Action Overview444104 +Node: Statements446429 +Node: If Statement448277 +Node: While Statement449772 +Node: Do Statement451800 +Node: For Statement452948 +Node: Switch Statement456119 +Node: Break Statement458560 +Node: Continue Statement460652 +Node: Next Statement462479 +Node: Nextfile Statement464862 +Node: Exit Statement467551 +Node: Built-in Variables469954 +Node: User-modified471087 +Node: Auto-set478854 +Ref: Auto-set-Footnote-1495661 +Ref: Auto-set-Footnote-2495867 +Node: ARGC and ARGV495923 +Node: Pattern Action Summary500136 +Node: Arrays502566 +Node: Array Basics503895 +Node: Array Intro504739 +Ref: figure-array-elements506714 +Ref: Array Intro-Footnote-1509418 +Node: Reference to Elements509546 +Node: Assigning Elements512010 +Node: Array Example512501 +Node: Scanning an Array514260 +Node: Controlling Scanning517282 +Ref: Controlling Scanning-Footnote-1523738 +Node: Numeric Array Subscripts524054 +Node: Uninitialized Subscripts526238 +Node: Delete527857 +Ref: Delete-Footnote-1530609 +Node: Multidimensional530666 +Node: Multiscanning533761 +Node: Arrays of Arrays535352 +Node: Arrays Summary540120 +Node: Functions542213 +Node: Built-in543251 +Node: Calling Built-in544404 +Node: Boolean Functions546400 +Node: Numeric Functions546954 +Ref: Numeric Functions-Footnote-1550981 +Ref: Numeric Functions-Footnote-2551629 +Ref: Numeric Functions-Footnote-3551677 +Node: String Functions551949 +Ref: String Functions-Footnote-1576464 +Ref: String Functions-Footnote-2576592 +Ref: String Functions-Footnote-3576840 +Node: Gory Details576927 +Ref: table-sub-escapes578718 +Ref: table-sub-proposed580237 +Ref: table-posix-sub581600 +Ref: table-gensub-escapes583141 +Ref: Gory Details-Footnote-1583964 +Node: I/O Functions584118 +Ref: table-system-return-values590572 +Ref: I/O Functions-Footnote-1592652 +Ref: I/O Functions-Footnote-2592800 +Node: Time Functions592920 +Ref: Time Functions-Footnote-1603591 +Ref: Time Functions-Footnote-2603659 +Ref: Time Functions-Footnote-3603817 +Ref: Time Functions-Footnote-4603928 +Ref: Time Functions-Footnote-5604040 +Ref: Time Functions-Footnote-6604267 +Node: Bitwise Functions604533 +Ref: table-bitwise-ops605127 +Ref: Bitwise Functions-Footnote-1611190 +Ref: Bitwise Functions-Footnote-2611363 +Node: Type Functions611554 +Node: I18N Functions614508 +Node: User-defined616159 +Node: Definition Syntax616971 +Ref: Definition Syntax-Footnote-1622665 +Node: Function Example622736 +Ref: Function Example-Footnote-1625658 +Node: Function Calling625680 +Node: Calling A Function626268 +Node: Variable Scope627226 +Node: Pass By Value/Reference630220 +Node: Function Caveats632864 +Ref: Function Caveats-Footnote-1634911 +Node: Return Statement635031 +Node: Dynamic Typing638010 +Node: Indirect Calls638940 +Ref: Indirect Calls-Footnote-1649195 +Node: Functions Summary649323 +Node: Library Functions652028 +Ref: Library Functions-Footnote-1655635 +Ref: Library Functions-Footnote-2655778 +Node: Library Names655949 +Ref: Library Names-Footnote-1659616 +Ref: Library Names-Footnote-2659839 +Node: General Functions659925 +Node: Strtonum Function661107 +Node: Assert Function664129 +Node: Round Function667455 +Node: Cliff Random Function668995 +Node: Ordinal Functions670011 +Ref: Ordinal Functions-Footnote-1673074 +Ref: Ordinal Functions-Footnote-2673326 +Node: Join Function673536 +Ref: Join Function-Footnote-1675306 +Node: Getlocaltime Function675506 +Node: Readfile Function679248 +Node: Shell Quoting681225 +Node: Isnumeric Function682653 +Node: Data File Management684041 +Node: Filetrans Function684673 +Node: Rewind Function688769 +Node: File Checking690678 +Ref: File Checking-Footnote-1692012 +Node: Empty Files692213 +Node: Ignoring Assigns694192 +Node: Getopt Function695742 +Ref: Getopt Function-Footnote-1710965 +Node: Passwd Functions711165 +Ref: Passwd Functions-Footnote-1720004 +Node: Group Functions720092 +Ref: Group Functions-Footnote-1727990 +Node: Walking Arrays728197 +Node: Library Functions Summary731205 +Node: Library Exercises732611 +Node: Sample Programs733076 +Node: Running Examples733846 +Node: Clones734574 +Node: Cut Program735798 +Node: Egrep Program745938 +Node: Id Program754939 +Node: Split Program764886 +Ref: Split Program-Footnote-1774779 +Node: Tee Program774952 +Node: Uniq Program777742 +Node: Wc Program785330 +Node: Bytes vs. Characters785717 +Node: Using extensions787265 +Node: wc program788019 +Node: Miscellaneous Programs792884 +Node: Dupword Program794097 +Node: Alarm Program796127 +Node: Translate Program800982 +Ref: Translate Program-Footnote-1805547 +Node: Labels Program805817 +Ref: Labels Program-Footnote-1809168 +Node: Word Sorting809252 +Node: History Sorting813324 +Node: Extract Program815549 +Node: Simple Sed823603 +Node: Igawk Program826677 +Ref: Igawk Program-Footnote-1841008 +Ref: Igawk Program-Footnote-2841210 +Ref: Igawk Program-Footnote-3841332 +Node: Anagram Program841447 +Node: Signature Program844509 +Node: Programs Summary845756 +Node: Programs Exercises846970 +Ref: Programs Exercises-Footnote-1851100 +Node: Advanced Features851186 +Node: Nondecimal Data853317 +Node: Boolean Typed Values854915 +Node: Array Sorting856796 +Node: Controlling Array Traversal857501 +Ref: Controlling Array Traversal-Footnote-1865869 +Node: Array Sorting Functions865987 +Ref: Array Sorting Functions-Footnote-1871361 +Node: Two-way I/O871557 +Ref: Two-way I/O-Footnote-1879283 +Ref: Two-way I/O-Footnote-2879470 +Node: TCP/IP Networking879552 +Node: Profiling882670 +Node: Extension Philosophy891979 +Node: Advanced Features Summary893458 +Node: Internationalization895473 +Node: I18N and L10N897147 +Node: Explaining gettext897834 +Ref: Explaining gettext-Footnote-1903726 +Ref: Explaining gettext-Footnote-2903911 +Node: Programmer i18n904076 +Ref: Programmer i18n-Footnote-1909025 +Node: Translator i18n909074 +Node: String Extraction909868 +Ref: String Extraction-Footnote-1911000 +Node: Printf Ordering911086 +Ref: Printf Ordering-Footnote-1913872 +Node: I18N Portability913936 +Ref: I18N Portability-Footnote-1916392 +Node: I18N Example916455 +Ref: I18N Example-Footnote-1919730 +Ref: I18N Example-Footnote-2919803 +Node: Gawk I18N919912 +Node: I18N Summary920561 +Node: Debugger921902 +Node: Debugging922902 +Node: Debugging Concepts923343 +Node: Debugging Terms925152 +Node: Awk Debugging927727 +Ref: Awk Debugging-Footnote-1928672 +Node: Sample Debugging Session928804 +Node: Debugger Invocation929338 +Node: Finding The Bug930724 +Node: List of Debugger Commands937198 +Node: Breakpoint Control938531 +Node: Debugger Execution Control942225 +Node: Viewing And Changing Data945587 +Node: Execution Stack949128 +Node: Debugger Info950765 +Node: Miscellaneous Debugger Commands954836 +Node: Readline Support959898 +Node: Limitations960794 +Node: Debugging Summary963348 +Node: Namespaces964627 +Node: Global Namespace965738 +Node: Qualified Names967136 +Node: Default Namespace968135 +Node: Changing The Namespace968876 +Node: Naming Rules970490 +Node: Internal Name Management972338 +Node: Namespace Example973380 +Node: Namespace And Features975942 +Node: Namespace Summary977377 +Node: Arbitrary Precision Arithmetic978854 +Node: Computer Arithmetic980341 +Ref: table-numeric-ranges984107 +Ref: table-floating-point-ranges984600 +Ref: Computer Arithmetic-Footnote-1985258 +Node: Math Definitions985315 +Ref: table-ieee-formats988291 +Node: MPFR features988858 +Node: FP Math Caution990576 +Ref: FP Math Caution-Footnote-1991648 +Node: Inexactness of computations992017 +Node: Inexact representation993048 +Node: Comparing FP Values994408 +Node: Errors accumulate995649 +Node: Strange values997105 +Ref: Strange values-Footnote-1999693 +Node: Getting Accuracy999798 +Node: Try To Round1002508 +Node: Setting precision1003407 +Ref: table-predefined-precision-strings1004104 +Node: Setting the rounding mode1005934 +Ref: table-gawk-rounding-modes1006308 +Ref: Setting the rounding mode-Footnote-11010239 +Node: Arbitrary Precision Integers1010418 +Ref: Arbitrary Precision Integers-Footnote-11013593 +Node: Checking for MPFR1013742 +Node: POSIX Floating Point Problems1015216 +Ref: POSIX Floating Point Problems-Footnote-11019501 +Node: Floating point summary1019539 +Node: Dynamic Extensions1021729 +Node: Extension Intro1023282 +Node: Plugin License1024548 +Node: Extension Mechanism Outline1025345 +Ref: figure-load-extension1025784 +Ref: figure-register-new-function1027349 +Ref: figure-call-new-function1028441 +Node: Extension API Description1030503 +Node: Extension API Functions Introduction1032216 +Ref: table-api-std-headers1034052 +Node: General Data Types1038301 +Ref: General Data Types-Footnote-11047007 +Node: Memory Allocation Functions1047306 +Ref: Memory Allocation Functions-Footnote-11051807 +Node: Constructor Functions1051906 +Node: API Ownership of MPFR and GMP Values1055559 +Node: Registration Functions1056872 +Node: Extension Functions1057572 +Node: Exit Callback Functions1062894 +Node: Extension Version String1064144 +Node: Input Parsers1064807 +Node: Output Wrappers1077528 +Node: Two-way processors1082040 +Node: Printing Messages1084305 +Ref: Printing Messages-Footnote-11085476 +Node: Updating ERRNO1085629 +Node: Requesting Values1086368 +Ref: table-value-types-returned1087105 +Node: Accessing Parameters1088213 +Node: Symbol Table Access1089450 +Node: Symbol table by name1089962 +Ref: Symbol table by name-Footnote-11092986 +Node: Symbol table by cookie1093114 +Ref: Symbol table by cookie-Footnote-11097299 +Node: Cached values1097363 +Ref: Cached values-Footnote-11100899 +Node: Array Manipulation1101052 +Ref: Array Manipulation-Footnote-11102143 +Node: Array Data Types1102180 +Ref: Array Data Types-Footnote-11104838 +Node: Array Functions1104930 +Node: Flattening Arrays1109428 +Node: Creating Arrays1116404 +Node: Redirection API1121171 +Node: Extension API Variables1124004 +Node: Extension Versioning1124715 +Ref: gawk-api-version1125144 +Node: Extension GMP/MPFR Versioning1126875 +Node: Extension API Informational Variables1128503 +Node: Extension API Boilerplate1129576 +Node: Changes from API V11133550 +Node: Finding Extensions1135122 +Node: Extension Example1135681 +Node: Internal File Description1136479 +Node: Internal File Ops1140559 +Ref: Internal File Ops-Footnote-11151909 +Node: Using Internal File Ops1152049 +Ref: Using Internal File Ops-Footnote-11154432 +Node: Extension Samples1154706 +Node: Extension Sample File Functions1156235 +Node: Extension Sample Fnmatch1163884 +Node: Extension Sample Fork1165371 +Node: Extension Sample Inplace1166589 +Node: Extension Sample Ord1170215 +Node: Extension Sample Readdir1171051 +Ref: table-readdir-file-types1171940 +Node: Extension Sample Revout1173007 +Node: Extension Sample Rev2way1173596 +Node: Extension Sample Read write array1174336 +Node: Extension Sample Readfile1176278 +Node: Extension Sample Time1177373 +Node: Extension Sample API Tests1179125 +Node: gawkextlib1179617 +Node: Extension summary1182535 +Node: Extension Exercises1186237 +Node: Language History1187479 +Node: V7/SVR3.11189135 +Node: SVR41191287 +Node: POSIX1192721 +Node: BTL1194102 +Node: POSIX/GNU1194831 +Node: Feature History1200609 +Node: Common Extensions1217784 +Node: Ranges and Locales1219067 +Ref: Ranges and Locales-Footnote-11223683 +Ref: Ranges and Locales-Footnote-21223710 +Ref: Ranges and Locales-Footnote-31223945 +Node: Contributors1224168 +Node: History summary1230165 +Node: Installation1231545 +Node: Gawk Distribution1232489 +Node: Getting1232973 +Node: Extracting1233936 +Node: Distribution contents1235574 +Node: Unix Installation1242054 +Node: Quick Installation1242736 +Node: Compiling with MPFR1245217 +Node: Shell Startup Files1245909 +Node: Additional Configuration Options1246998 +Node: Configuration Philosophy1249313 +Node: Non-Unix Installation1251682 +Node: PC Installation1252142 +Node: PC Binary Installation1252980 +Node: PC Compiling1253415 +Node: PC Using1254532 +Node: Cygwin1258085 +Node: MSYS1259309 +Node: VMS Installation1259911 +Node: VMS Compilation1260630 +Ref: VMS Compilation-Footnote-11261859 +Node: VMS Dynamic Extensions1261917 +Node: VMS Installation Details1263602 +Node: VMS Running1265864 +Node: VMS GNV1270143 +Node: Bugs1270857 +Node: Bug definition1271737 +Node: Bug address1274241 +Node: Usenet1277629 +Node: Performance bugs1278638 +Node: Asking for help1281559 +Node: Maintainers1283521 +Node: Other Versions1284715 +Node: Installation summary1292567 +Node: Notes1293931 +Node: Compatibility Mode1294725 +Node: Additions1295507 +Node: Accessing The Source1296432 +Node: Adding Code1297869 +Node: New Ports1304088 +Node: Derived Files1308463 +Ref: Derived Files-Footnote-11314123 +Ref: Derived Files-Footnote-21314158 +Ref: Derived Files-Footnote-31314756 +Node: Future Extensions1314870 +Node: Implementation Limitations1315528 +Node: Extension Design1316738 +Node: Old Extension Problems1317882 +Ref: Old Extension Problems-Footnote-11319400 +Node: Extension New Mechanism Goals1319457 +Ref: Extension New Mechanism Goals-Footnote-11322821 +Node: Extension Other Design Decisions1323010 +Node: Extension Future Growth1325123 +Node: Notes summary1325729 +Node: Basic Concepts1326887 +Node: Basic High Level1327568 +Ref: figure-general-flow1327850 +Ref: figure-process-flow1328535 +Ref: Basic High Level-Footnote-11331836 +Node: Basic Data Typing1332021 +Node: Glossary1335349 +Node: Copying1367236 +Node: GNU Free Documentation License1404779 +Node: Index1429899 End Tag Table |