diff options
Diffstat (limited to 'doc/gawk.info')
-rw-r--r-- | doc/gawk.info | 1450 |
1 files changed, 790 insertions, 660 deletions
diff --git a/doc/gawk.info b/doc/gawk.info index 0c5f8040..862860d2 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. @@ -3226,7 +3230,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 @@ -6993,8 +6999,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 @@ -12823,6 +12829,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 @@ -12835,7 +12842,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 -------------------------------- @@ -12879,9 +12886,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 @@ -12907,7 +12929,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()' @@ -13005,7 +13027,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 @@ -13581,7 +13603,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. @@ -13727,7 +13749,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 @@ -13944,7 +13966,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 @@ -14261,7 +14283,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. @@ -14443,7 +14465,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 @@ -14467,6 +14489,9 @@ contexts. '"number"' X is a number. + '"number|bool"' + X is a Boolean typed value (*note Boolean Typed Values::). + '"string"' X is a string. @@ -14541,7 +14566,7 @@ different, they are automatically forced to be scalars. Consider: 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 @@ -15220,7 +15245,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 @@ -20973,6 +20998,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. @@ -20982,7 +21008,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 =================================== @@ -21025,9 +21051,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).) + + 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.2 Controlling Array Traversal and Array Sorting +12.3 Controlling Array Traversal and Array Sorting ================================================== 'gawk' lets you control the order in which a 'for (INDX in ARRAY)' loop @@ -21046,7 +21116,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 @@ -21285,7 +21355,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 @@ -21430,7 +21500,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 @@ -21625,7 +21695,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': @@ -21705,7 +21775,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 @@ -21967,7 +22037,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 @@ -22003,7 +22073,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 @@ -24360,18 +24430,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. @@ -24430,11 +24492,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 @@ -24527,6 +24584,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 @@ -24591,7 +24649,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 .......................... @@ -24639,6 +24697,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 @@ -25585,7 +25701,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'. @@ -25598,6 +25715,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 @@ -25613,6 +25731,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. @@ -25923,6 +26042,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 @@ -26648,16 +26772,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 @@ -33521,8 +33646,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 @@ -35679,6 +35804,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) @@ -36035,7 +36161,7 @@ Index * dark corner, length() function: String Functions. (line 201) * dark corner, split() function: String Functions. (line 380) * dark corner, array elements created by reference: Type Functions. - (line 85) + (line 88) * dark corner, parameter name restrictions: Definition Syntax. (line 44) * dark corner <1>: Glossary. (line 266) @@ -37279,6 +37405,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) @@ -38506,609 +38633,612 @@ Index Tag Table: Node: Top1200 -Node: Foreword345252 -Node: Foreword449694 -Node: Preface51226 -Ref: Preface-Footnote-154085 -Ref: Preface-Footnote-254194 -Ref: Preface-Footnote-354428 -Node: History54570 -Node: Names56922 -Ref: Names-Footnote-158026 -Node: This Manual58173 -Ref: This Manual-Footnote-164812 -Node: Conventions64912 -Node: Manual History67281 -Ref: Manual History-Footnote-170278 -Ref: Manual History-Footnote-270319 -Node: How To Contribute70393 -Node: Acknowledgments71319 -Node: Getting Started76256 -Node: Running gawk78695 -Node: One-shot79885 -Node: Read Terminal81148 -Node: Long83141 -Node: Executable Scripts84654 -Ref: Executable Scripts-Footnote-187287 -Node: Comments87390 -Node: Quoting89874 -Node: DOS Quoting95400 -Node: Sample Data Files97456 -Node: Very Simple100051 -Node: Two Rules106153 -Node: More Complex108038 -Node: Statements/Lines110370 -Ref: Statements/Lines-Footnote-1114854 -Node: Other Features115119 -Node: When116055 -Ref: When-Footnote-1117809 -Node: Intro Summary117874 -Node: Invoking Gawk118758 -Node: Command Line120272 -Node: Options121070 -Ref: Options-Footnote-1138984 -Ref: Options-Footnote-2139215 -Node: Other Arguments139240 -Node: Naming Standard Input143251 -Node: Environment Variables144461 -Node: AWKPATH Variable145019 -Ref: AWKPATH Variable-Footnote-1148431 -Ref: AWKPATH Variable-Footnote-2148465 -Node: AWKLIBPATH Variable148836 -Ref: AWKLIBPATH Variable-Footnote-1150533 -Node: Other Environment Variables150908 -Node: Exit Status154729 -Node: Include Files155406 -Node: Loading Shared Libraries159096 -Node: Obsolete160524 -Node: Undocumented161216 -Node: Invoking Summary161513 -Node: Regexp164354 -Node: Regexp Usage165808 -Node: Escape Sequences167845 -Node: Regexp Operators174086 -Node: Regexp Operator Details174571 -Ref: Regexp Operator Details-Footnote-1181935 -Node: Interval Expressions182082 -Ref: Interval Expressions-Footnote-1184282 -Node: Bracket Expressions184380 -Ref: table-char-classes186856 -Node: Leftmost Longest190182 -Node: Computed Regexps191485 -Node: GNU Regexp Operators194912 -Node: Case-sensitivity198649 -Ref: Case-sensitivity-Footnote-1201515 -Ref: Case-sensitivity-Footnote-2201750 -Node: Regexp Summary201858 -Node: Reading Files203324 -Node: Records205593 -Node: awk split records206668 -Node: gawk split records211368 -Ref: gawk split records-Footnote-1216442 -Node: Fields216479 -Node: Nonconstant Fields219220 -Ref: Nonconstant Fields-Footnote-1221456 -Node: Changing Fields221660 -Node: Field Separators227691 -Node: Default Field Splitting230389 -Node: Regexp Field Splitting231507 -Node: Single Character Fields235184 -Node: Command Line Field Separator236244 -Node: Full Line Fields239462 -Ref: Full Line Fields-Footnote-1240984 -Ref: Full Line Fields-Footnote-2241030 -Node: Field Splitting Summary241131 -Node: Constant Size243205 -Node: Fixed width data243937 -Node: Skipping intervening247404 -Node: Allowing trailing data248202 -Node: Fields with fixed data249239 -Node: Splitting By Content250757 -Ref: Splitting By Content-Footnote-1254540 -Node: More CSV254703 -Node: Testing field creation256295 -Node: Multiple Line257920 -Node: Getline264197 -Node: Plain Getline266666 -Node: Getline/Variable269239 -Node: Getline/File270390 -Node: Getline/Variable/File271778 -Ref: Getline/Variable/File-Footnote-1273383 -Node: Getline/Pipe273471 -Node: Getline/Variable/Pipe276175 -Node: Getline/Coprocess277310 -Node: Getline/Variable/Coprocess278577 -Node: Getline Notes279319 -Node: Getline Summary282116 -Ref: table-getline-variants282540 -Node: Read Timeout283288 -Ref: Read Timeout-Footnote-1287194 -Node: Retrying Input287252 -Node: Command-line directories288451 -Node: Input Summary289357 -Node: Input Exercises292529 -Node: Printing292963 -Node: Print294797 -Node: Print Examples296254 -Node: Output Separators299034 -Node: OFMT301051 -Node: Printf302407 -Node: Basic Printf303192 -Node: Control Letters304766 -Node: Format Modifiers309930 -Node: Printf Examples315945 -Node: Redirection318431 -Node: Special FD325272 -Ref: Special FD-Footnote-1328440 -Node: Special Files328514 -Node: Other Inherited Files329131 -Node: Special Network330132 -Node: Special Caveats330992 -Node: Close Files And Pipes331941 -Ref: table-close-pipe-return-values338848 -Ref: Close Files And Pipes-Footnote-1339661 -Ref: Close Files And Pipes-Footnote-2339809 -Node: Nonfatal339961 -Node: Output Summary342299 -Node: Output Exercises343521 -Node: Expressions344200 -Node: Values345388 -Node: Constants346066 -Node: Scalar Constants346757 -Ref: Scalar Constants-Footnote-1349267 -Node: Nondecimal-numbers349517 -Node: Regexp Constants352518 -Node: Using Constant Regexps353044 -Node: Standard Regexp Constants353666 -Node: Strong Regexp Constants356854 -Node: Variables360567 -Node: Using Variables361224 -Node: Assignment Options363134 -Node: Conversion365605 -Node: Strings And Numbers366129 -Ref: Strings And Numbers-Footnote-1369192 -Node: Locale influences conversions369301 -Ref: table-locale-affects372059 -Node: All Operators372677 -Node: Arithmetic Ops373306 -Node: Concatenation376022 -Ref: Concatenation-Footnote-1378869 -Node: Assignment Ops378976 -Ref: table-assign-ops383967 -Node: Increment Ops385280 -Node: Truth Values and Conditions388740 -Node: Truth Values389814 -Node: Typing and Comparison390862 -Node: Variable Typing391682 -Ref: Variable Typing-Footnote-1398145 -Ref: Variable Typing-Footnote-2398217 -Node: Comparison Operators398294 -Ref: table-relational-ops398713 -Node: POSIX String Comparison402208 -Ref: POSIX String Comparison-Footnote-1403903 -Ref: POSIX String Comparison-Footnote-2404042 -Node: Boolean Ops404126 -Ref: Boolean Ops-Footnote-1408608 -Node: Conditional Exp408700 -Node: Function Calls410436 -Node: Precedence414313 -Node: Locales417972 -Node: Expressions Summary419604 -Node: Patterns and Actions422177 -Node: Pattern Overview423297 -Node: Regexp Patterns424974 -Node: Expression Patterns425516 -Node: Ranges429297 -Node: BEGIN/END432405 -Node: Using BEGIN/END433166 -Ref: Using BEGIN/END-Footnote-1435920 -Node: I/O And BEGIN/END436026 -Node: BEGINFILE/ENDFILE438339 -Node: Empty441570 -Node: Using Shell Variables441887 -Node: Action Overview444161 -Node: Statements446486 -Node: If Statement448334 -Node: While Statement449829 -Node: Do Statement451857 -Node: For Statement453005 -Node: Switch Statement456176 -Node: Break Statement458617 -Node: Continue Statement460709 -Node: Next Statement462536 -Node: Nextfile Statement464919 -Node: Exit Statement467608 -Node: Built-in Variables470011 -Node: User-modified471144 -Node: Auto-set478911 -Ref: Auto-set-Footnote-1495718 -Ref: Auto-set-Footnote-2495924 -Node: ARGC and ARGV495980 -Node: Pattern Action Summary500193 -Node: Arrays502623 -Node: Array Basics503952 -Node: Array Intro504796 -Ref: figure-array-elements506771 -Ref: Array Intro-Footnote-1509475 -Node: Reference to Elements509603 -Node: Assigning Elements512067 -Node: Array Example512558 -Node: Scanning an Array514317 -Node: Controlling Scanning517339 -Ref: Controlling Scanning-Footnote-1523795 -Node: Numeric Array Subscripts524111 -Node: Uninitialized Subscripts526295 -Node: Delete527914 -Ref: Delete-Footnote-1530666 -Node: Multidimensional530723 -Node: Multiscanning533818 -Node: Arrays of Arrays535409 -Node: Arrays Summary540177 -Node: Functions542270 -Node: Built-in543308 -Node: Calling Built-in544389 -Node: Numeric Functions546385 -Ref: Numeric Functions-Footnote-1550413 -Ref: Numeric Functions-Footnote-2551061 -Ref: Numeric Functions-Footnote-3551109 -Node: String Functions551381 -Ref: String Functions-Footnote-1575896 -Ref: String Functions-Footnote-2576024 -Ref: String Functions-Footnote-3576272 -Node: Gory Details576359 -Ref: table-sub-escapes578150 -Ref: table-sub-proposed579669 -Ref: table-posix-sub581032 -Ref: table-gensub-escapes582573 -Ref: Gory Details-Footnote-1583396 -Node: I/O Functions583550 -Ref: table-system-return-values590004 -Ref: I/O Functions-Footnote-1592084 -Ref: I/O Functions-Footnote-2592232 -Node: Time Functions592352 -Ref: Time Functions-Footnote-1603023 -Ref: Time Functions-Footnote-2603091 -Ref: Time Functions-Footnote-3603249 -Ref: Time Functions-Footnote-4603360 -Ref: Time Functions-Footnote-5603472 -Ref: Time Functions-Footnote-6603699 -Node: Bitwise Functions603965 -Ref: table-bitwise-ops604559 -Ref: Bitwise Functions-Footnote-1610622 -Ref: Bitwise Functions-Footnote-2610795 -Node: Type Functions610986 -Node: I18N Functions614315 -Node: User-defined615966 -Node: Definition Syntax616778 -Ref: Definition Syntax-Footnote-1622472 -Node: Function Example622543 -Ref: Function Example-Footnote-1625465 -Node: Function Calling625487 -Node: Calling A Function626075 -Node: Variable Scope627033 -Node: Pass By Value/Reference630027 -Node: Function Caveats632671 -Ref: Function Caveats-Footnote-1634718 -Node: Return Statement634838 -Node: Dynamic Typing637817 -Node: Indirect Calls638747 -Ref: Indirect Calls-Footnote-1648999 -Node: Functions Summary649127 -Node: Library Functions651832 -Ref: Library Functions-Footnote-1655439 -Ref: Library Functions-Footnote-2655582 -Node: Library Names655753 -Ref: Library Names-Footnote-1659420 -Ref: Library Names-Footnote-2659643 -Node: General Functions659729 -Node: Strtonum Function660911 -Node: Assert Function663933 -Node: Round Function667259 -Node: Cliff Random Function668799 -Node: Ordinal Functions669815 -Ref: Ordinal Functions-Footnote-1672878 -Ref: Ordinal Functions-Footnote-2673130 -Node: Join Function673340 -Ref: Join Function-Footnote-1675110 -Node: Getlocaltime Function675310 -Node: Readfile Function679052 -Node: Shell Quoting681029 -Node: Isnumeric Function682457 -Node: Data File Management683845 -Node: Filetrans Function684477 -Node: Rewind Function688573 -Node: File Checking690482 -Ref: File Checking-Footnote-1691816 -Node: Empty Files692017 -Node: Ignoring Assigns693996 -Node: Getopt Function695546 -Ref: Getopt Function-Footnote-1710769 -Node: Passwd Functions710969 -Ref: Passwd Functions-Footnote-1719808 -Node: Group Functions719896 -Ref: Group Functions-Footnote-1727794 -Node: Walking Arrays728001 -Node: Library Functions Summary731009 -Node: Library Exercises732415 -Node: Sample Programs732880 -Node: Running Examples733650 -Node: Clones734378 -Node: Cut Program735602 -Node: Egrep Program745742 -Node: Id Program754743 -Node: Split Program764690 -Ref: Split Program-Footnote-1774583 -Node: Tee Program774756 -Node: Uniq Program777546 -Node: Wc Program785134 -Node: Bytes vs. Characters785521 -Node: Using extensions787069 -Node: wc program787823 -Node: Miscellaneous Programs792688 -Node: Dupword Program793901 -Node: Alarm Program795931 -Node: Translate Program800786 -Ref: Translate Program-Footnote-1805351 -Node: Labels Program805621 -Ref: Labels Program-Footnote-1808972 -Node: Word Sorting809056 -Node: History Sorting813128 -Node: Extract Program815353 -Node: Simple Sed823407 -Node: Igawk Program826481 -Ref: Igawk Program-Footnote-1840812 -Ref: Igawk Program-Footnote-2841014 -Ref: Igawk Program-Footnote-3841136 -Node: Anagram Program841251 -Node: Signature Program844313 -Node: Programs Summary845560 -Node: Programs Exercises846774 -Ref: Programs Exercises-Footnote-1850904 -Node: Advanced Features850990 -Node: Nondecimal Data853057 -Node: Array Sorting854648 -Node: Controlling Array Traversal855348 -Ref: Controlling Array Traversal-Footnote-1863716 -Node: Array Sorting Functions863834 -Ref: Array Sorting Functions-Footnote-1869208 -Node: Two-way I/O869404 -Ref: Two-way I/O-Footnote-1877130 -Ref: Two-way I/O-Footnote-2877317 -Node: TCP/IP Networking877399 -Node: Profiling880517 -Node: Extension Philosophy889826 -Node: Advanced Features Summary891305 -Node: Internationalization893320 -Node: I18N and L10N894994 -Node: Explaining gettext895681 -Ref: Explaining gettext-Footnote-1901573 -Ref: Explaining gettext-Footnote-2901758 -Node: Programmer i18n901923 -Ref: Programmer i18n-Footnote-1906872 -Node: Translator i18n906921 -Node: String Extraction907715 -Ref: String Extraction-Footnote-1908847 -Node: Printf Ordering908933 -Ref: Printf Ordering-Footnote-1911719 -Node: I18N Portability911783 -Ref: I18N Portability-Footnote-1914239 -Node: I18N Example914302 -Ref: I18N Example-Footnote-1917577 -Ref: I18N Example-Footnote-2917650 -Node: Gawk I18N917759 -Node: I18N Summary918408 -Node: Debugger919749 -Node: Debugging920749 -Node: Debugging Concepts921190 -Node: Debugging Terms922999 -Node: Awk Debugging925574 -Ref: Awk Debugging-Footnote-1926519 -Node: Sample Debugging Session926651 -Node: Debugger Invocation927185 -Node: Finding The Bug928571 -Node: List of Debugger Commands935045 -Node: Breakpoint Control936378 -Node: Debugger Execution Control940072 -Node: Viewing And Changing Data943434 -Node: Execution Stack946975 -Node: Debugger Info948612 -Node: Miscellaneous Debugger Commands952683 -Node: Readline Support957745 -Node: Limitations958641 -Node: Debugging Summary961195 -Node: Namespaces962474 -Node: Global Namespace963585 -Node: Qualified Names964983 -Node: Default Namespace965982 -Node: Changing The Namespace966723 -Node: Naming Rules968337 -Node: Internal Name Management970185 -Node: Namespace Example971227 -Node: Namespace And Features973789 -Node: Namespace Summary975224 -Node: Arbitrary Precision Arithmetic976701 -Node: Computer Arithmetic978188 -Ref: table-numeric-ranges981954 -Ref: table-floating-point-ranges982447 -Ref: Computer Arithmetic-Footnote-1983105 -Node: Math Definitions983162 -Ref: table-ieee-formats986478 -Ref: Math Definitions-Footnote-1987081 -Node: MPFR features987186 -Node: FP Math Caution988904 -Ref: FP Math Caution-Footnote-1989976 -Node: Inexactness of computations990345 -Node: Inexact representation991305 -Node: Comparing FP Values992665 -Node: Errors accumulate993906 -Node: Getting Accuracy995339 -Node: Try To Round998049 -Node: Setting precision998948 -Ref: table-predefined-precision-strings999645 -Node: Setting the rounding mode1001475 -Ref: table-gawk-rounding-modes1001849 -Ref: Setting the rounding mode-Footnote-11005780 -Node: Arbitrary Precision Integers1005959 -Ref: Arbitrary Precision Integers-Footnote-11009134 -Node: Checking for MPFR1009283 -Node: POSIX Floating Point Problems1010757 -Ref: POSIX Floating Point Problems-Footnote-11015042 -Node: Floating point summary1015080 -Node: Dynamic Extensions1017270 -Node: Extension Intro1018823 -Node: Plugin License1020089 -Node: Extension Mechanism Outline1020886 -Ref: figure-load-extension1021325 -Ref: figure-register-new-function1022890 -Ref: figure-call-new-function1023982 -Node: Extension API Description1026044 -Node: Extension API Functions Introduction1027757 -Ref: table-api-std-headers1029593 -Node: General Data Types1033842 -Ref: General Data Types-Footnote-11042472 -Node: Memory Allocation Functions1042771 -Ref: Memory Allocation Functions-Footnote-11047272 -Node: Constructor Functions1047371 -Node: API Ownership of MPFR and GMP Values1050837 -Node: Registration Functions1052150 -Node: Extension Functions1052850 -Node: Exit Callback Functions1058172 -Node: Extension Version String1059422 -Node: Input Parsers1060085 -Node: Output Wrappers1072806 -Node: Two-way processors1077318 -Node: Printing Messages1079583 -Ref: Printing Messages-Footnote-11080754 -Node: Updating ERRNO1080907 -Node: Requesting Values1081646 -Ref: table-value-types-returned1082383 -Node: Accessing Parameters1083319 -Node: Symbol Table Access1084556 -Node: Symbol table by name1085068 -Ref: Symbol table by name-Footnote-11088093 -Node: Symbol table by cookie1088221 -Ref: Symbol table by cookie-Footnote-11092406 -Node: Cached values1092470 -Ref: Cached values-Footnote-11096006 -Node: Array Manipulation1096159 -Ref: Array Manipulation-Footnote-11097250 -Node: Array Data Types1097287 -Ref: Array Data Types-Footnote-11099945 -Node: Array Functions1100037 -Node: Flattening Arrays1104535 -Node: Creating Arrays1111511 -Node: Redirection API1116278 -Node: Extension API Variables1119111 -Node: Extension Versioning1119822 -Ref: gawk-api-version1120251 -Node: Extension GMP/MPFR Versioning1121982 -Node: Extension API Informational Variables1123610 -Node: Extension API Boilerplate1124683 -Node: Changes from API V11128657 -Node: Finding Extensions1130229 -Node: Extension Example1130788 -Node: Internal File Description1131586 -Node: Internal File Ops1135666 -Ref: Internal File Ops-Footnote-11147016 -Node: Using Internal File Ops1147156 -Ref: Using Internal File Ops-Footnote-11149539 -Node: Extension Samples1149813 -Node: Extension Sample File Functions1151342 -Node: Extension Sample Fnmatch1158991 -Node: Extension Sample Fork1160478 -Node: Extension Sample Inplace1161696 -Node: Extension Sample Ord1165322 -Node: Extension Sample Readdir1166158 -Ref: table-readdir-file-types1167047 -Node: Extension Sample Revout1168114 -Node: Extension Sample Rev2way1168703 -Node: Extension Sample Read write array1169443 -Node: Extension Sample Readfile1171385 -Node: Extension Sample Time1172480 -Node: Extension Sample API Tests1174232 -Node: gawkextlib1174724 -Node: Extension summary1177642 -Node: Extension Exercises1181344 -Node: Language History1182586 -Node: V7/SVR3.11184242 -Node: SVR41186394 -Node: POSIX1187828 -Node: BTL1189209 -Node: POSIX/GNU1189938 -Node: Feature History1195716 -Node: Common Extensions1212891 -Node: Ranges and Locales1214174 -Ref: Ranges and Locales-Footnote-11218790 -Ref: Ranges and Locales-Footnote-21218817 -Ref: Ranges and Locales-Footnote-31219052 -Node: Contributors1219275 -Node: History summary1225272 -Node: Installation1226652 -Node: Gawk Distribution1227596 -Node: Getting1228080 -Node: Extracting1229043 -Node: Distribution contents1230681 -Node: Unix Installation1237823 -Node: Quick Installation1238627 -Node: Compiling with MPFR1241103 -Node: Shell Startup Files1241795 -Node: Additional Configuration Options1242884 -Node: Configuration Philosophy1245199 -Node: Compiling from Git1247595 -Node: Building the Documentation1248150 -Node: Non-Unix Installation1249534 -Node: PC Installation1249994 -Node: PC Binary Installation1250832 -Node: PC Compiling1251267 -Node: PC Using1252384 -Node: Cygwin1255937 -Node: MSYS1257161 -Node: VMS Installation1257763 -Node: VMS Compilation1258482 -Ref: VMS Compilation-Footnote-11259711 -Node: VMS Dynamic Extensions1259769 -Node: VMS Installation Details1261454 -Node: VMS Running1263716 -Node: VMS GNV1267995 -Node: Bugs1268709 -Node: Bug definition1269621 -Node: Bug address1272125 -Node: Usenet1275513 -Node: Performance bugs1276522 -Node: Asking for help1279443 -Node: Maintainers1281405 -Node: Other Versions1282599 -Node: Installation summary1290451 -Node: Notes1291815 -Node: Compatibility Mode1292609 -Node: Additions1293391 -Node: Accessing The Source1294316 -Node: Adding Code1295753 -Node: New Ports1301972 -Node: Derived Files1306347 -Ref: Derived Files-Footnote-11312007 -Ref: Derived Files-Footnote-21312042 -Ref: Derived Files-Footnote-31312640 -Node: Future Extensions1312754 -Node: Implementation Limitations1313412 -Node: Extension Design1314622 -Node: Old Extension Problems1315766 -Ref: Old Extension Problems-Footnote-11317284 -Node: Extension New Mechanism Goals1317341 -Ref: Extension New Mechanism Goals-Footnote-11320705 -Node: Extension Other Design Decisions1320894 -Node: Extension Future Growth1323007 -Node: Notes summary1323613 -Node: Basic Concepts1324771 -Node: Basic High Level1325452 -Ref: figure-general-flow1325734 -Ref: figure-process-flow1326419 -Ref: Basic High Level-Footnote-11329720 -Node: Basic Data Typing1329905 -Node: Glossary1333233 -Node: Copying1365118 -Node: GNU Free Documentation License1402661 -Node: Index1427781 +Node: Foreword345523 +Node: Foreword449965 +Node: Preface51497 +Ref: Preface-Footnote-154356 +Ref: Preface-Footnote-254465 +Ref: Preface-Footnote-354699 +Node: History54841 +Node: Names57193 +Ref: Names-Footnote-158297 +Node: This Manual58444 +Ref: This Manual-Footnote-165083 +Node: Conventions65183 +Node: Manual History67552 +Ref: Manual History-Footnote-170549 +Ref: Manual History-Footnote-270590 +Node: How To Contribute70664 +Node: Acknowledgments71590 +Node: Getting Started76527 +Node: Running gawk78966 +Node: One-shot80156 +Node: Read Terminal81419 +Node: Long83412 +Node: Executable Scripts84925 +Ref: Executable Scripts-Footnote-187558 +Node: Comments87661 +Node: Quoting90145 +Node: DOS Quoting95671 +Node: Sample Data Files97727 +Node: Very Simple100322 +Node: Two Rules106424 +Node: More Complex108309 +Node: Statements/Lines110641 +Ref: Statements/Lines-Footnote-1115125 +Node: Other Features115390 +Node: When116326 +Ref: When-Footnote-1118080 +Node: Intro Summary118145 +Node: Invoking Gawk119029 +Node: Command Line120543 +Node: Options121341 +Ref: Options-Footnote-1139255 +Ref: Options-Footnote-2139486 +Node: Other Arguments139511 +Node: Naming Standard Input143522 +Node: Environment Variables144732 +Node: AWKPATH Variable145290 +Ref: AWKPATH Variable-Footnote-1148702 +Ref: AWKPATH Variable-Footnote-2148736 +Node: AWKLIBPATH Variable149107 +Ref: AWKLIBPATH Variable-Footnote-1150804 +Node: Other Environment Variables151179 +Node: Exit Status155131 +Node: Include Files155808 +Node: Loading Shared Libraries159498 +Node: Obsolete160926 +Node: Undocumented161618 +Node: Invoking Summary161915 +Node: Regexp164756 +Node: Regexp Usage166210 +Node: Escape Sequences168247 +Node: Regexp Operators174488 +Node: Regexp Operator Details174973 +Ref: Regexp Operator Details-Footnote-1182337 +Node: Interval Expressions182484 +Ref: Interval Expressions-Footnote-1184684 +Node: Bracket Expressions184782 +Ref: table-char-classes187258 +Node: Leftmost Longest190584 +Node: Computed Regexps191887 +Node: GNU Regexp Operators195314 +Node: Case-sensitivity199051 +Ref: Case-sensitivity-Footnote-1201917 +Ref: Case-sensitivity-Footnote-2202152 +Node: Regexp Summary202260 +Node: Reading Files203726 +Node: Records205995 +Node: awk split records207070 +Node: gawk split records211770 +Ref: gawk split records-Footnote-1216844 +Node: Fields216881 +Node: Nonconstant Fields219622 +Ref: Nonconstant Fields-Footnote-1221858 +Node: Changing Fields222062 +Node: Field Separators228093 +Node: Default Field Splitting230791 +Node: Regexp Field Splitting231909 +Node: Single Character Fields235586 +Node: Command Line Field Separator236646 +Node: Full Line Fields239864 +Ref: Full Line Fields-Footnote-1241386 +Ref: Full Line Fields-Footnote-2241432 +Node: Field Splitting Summary241533 +Node: Constant Size243607 +Node: Fixed width data244339 +Node: Skipping intervening247806 +Node: Allowing trailing data248604 +Node: Fields with fixed data249641 +Node: Splitting By Content251159 +Ref: Splitting By Content-Footnote-1254942 +Node: More CSV255105 +Node: Testing field creation256697 +Node: Multiple Line258322 +Node: Getline264599 +Node: Plain Getline267068 +Node: Getline/Variable269641 +Node: Getline/File270792 +Node: Getline/Variable/File272180 +Ref: Getline/Variable/File-Footnote-1273785 +Node: Getline/Pipe273873 +Node: Getline/Variable/Pipe276577 +Node: Getline/Coprocess277712 +Node: Getline/Variable/Coprocess278979 +Node: Getline Notes279721 +Node: Getline Summary282518 +Ref: table-getline-variants282942 +Node: Read Timeout283690 +Ref: Read Timeout-Footnote-1287596 +Node: Retrying Input287654 +Node: Command-line directories288853 +Node: Input Summary289759 +Node: Input Exercises292931 +Node: Printing293365 +Node: Print295199 +Node: Print Examples296656 +Node: Output Separators299436 +Node: OFMT301453 +Node: Printf302809 +Node: Basic Printf303594 +Node: Control Letters305168 +Node: Format Modifiers310330 +Node: Printf Examples316345 +Node: Redirection318831 +Node: Special FD325672 +Ref: Special FD-Footnote-1328840 +Node: Special Files328914 +Node: Other Inherited Files329531 +Node: Special Network330532 +Node: Special Caveats331392 +Node: Close Files And Pipes332341 +Ref: table-close-pipe-return-values339248 +Ref: Close Files And Pipes-Footnote-1340061 +Ref: Close Files And Pipes-Footnote-2340209 +Node: Nonfatal340361 +Node: Output Summary342699 +Node: Output Exercises343921 +Node: Expressions344600 +Node: Values345788 +Node: Constants346466 +Node: Scalar Constants347157 +Ref: Scalar Constants-Footnote-1349667 +Node: Nondecimal-numbers349917 +Node: Regexp Constants352918 +Node: Using Constant Regexps353444 +Node: Standard Regexp Constants354066 +Node: Strong Regexp Constants357254 +Node: Variables360967 +Node: Using Variables361624 +Node: Assignment Options363534 +Node: Conversion366005 +Node: Strings And Numbers366529 +Ref: Strings And Numbers-Footnote-1369592 +Node: Locale influences conversions369701 +Ref: table-locale-affects372459 +Node: All Operators373077 +Node: Arithmetic Ops373706 +Node: Concatenation376422 +Ref: Concatenation-Footnote-1379269 +Node: Assignment Ops379376 +Ref: table-assign-ops384367 +Node: Increment Ops385680 +Node: Truth Values and Conditions389140 +Node: Truth Values390214 +Node: Typing and Comparison391262 +Node: Variable Typing392082 +Ref: Variable Typing-Footnote-1398545 +Ref: Variable Typing-Footnote-2398617 +Node: Comparison Operators398694 +Ref: table-relational-ops399113 +Node: POSIX String Comparison402608 +Ref: POSIX String Comparison-Footnote-1404303 +Ref: POSIX String Comparison-Footnote-2404442 +Node: Boolean Ops404526 +Ref: Boolean Ops-Footnote-1409008 +Node: Conditional Exp409100 +Node: Function Calls410836 +Node: Precedence414713 +Node: Locales418372 +Node: Expressions Summary420004 +Node: Patterns and Actions422577 +Node: Pattern Overview423697 +Node: Regexp Patterns425374 +Node: Expression Patterns425916 +Node: Ranges429697 +Node: BEGIN/END432805 +Node: Using BEGIN/END433566 +Ref: Using BEGIN/END-Footnote-1436320 +Node: I/O And BEGIN/END436426 +Node: BEGINFILE/ENDFILE438739 +Node: Empty441970 +Node: Using Shell Variables442287 +Node: Action Overview444561 +Node: Statements446886 +Node: If Statement448734 +Node: While Statement450229 +Node: Do Statement452257 +Node: For Statement453405 +Node: Switch Statement456576 +Node: Break Statement459017 +Node: Continue Statement461109 +Node: Next Statement462936 +Node: Nextfile Statement465319 +Node: Exit Statement468008 +Node: Built-in Variables470411 +Node: User-modified471544 +Node: Auto-set479311 +Ref: Auto-set-Footnote-1496118 +Ref: Auto-set-Footnote-2496324 +Node: ARGC and ARGV496380 +Node: Pattern Action Summary500593 +Node: Arrays503023 +Node: Array Basics504352 +Node: Array Intro505196 +Ref: figure-array-elements507171 +Ref: Array Intro-Footnote-1509875 +Node: Reference to Elements510003 +Node: Assigning Elements512467 +Node: Array Example512958 +Node: Scanning an Array514717 +Node: Controlling Scanning517739 +Ref: Controlling Scanning-Footnote-1524195 +Node: Numeric Array Subscripts524511 +Node: Uninitialized Subscripts526695 +Node: Delete528314 +Ref: Delete-Footnote-1531066 +Node: Multidimensional531123 +Node: Multiscanning534218 +Node: Arrays of Arrays535809 +Node: Arrays Summary540577 +Node: Functions542670 +Node: Built-in543708 +Node: Calling Built-in544861 +Node: Boolean Functions546857 +Node: Numeric Functions547411 +Ref: Numeric Functions-Footnote-1551438 +Ref: Numeric Functions-Footnote-2552086 +Ref: Numeric Functions-Footnote-3552134 +Node: String Functions552406 +Ref: String Functions-Footnote-1576921 +Ref: String Functions-Footnote-2577049 +Ref: String Functions-Footnote-3577297 +Node: Gory Details577384 +Ref: table-sub-escapes579175 +Ref: table-sub-proposed580694 +Ref: table-posix-sub582057 +Ref: table-gensub-escapes583598 +Ref: Gory Details-Footnote-1584421 +Node: I/O Functions584575 +Ref: table-system-return-values591029 +Ref: I/O Functions-Footnote-1593109 +Ref: I/O Functions-Footnote-2593257 +Node: Time Functions593377 +Ref: Time Functions-Footnote-1604048 +Ref: Time Functions-Footnote-2604116 +Ref: Time Functions-Footnote-3604274 +Ref: Time Functions-Footnote-4604385 +Ref: Time Functions-Footnote-5604497 +Ref: Time Functions-Footnote-6604724 +Node: Bitwise Functions604990 +Ref: table-bitwise-ops605584 +Ref: Bitwise Functions-Footnote-1611647 +Ref: Bitwise Functions-Footnote-2611820 +Node: Type Functions612011 +Node: I18N Functions615431 +Node: User-defined617082 +Node: Definition Syntax617894 +Ref: Definition Syntax-Footnote-1623588 +Node: Function Example623659 +Ref: Function Example-Footnote-1626581 +Node: Function Calling626603 +Node: Calling A Function627191 +Node: Variable Scope628149 +Node: Pass By Value/Reference631143 +Node: Function Caveats633787 +Ref: Function Caveats-Footnote-1635834 +Node: Return Statement635954 +Node: Dynamic Typing638933 +Node: Indirect Calls639863 +Ref: Indirect Calls-Footnote-1650118 +Node: Functions Summary650246 +Node: Library Functions652951 +Ref: Library Functions-Footnote-1656558 +Ref: Library Functions-Footnote-2656701 +Node: Library Names656872 +Ref: Library Names-Footnote-1660539 +Ref: Library Names-Footnote-2660762 +Node: General Functions660848 +Node: Strtonum Function662030 +Node: Assert Function665052 +Node: Round Function668378 +Node: Cliff Random Function669918 +Node: Ordinal Functions670934 +Ref: Ordinal Functions-Footnote-1673997 +Ref: Ordinal Functions-Footnote-2674249 +Node: Join Function674459 +Ref: Join Function-Footnote-1676229 +Node: Getlocaltime Function676429 +Node: Readfile Function680171 +Node: Shell Quoting682148 +Node: Isnumeric Function683576 +Node: Data File Management684964 +Node: Filetrans Function685596 +Node: Rewind Function689692 +Node: File Checking691601 +Ref: File Checking-Footnote-1692935 +Node: Empty Files693136 +Node: Ignoring Assigns695115 +Node: Getopt Function696665 +Ref: Getopt Function-Footnote-1711888 +Node: Passwd Functions712088 +Ref: Passwd Functions-Footnote-1720927 +Node: Group Functions721015 +Ref: Group Functions-Footnote-1728913 +Node: Walking Arrays729120 +Node: Library Functions Summary732128 +Node: Library Exercises733534 +Node: Sample Programs733999 +Node: Running Examples734769 +Node: Clones735497 +Node: Cut Program736721 +Node: Egrep Program746861 +Node: Id Program755862 +Node: Split Program765809 +Ref: Split Program-Footnote-1775702 +Node: Tee Program775875 +Node: Uniq Program778665 +Node: Wc Program786253 +Node: Bytes vs. Characters786640 +Node: Using extensions788188 +Node: wc program788942 +Node: Miscellaneous Programs793807 +Node: Dupword Program795020 +Node: Alarm Program797050 +Node: Translate Program801905 +Ref: Translate Program-Footnote-1806470 +Node: Labels Program806740 +Ref: Labels Program-Footnote-1810091 +Node: Word Sorting810175 +Node: History Sorting814247 +Node: Extract Program816472 +Node: Simple Sed824526 +Node: Igawk Program827600 +Ref: Igawk Program-Footnote-1841931 +Ref: Igawk Program-Footnote-2842133 +Ref: Igawk Program-Footnote-3842255 +Node: Anagram Program842370 +Node: Signature Program845432 +Node: Programs Summary846679 +Node: Programs Exercises847893 +Ref: Programs Exercises-Footnote-1852023 +Node: Advanced Features852109 +Node: Nondecimal Data854240 +Node: Boolean Typed Values855838 +Node: Array Sorting857719 +Node: Controlling Array Traversal858424 +Ref: Controlling Array Traversal-Footnote-1866792 +Node: Array Sorting Functions866910 +Ref: Array Sorting Functions-Footnote-1872284 +Node: Two-way I/O872480 +Ref: Two-way I/O-Footnote-1880206 +Ref: Two-way I/O-Footnote-2880393 +Node: TCP/IP Networking880475 +Node: Profiling883593 +Node: Extension Philosophy892902 +Node: Advanced Features Summary894381 +Node: Internationalization896396 +Node: I18N and L10N898070 +Node: Explaining gettext898757 +Ref: Explaining gettext-Footnote-1904649 +Ref: Explaining gettext-Footnote-2904834 +Node: Programmer i18n904999 +Ref: Programmer i18n-Footnote-1909948 +Node: Translator i18n909997 +Node: String Extraction910791 +Ref: String Extraction-Footnote-1911923 +Node: Printf Ordering912009 +Ref: Printf Ordering-Footnote-1914795 +Node: I18N Portability914859 +Ref: I18N Portability-Footnote-1917315 +Node: I18N Example917378 +Ref: I18N Example-Footnote-1920653 +Ref: I18N Example-Footnote-2920726 +Node: Gawk I18N920835 +Node: I18N Summary921484 +Node: Debugger922825 +Node: Debugging923825 +Node: Debugging Concepts924266 +Node: Debugging Terms926075 +Node: Awk Debugging928650 +Ref: Awk Debugging-Footnote-1929595 +Node: Sample Debugging Session929727 +Node: Debugger Invocation930261 +Node: Finding The Bug931647 +Node: List of Debugger Commands938121 +Node: Breakpoint Control939454 +Node: Debugger Execution Control943148 +Node: Viewing And Changing Data946510 +Node: Execution Stack950051 +Node: Debugger Info951688 +Node: Miscellaneous Debugger Commands955759 +Node: Readline Support960821 +Node: Limitations961717 +Node: Debugging Summary964271 +Node: Namespaces965550 +Node: Global Namespace966661 +Node: Qualified Names968059 +Node: Default Namespace969058 +Node: Changing The Namespace969799 +Node: Naming Rules971413 +Node: Internal Name Management973261 +Node: Namespace Example974303 +Node: Namespace And Features976865 +Node: Namespace Summary978300 +Node: Arbitrary Precision Arithmetic979777 +Node: Computer Arithmetic981264 +Ref: table-numeric-ranges985030 +Ref: table-floating-point-ranges985523 +Ref: Computer Arithmetic-Footnote-1986181 +Node: Math Definitions986238 +Ref: table-ieee-formats989214 +Node: MPFR features989781 +Node: FP Math Caution991499 +Ref: FP Math Caution-Footnote-1992571 +Node: Inexactness of computations992940 +Node: Inexact representation993971 +Node: Comparing FP Values995331 +Node: Errors accumulate996572 +Node: Strange values998028 +Ref: Strange values-Footnote-11000616 +Node: Getting Accuracy1000721 +Node: Try To Round1003431 +Node: Setting precision1004330 +Ref: table-predefined-precision-strings1005027 +Node: Setting the rounding mode1006857 +Ref: table-gawk-rounding-modes1007231 +Ref: Setting the rounding mode-Footnote-11011162 +Node: Arbitrary Precision Integers1011341 +Ref: Arbitrary Precision Integers-Footnote-11014516 +Node: Checking for MPFR1014665 +Node: POSIX Floating Point Problems1016139 +Ref: POSIX Floating Point Problems-Footnote-11020424 +Node: Floating point summary1020462 +Node: Dynamic Extensions1022652 +Node: Extension Intro1024205 +Node: Plugin License1025471 +Node: Extension Mechanism Outline1026268 +Ref: figure-load-extension1026707 +Ref: figure-register-new-function1028272 +Ref: figure-call-new-function1029364 +Node: Extension API Description1031426 +Node: Extension API Functions Introduction1033139 +Ref: table-api-std-headers1034975 +Node: General Data Types1039224 +Ref: General Data Types-Footnote-11047930 +Node: Memory Allocation Functions1048229 +Ref: Memory Allocation Functions-Footnote-11052730 +Node: Constructor Functions1052829 +Node: API Ownership of MPFR and GMP Values1056482 +Node: Registration Functions1057795 +Node: Extension Functions1058495 +Node: Exit Callback Functions1063817 +Node: Extension Version String1065067 +Node: Input Parsers1065730 +Node: Output Wrappers1078451 +Node: Two-way processors1082963 +Node: Printing Messages1085228 +Ref: Printing Messages-Footnote-11086399 +Node: Updating ERRNO1086552 +Node: Requesting Values1087291 +Ref: table-value-types-returned1088028 +Node: Accessing Parameters1089136 +Node: Symbol Table Access1090373 +Node: Symbol table by name1090885 +Ref: Symbol table by name-Footnote-11093910 +Node: Symbol table by cookie1094038 +Ref: Symbol table by cookie-Footnote-11098223 +Node: Cached values1098287 +Ref: Cached values-Footnote-11101823 +Node: Array Manipulation1101976 +Ref: Array Manipulation-Footnote-11103067 +Node: Array Data Types1103104 +Ref: Array Data Types-Footnote-11105762 +Node: Array Functions1105854 +Node: Flattening Arrays1110352 +Node: Creating Arrays1117328 +Node: Redirection API1122095 +Node: Extension API Variables1124928 +Node: Extension Versioning1125639 +Ref: gawk-api-version1126068 +Node: Extension GMP/MPFR Versioning1127799 +Node: Extension API Informational Variables1129427 +Node: Extension API Boilerplate1130500 +Node: Changes from API V11134474 +Node: Finding Extensions1136046 +Node: Extension Example1136605 +Node: Internal File Description1137403 +Node: Internal File Ops1141483 +Ref: Internal File Ops-Footnote-11152833 +Node: Using Internal File Ops1152973 +Ref: Using Internal File Ops-Footnote-11155356 +Node: Extension Samples1155630 +Node: Extension Sample File Functions1157159 +Node: Extension Sample Fnmatch1164808 +Node: Extension Sample Fork1166295 +Node: Extension Sample Inplace1167513 +Node: Extension Sample Ord1171139 +Node: Extension Sample Readdir1171975 +Ref: table-readdir-file-types1172864 +Node: Extension Sample Revout1173931 +Node: Extension Sample Rev2way1174520 +Node: Extension Sample Read write array1175260 +Node: Extension Sample Readfile1177202 +Node: Extension Sample Time1178297 +Node: Extension Sample API Tests1180049 +Node: gawkextlib1180541 +Node: Extension summary1183459 +Node: Extension Exercises1187161 +Node: Language History1188403 +Node: V7/SVR3.11190059 +Node: SVR41192211 +Node: POSIX1193645 +Node: BTL1195026 +Node: POSIX/GNU1195755 +Node: Feature History1201533 +Node: Common Extensions1218708 +Node: Ranges and Locales1219991 +Ref: Ranges and Locales-Footnote-11224607 +Ref: Ranges and Locales-Footnote-21224634 +Ref: Ranges and Locales-Footnote-31224869 +Node: Contributors1225092 +Node: History summary1231089 +Node: Installation1232469 +Node: Gawk Distribution1233413 +Node: Getting1233897 +Node: Extracting1234860 +Node: Distribution contents1236498 +Node: Unix Installation1243640 +Node: Quick Installation1244444 +Node: Compiling with MPFR1246920 +Node: Shell Startup Files1247612 +Node: Additional Configuration Options1248701 +Node: Configuration Philosophy1251016 +Node: Compiling from Git1253412 +Node: Building the Documentation1253967 +Node: Non-Unix Installation1255351 +Node: PC Installation1255811 +Node: PC Binary Installation1256649 +Node: PC Compiling1257084 +Node: PC Using1258201 +Node: Cygwin1261754 +Node: MSYS1262978 +Node: VMS Installation1263580 +Node: VMS Compilation1264299 +Ref: VMS Compilation-Footnote-11265528 +Node: VMS Dynamic Extensions1265586 +Node: VMS Installation Details1267271 +Node: VMS Running1269533 +Node: VMS GNV1273812 +Node: Bugs1274526 +Node: Bug definition1275438 +Node: Bug address1277942 +Node: Usenet1281330 +Node: Performance bugs1282339 +Node: Asking for help1285260 +Node: Maintainers1287222 +Node: Other Versions1288416 +Node: Installation summary1296268 +Node: Notes1297632 +Node: Compatibility Mode1298426 +Node: Additions1299208 +Node: Accessing The Source1300133 +Node: Adding Code1301570 +Node: New Ports1307789 +Node: Derived Files1312164 +Ref: Derived Files-Footnote-11317824 +Ref: Derived Files-Footnote-21317859 +Ref: Derived Files-Footnote-31318457 +Node: Future Extensions1318571 +Node: Implementation Limitations1319229 +Node: Extension Design1320439 +Node: Old Extension Problems1321583 +Ref: Old Extension Problems-Footnote-11323101 +Node: Extension New Mechanism Goals1323158 +Ref: Extension New Mechanism Goals-Footnote-11326522 +Node: Extension Other Design Decisions1326711 +Node: Extension Future Growth1328824 +Node: Notes summary1329430 +Node: Basic Concepts1330588 +Node: Basic High Level1331269 +Ref: figure-general-flow1331551 +Ref: figure-process-flow1332236 +Ref: Basic High Level-Footnote-11335537 +Node: Basic Data Typing1335722 +Node: Glossary1339050 +Node: Copying1370937 +Node: GNU Free Documentation License1408480 +Node: Index1433600 End Tag Table |