diff options
Diffstat (limited to 'doc/gawk.info')
-rw-r--r-- | doc/gawk.info | 1452 |
1 files changed, 791 insertions, 661 deletions
diff --git a/doc/gawk.info b/doc/gawk.info index 6b183df6..de53a993 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -382,6 +382,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()'. @@ -491,6 +493,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"]. @@ -554,6 +557,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. @@ -3227,7 +3231,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 @@ -7022,8 +7028,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 @@ -12855,6 +12861,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 @@ -12867,7 +12874,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 -------------------------------- @@ -12911,9 +12918,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 @@ -12939,7 +12961,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()' @@ -13037,7 +13059,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 @@ -13622,7 +13644,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. @@ -13768,7 +13790,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 @@ -13985,7 +14007,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 @@ -14302,7 +14324,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. @@ -14484,7 +14506,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 @@ -14508,6 +14530,9 @@ contexts. '"number"' X is a number. + '"number|bool"' + X is a Boolean typed value (*note Boolean Typed Values::). + '"string"' X is a string. @@ -14582,7 +14607,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 @@ -15261,7 +15286,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 @@ -21014,6 +21039,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. @@ -21023,7 +21049,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 =================================== @@ -21066,9 +21092,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 @@ -21087,7 +21157,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 @@ -21326,7 +21396,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 @@ -21471,7 +21541,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 @@ -21666,7 +21736,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': @@ -21746,7 +21816,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 @@ -22008,7 +22078,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 @@ -22044,7 +22114,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 @@ -24401,18 +24471,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. @@ -24471,11 +24533,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 @@ -24568,6 +24625,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 @@ -24632,7 +24690,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 .......................... @@ -24680,6 +24738,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 @@ -25626,7 +25742,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'. @@ -25639,6 +25756,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 @@ -25654,6 +25772,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. @@ -25964,6 +26083,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 @@ -26689,16 +26813,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 @@ -33575,8 +33700,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 @@ -35733,6 +35858,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) @@ -36089,7 +36215,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) @@ -37333,6 +37459,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) @@ -38560,610 +38687,613 @@ Index Tag Table: Node: Top1200 -Node: Foreword345313 -Node: Foreword449755 -Node: Preface51287 -Ref: Preface-Footnote-154146 -Ref: Preface-Footnote-254255 -Ref: Preface-Footnote-354489 -Node: History54631 -Node: Names56983 -Ref: Names-Footnote-158087 -Node: This Manual58234 -Ref: This Manual-Footnote-164873 -Node: Conventions64973 -Node: Manual History67342 -Ref: Manual History-Footnote-170339 -Ref: Manual History-Footnote-270380 -Node: How To Contribute70454 -Node: Acknowledgments71380 -Node: Getting Started76317 -Node: Running gawk78756 -Node: One-shot79946 -Node: Read Terminal81209 -Node: Long83202 -Node: Executable Scripts84715 -Ref: Executable Scripts-Footnote-187348 -Node: Comments87451 -Node: Quoting89935 -Node: DOS Quoting95461 -Node: Sample Data Files97517 -Node: Very Simple100112 -Node: Two Rules106214 -Node: More Complex108099 -Node: Statements/Lines110431 -Ref: Statements/Lines-Footnote-1114915 -Node: Other Features115180 -Node: When116116 -Ref: When-Footnote-1117870 -Node: Intro Summary117935 -Node: Invoking Gawk118819 -Node: Command Line120333 -Node: Options121131 -Ref: Options-Footnote-1139045 -Ref: Options-Footnote-2139276 -Node: Other Arguments139301 -Node: Naming Standard Input143312 -Node: Environment Variables144522 -Node: AWKPATH Variable145080 -Ref: AWKPATH Variable-Footnote-1148492 -Ref: AWKPATH Variable-Footnote-2148526 -Node: AWKLIBPATH Variable148897 -Ref: AWKLIBPATH Variable-Footnote-1150594 -Node: Other Environment Variables150969 -Node: Exit Status154790 -Node: Include Files155467 -Node: Loading Shared Libraries159157 -Node: Obsolete160585 -Node: Undocumented161277 -Node: Invoking Summary161574 -Node: Regexp164415 -Node: Regexp Usage165869 -Node: Escape Sequences167906 -Node: Regexp Operators174147 -Node: Regexp Operator Details174632 -Ref: Regexp Operator Details-Footnote-1181996 -Node: Interval Expressions182143 -Ref: Interval Expressions-Footnote-1184343 -Node: Bracket Expressions184441 -Ref: table-char-classes186917 -Node: Leftmost Longest190243 -Node: Computed Regexps191546 -Node: GNU Regexp Operators194973 -Node: Case-sensitivity198710 -Ref: Case-sensitivity-Footnote-1201576 -Ref: Case-sensitivity-Footnote-2201811 -Node: Regexp Summary201919 -Node: Reading Files203385 -Node: Records205654 -Node: awk split records206729 -Node: gawk split records211429 -Ref: gawk split records-Footnote-1216503 -Node: Fields216540 -Node: Nonconstant Fields219281 -Ref: Nonconstant Fields-Footnote-1221517 -Node: Changing Fields221721 -Node: Field Separators227752 -Node: Default Field Splitting230450 -Node: Regexp Field Splitting231568 -Node: Single Character Fields235245 -Node: Command Line Field Separator236305 -Node: Full Line Fields239523 -Ref: Full Line Fields-Footnote-1241045 -Ref: Full Line Fields-Footnote-2241091 -Node: Field Splitting Summary241192 -Node: Constant Size243266 -Node: Fixed width data243998 -Node: Skipping intervening247465 -Node: Allowing trailing data248263 -Node: Fields with fixed data249300 -Node: Splitting By Content250818 -Ref: Splitting By Content-Footnote-1254654 -Node: More CSV254817 -Node: FS versus FPAT256432 -Node: Testing field creation257592 -Node: Multiple Line259217 -Node: Getline265494 -Node: Plain Getline267963 -Node: Getline/Variable270536 -Node: Getline/File271687 -Node: Getline/Variable/File273075 -Ref: Getline/Variable/File-Footnote-1274680 -Node: Getline/Pipe274768 -Node: Getline/Variable/Pipe277472 -Node: Getline/Coprocess278607 -Node: Getline/Variable/Coprocess279874 -Node: Getline Notes280616 -Node: Getline Summary283413 -Ref: table-getline-variants283837 -Node: Read Timeout284585 -Ref: Read Timeout-Footnote-1288491 -Node: Retrying Input288549 -Node: Command-line directories289748 -Node: Input Summary290654 -Node: Input Exercises293826 -Node: Printing294260 -Node: Print296094 -Node: Print Examples297551 -Node: Output Separators300331 -Node: OFMT302348 -Node: Printf303704 -Node: Basic Printf304489 -Node: Control Letters306063 -Node: Format Modifiers311227 -Node: Printf Examples317242 -Node: Redirection319728 -Node: Special FD326569 -Ref: Special FD-Footnote-1329737 -Node: Special Files329811 -Node: Other Inherited Files330428 -Node: Special Network331429 -Node: Special Caveats332289 -Node: Close Files And Pipes333238 -Ref: table-close-pipe-return-values340145 -Ref: Close Files And Pipes-Footnote-1340958 -Ref: Close Files And Pipes-Footnote-2341106 -Node: Nonfatal341258 -Node: Output Summary343596 -Node: Output Exercises344818 -Node: Expressions345497 -Node: Values346685 -Node: Constants347363 -Node: Scalar Constants348054 -Ref: Scalar Constants-Footnote-1350564 -Node: Nondecimal-numbers350814 -Node: Regexp Constants353815 -Node: Using Constant Regexps354341 -Node: Standard Regexp Constants354963 -Node: Strong Regexp Constants358151 -Node: Variables361864 -Node: Using Variables362521 -Node: Assignment Options364431 -Node: Conversion366902 -Node: Strings And Numbers367426 -Ref: Strings And Numbers-Footnote-1370489 -Node: Locale influences conversions370598 -Ref: table-locale-affects373356 -Node: All Operators373974 -Node: Arithmetic Ops374603 -Node: Concatenation377319 -Ref: Concatenation-Footnote-1380166 -Node: Assignment Ops380273 -Ref: table-assign-ops385264 -Node: Increment Ops386577 -Node: Truth Values and Conditions390037 -Node: Truth Values391111 -Node: Typing and Comparison392159 -Node: Variable Typing392979 -Ref: Variable Typing-Footnote-1399442 -Ref: Variable Typing-Footnote-2399514 -Node: Comparison Operators399591 -Ref: table-relational-ops400010 -Node: POSIX String Comparison403505 -Ref: POSIX String Comparison-Footnote-1405200 -Ref: POSIX String Comparison-Footnote-2405339 -Node: Boolean Ops405423 -Ref: Boolean Ops-Footnote-1409905 -Node: Conditional Exp409997 -Node: Function Calls411733 -Node: Precedence415610 -Node: Locales419269 -Node: Expressions Summary420901 -Node: Patterns and Actions423474 -Node: Pattern Overview424594 -Node: Regexp Patterns426271 -Node: Expression Patterns426813 -Node: Ranges430594 -Node: BEGIN/END433702 -Node: Using BEGIN/END434463 -Ref: Using BEGIN/END-Footnote-1437217 -Node: I/O And BEGIN/END437323 -Node: BEGINFILE/ENDFILE439636 -Node: Empty442867 -Node: Using Shell Variables443184 -Node: Action Overview445458 -Node: Statements447783 -Node: If Statement449631 -Node: While Statement451126 -Node: Do Statement453154 -Node: For Statement454302 -Node: Switch Statement457557 -Node: Break Statement459998 -Node: Continue Statement462090 -Node: Next Statement463917 -Node: Nextfile Statement466300 -Node: Exit Statement468989 -Node: Built-in Variables471392 -Node: User-modified472525 -Node: Auto-set480292 -Ref: Auto-set-Footnote-1497099 -Ref: Auto-set-Footnote-2497305 -Node: ARGC and ARGV497361 -Node: Pattern Action Summary501574 -Node: Arrays504004 -Node: Array Basics505333 -Node: Array Intro506177 -Ref: figure-array-elements508152 -Ref: Array Intro-Footnote-1510856 -Node: Reference to Elements510984 -Node: Assigning Elements513448 -Node: Array Example513939 -Node: Scanning an Array515698 -Node: Controlling Scanning518720 -Ref: Controlling Scanning-Footnote-1525176 -Node: Numeric Array Subscripts525492 -Node: Uninitialized Subscripts527676 -Node: Delete529295 -Ref: Delete-Footnote-1532047 -Node: Multidimensional532104 -Node: Multiscanning535199 -Node: Arrays of Arrays536790 -Node: Arrays Summary541558 -Node: Functions543651 -Node: Built-in544689 -Node: Calling Built-in545770 -Node: Numeric Functions547766 -Ref: Numeric Functions-Footnote-1551794 -Ref: Numeric Functions-Footnote-2552442 -Ref: Numeric Functions-Footnote-3552490 -Node: String Functions552762 -Ref: String Functions-Footnote-1577604 -Ref: String Functions-Footnote-2577732 -Ref: String Functions-Footnote-3577980 -Node: Gory Details578067 -Ref: table-sub-escapes579858 -Ref: table-sub-proposed581377 -Ref: table-posix-sub582740 -Ref: table-gensub-escapes584281 -Ref: Gory Details-Footnote-1585104 -Node: I/O Functions585258 -Ref: table-system-return-values591712 -Ref: I/O Functions-Footnote-1593792 -Ref: I/O Functions-Footnote-2593940 -Node: Time Functions594060 -Ref: Time Functions-Footnote-1604731 -Ref: Time Functions-Footnote-2604799 -Ref: Time Functions-Footnote-3604957 -Ref: Time Functions-Footnote-4605068 -Ref: Time Functions-Footnote-5605180 -Ref: Time Functions-Footnote-6605407 -Node: Bitwise Functions605673 -Ref: table-bitwise-ops606267 -Ref: Bitwise Functions-Footnote-1612330 -Ref: Bitwise Functions-Footnote-2612503 -Node: Type Functions612694 -Node: I18N Functions616023 -Node: User-defined617674 -Node: Definition Syntax618486 -Ref: Definition Syntax-Footnote-1624180 -Node: Function Example624251 -Ref: Function Example-Footnote-1627173 -Node: Function Calling627195 -Node: Calling A Function627783 -Node: Variable Scope628741 -Node: Pass By Value/Reference631735 -Node: Function Caveats634379 -Ref: Function Caveats-Footnote-1636426 -Node: Return Statement636546 -Node: Dynamic Typing639525 -Node: Indirect Calls640455 -Ref: Indirect Calls-Footnote-1650707 -Node: Functions Summary650835 -Node: Library Functions653540 -Ref: Library Functions-Footnote-1657147 -Ref: Library Functions-Footnote-2657290 -Node: Library Names657461 -Ref: Library Names-Footnote-1661128 -Ref: Library Names-Footnote-2661351 -Node: General Functions661437 -Node: Strtonum Function662619 -Node: Assert Function665641 -Node: Round Function668967 -Node: Cliff Random Function670507 -Node: Ordinal Functions671523 -Ref: Ordinal Functions-Footnote-1674586 -Ref: Ordinal Functions-Footnote-2674838 -Node: Join Function675048 -Ref: Join Function-Footnote-1676818 -Node: Getlocaltime Function677018 -Node: Readfile Function680760 -Node: Shell Quoting682737 -Node: Isnumeric Function684165 -Node: Data File Management685553 -Node: Filetrans Function686185 -Node: Rewind Function690281 -Node: File Checking692190 -Ref: File Checking-Footnote-1693524 -Node: Empty Files693725 -Node: Ignoring Assigns695704 -Node: Getopt Function697254 -Ref: Getopt Function-Footnote-1712477 -Node: Passwd Functions712677 -Ref: Passwd Functions-Footnote-1721516 -Node: Group Functions721604 -Ref: Group Functions-Footnote-1729502 -Node: Walking Arrays729709 -Node: Library Functions Summary732717 -Node: Library Exercises734123 -Node: Sample Programs734588 -Node: Running Examples735358 -Node: Clones736086 -Node: Cut Program737310 -Node: Egrep Program747450 -Node: Id Program756451 -Node: Split Program766386 -Ref: Split Program-Footnote-1776279 -Node: Tee Program776452 -Node: Uniq Program779242 -Node: Wc Program786830 -Node: Bytes vs. Characters787217 -Node: Using extensions788765 -Node: wc program789519 -Node: Miscellaneous Programs794384 -Node: Dupword Program795597 -Node: Alarm Program797627 -Node: Translate Program802482 -Ref: Translate Program-Footnote-1807047 -Node: Labels Program807317 -Ref: Labels Program-Footnote-1810668 -Node: Word Sorting810752 -Node: History Sorting814824 -Node: Extract Program817049 -Node: Simple Sed825103 -Node: Igawk Program828177 -Ref: Igawk Program-Footnote-1842508 -Ref: Igawk Program-Footnote-2842710 -Ref: Igawk Program-Footnote-3842832 -Node: Anagram Program842947 -Node: Signature Program846009 -Node: Programs Summary847256 -Node: Programs Exercises848470 -Ref: Programs Exercises-Footnote-1852600 -Node: Advanced Features852686 -Node: Nondecimal Data854753 -Node: Array Sorting856344 -Node: Controlling Array Traversal857044 -Ref: Controlling Array Traversal-Footnote-1865412 -Node: Array Sorting Functions865530 -Ref: Array Sorting Functions-Footnote-1870904 -Node: Two-way I/O871100 -Ref: Two-way I/O-Footnote-1878826 -Ref: Two-way I/O-Footnote-2879013 -Node: TCP/IP Networking879095 -Node: Profiling882213 -Node: Extension Philosophy891522 -Node: Advanced Features Summary893001 -Node: Internationalization895016 -Node: I18N and L10N896690 -Node: Explaining gettext897377 -Ref: Explaining gettext-Footnote-1903269 -Ref: Explaining gettext-Footnote-2903454 -Node: Programmer i18n903619 -Ref: Programmer i18n-Footnote-1908568 -Node: Translator i18n908617 -Node: String Extraction909411 -Ref: String Extraction-Footnote-1910543 -Node: Printf Ordering910629 -Ref: Printf Ordering-Footnote-1913415 -Node: I18N Portability913479 -Ref: I18N Portability-Footnote-1915935 -Node: I18N Example915998 -Ref: I18N Example-Footnote-1919273 -Ref: I18N Example-Footnote-2919346 -Node: Gawk I18N919455 -Node: I18N Summary920104 -Node: Debugger921445 -Node: Debugging922445 -Node: Debugging Concepts922886 -Node: Debugging Terms924695 -Node: Awk Debugging927270 -Ref: Awk Debugging-Footnote-1928215 -Node: Sample Debugging Session928347 -Node: Debugger Invocation928881 -Node: Finding The Bug930267 -Node: List of Debugger Commands936741 -Node: Breakpoint Control938074 -Node: Debugger Execution Control941768 -Node: Viewing And Changing Data945130 -Node: Execution Stack948671 -Node: Debugger Info950308 -Node: Miscellaneous Debugger Commands954379 -Node: Readline Support959441 -Node: Limitations960337 -Node: Debugging Summary962891 -Node: Namespaces964170 -Node: Global Namespace965281 -Node: Qualified Names966679 -Node: Default Namespace967678 -Node: Changing The Namespace968419 -Node: Naming Rules970033 -Node: Internal Name Management971881 -Node: Namespace Example972923 -Node: Namespace And Features975485 -Node: Namespace Summary976920 -Node: Arbitrary Precision Arithmetic978397 -Node: Computer Arithmetic979884 -Ref: table-numeric-ranges983650 -Ref: table-floating-point-ranges984143 -Ref: Computer Arithmetic-Footnote-1984801 -Node: Math Definitions984858 -Ref: table-ieee-formats988174 -Ref: Math Definitions-Footnote-1988777 -Node: MPFR features988882 -Node: FP Math Caution990600 -Ref: FP Math Caution-Footnote-1991672 -Node: Inexactness of computations992041 -Node: Inexact representation993001 -Node: Comparing FP Values994361 -Node: Errors accumulate995602 -Node: Getting Accuracy997035 -Node: Try To Round999745 -Node: Setting precision1000644 -Ref: table-predefined-precision-strings1001341 -Node: Setting the rounding mode1003171 -Ref: table-gawk-rounding-modes1003545 -Ref: Setting the rounding mode-Footnote-11007476 -Node: Arbitrary Precision Integers1007655 -Ref: Arbitrary Precision Integers-Footnote-11010830 -Node: Checking for MPFR1010979 -Node: POSIX Floating Point Problems1012453 -Ref: POSIX Floating Point Problems-Footnote-11016738 -Node: Floating point summary1016776 -Node: Dynamic Extensions1018966 -Node: Extension Intro1020519 -Node: Plugin License1021785 -Node: Extension Mechanism Outline1022582 -Ref: figure-load-extension1023021 -Ref: figure-register-new-function1024586 -Ref: figure-call-new-function1025678 -Node: Extension API Description1027740 -Node: Extension API Functions Introduction1029453 -Ref: table-api-std-headers1031289 -Node: General Data Types1035538 -Ref: General Data Types-Footnote-11044168 -Node: Memory Allocation Functions1044467 -Ref: Memory Allocation Functions-Footnote-11048968 -Node: Constructor Functions1049067 -Node: API Ownership of MPFR and GMP Values1052533 -Node: Registration Functions1053846 -Node: Extension Functions1054546 -Node: Exit Callback Functions1059868 -Node: Extension Version String1061118 -Node: Input Parsers1061781 -Node: Output Wrappers1074502 -Node: Two-way processors1079014 -Node: Printing Messages1081279 -Ref: Printing Messages-Footnote-11082450 -Node: Updating ERRNO1082603 -Node: Requesting Values1083342 -Ref: table-value-types-returned1084079 -Node: Accessing Parameters1085015 -Node: Symbol Table Access1086252 -Node: Symbol table by name1086764 -Ref: Symbol table by name-Footnote-11089789 -Node: Symbol table by cookie1089917 -Ref: Symbol table by cookie-Footnote-11094102 -Node: Cached values1094166 -Ref: Cached values-Footnote-11097702 -Node: Array Manipulation1097855 -Ref: Array Manipulation-Footnote-11098946 -Node: Array Data Types1098983 -Ref: Array Data Types-Footnote-11101641 -Node: Array Functions1101733 -Node: Flattening Arrays1106231 -Node: Creating Arrays1113207 -Node: Redirection API1117974 -Node: Extension API Variables1120807 -Node: Extension Versioning1121518 -Ref: gawk-api-version1121947 -Node: Extension GMP/MPFR Versioning1123678 -Node: Extension API Informational Variables1125306 -Node: Extension API Boilerplate1126379 -Node: Changes from API V11130353 -Node: Finding Extensions1131925 -Node: Extension Example1132484 -Node: Internal File Description1133282 -Node: Internal File Ops1137362 -Ref: Internal File Ops-Footnote-11148712 -Node: Using Internal File Ops1148852 -Ref: Using Internal File Ops-Footnote-11151235 -Node: Extension Samples1151509 -Node: Extension Sample File Functions1153038 -Node: Extension Sample Fnmatch1160687 -Node: Extension Sample Fork1162174 -Node: Extension Sample Inplace1163392 -Node: Extension Sample Ord1167018 -Node: Extension Sample Readdir1167854 -Ref: table-readdir-file-types1168743 -Node: Extension Sample Revout1169810 -Node: Extension Sample Rev2way1170399 -Node: Extension Sample Read write array1171139 -Node: Extension Sample Readfile1173081 -Node: Extension Sample Time1174176 -Node: Extension Sample API Tests1175928 -Node: gawkextlib1176420 -Node: Extension summary1179338 -Node: Extension Exercises1183040 -Node: Language History1184282 -Node: V7/SVR3.11185938 -Node: SVR41188090 -Node: POSIX1189524 -Node: BTL1190905 -Node: POSIX/GNU1191634 -Node: Feature History1197412 -Node: Common Extensions1214587 -Node: Ranges and Locales1215870 -Ref: Ranges and Locales-Footnote-11220486 -Ref: Ranges and Locales-Footnote-21220513 -Ref: Ranges and Locales-Footnote-31220748 -Node: Contributors1220971 -Node: History summary1226968 -Node: Installation1228348 -Node: Gawk Distribution1229292 -Node: Getting1229776 -Node: Extracting1230739 -Node: Distribution contents1232377 -Node: Unix Installation1239520 -Node: Quick Installation1240324 -Node: Compiling with MPFR1242800 -Node: Shell Startup Files1243490 -Node: Additional Configuration Options1244579 -Node: Configuration Philosophy1246894 -Node: Compiling from Git1249290 -Node: Building the Documentation1249845 -Node: Non-Unix Installation1251229 -Node: PC Installation1251689 -Node: PC Binary Installation1252527 -Node: PC Compiling1252962 -Node: PC Using1254079 -Node: Cygwin1257632 -Node: MSYS1258856 -Node: VMS Installation1259458 -Node: VMS Compilation1260177 -Ref: VMS Compilation-Footnote-11261406 -Node: VMS Dynamic Extensions1261464 -Node: VMS Installation Details1263149 -Node: VMS Running1265411 -Node: VMS GNV1269690 -Node: Bugs1270404 -Node: Bug definition1271316 -Node: Bug address1274252 -Node: Usenet1277640 -Node: Performance bugs1278829 -Node: Asking for help1281750 -Node: Maintainers1283717 -Node: Other Versions1284911 -Node: Installation summary1292763 -Node: Notes1294127 -Node: Compatibility Mode1294921 -Node: Additions1295703 -Node: Accessing The Source1296628 -Node: Adding Code1298065 -Node: New Ports1304284 -Node: Derived Files1308659 -Ref: Derived Files-Footnote-11314319 -Ref: Derived Files-Footnote-21314354 -Ref: Derived Files-Footnote-31314952 -Node: Future Extensions1315066 -Node: Implementation Limitations1315724 -Node: Extension Design1316934 -Node: Old Extension Problems1318078 -Ref: Old Extension Problems-Footnote-11319596 -Node: Extension New Mechanism Goals1319653 -Ref: Extension New Mechanism Goals-Footnote-11323017 -Node: Extension Other Design Decisions1323206 -Node: Extension Future Growth1325319 -Node: Notes summary1325925 -Node: Basic Concepts1327083 -Node: Basic High Level1327764 -Ref: figure-general-flow1328046 -Ref: figure-process-flow1328731 -Ref: Basic High Level-Footnote-11332032 -Node: Basic Data Typing1332217 -Node: Glossary1335545 -Node: Copying1367430 -Node: GNU Free Documentation License1404973 -Node: Index1430093 +Node: Foreword345584 +Node: Foreword450026 +Node: Preface51558 +Ref: Preface-Footnote-154417 +Ref: Preface-Footnote-254526 +Ref: Preface-Footnote-354760 +Node: History54902 +Node: Names57254 +Ref: Names-Footnote-158358 +Node: This Manual58505 +Ref: This Manual-Footnote-165144 +Node: Conventions65244 +Node: Manual History67613 +Ref: Manual History-Footnote-170610 +Ref: Manual History-Footnote-270651 +Node: How To Contribute70725 +Node: Acknowledgments71651 +Node: Getting Started76588 +Node: Running gawk79027 +Node: One-shot80217 +Node: Read Terminal81480 +Node: Long83473 +Node: Executable Scripts84986 +Ref: Executable Scripts-Footnote-187619 +Node: Comments87722 +Node: Quoting90206 +Node: DOS Quoting95732 +Node: Sample Data Files97788 +Node: Very Simple100383 +Node: Two Rules106485 +Node: More Complex108370 +Node: Statements/Lines110702 +Ref: Statements/Lines-Footnote-1115186 +Node: Other Features115451 +Node: When116387 +Ref: When-Footnote-1118141 +Node: Intro Summary118206 +Node: Invoking Gawk119090 +Node: Command Line120604 +Node: Options121402 +Ref: Options-Footnote-1139316 +Ref: Options-Footnote-2139547 +Node: Other Arguments139572 +Node: Naming Standard Input143583 +Node: Environment Variables144793 +Node: AWKPATH Variable145351 +Ref: AWKPATH Variable-Footnote-1148763 +Ref: AWKPATH Variable-Footnote-2148797 +Node: AWKLIBPATH Variable149168 +Ref: AWKLIBPATH Variable-Footnote-1150865 +Node: Other Environment Variables151240 +Node: Exit Status155192 +Node: Include Files155869 +Node: Loading Shared Libraries159559 +Node: Obsolete160987 +Node: Undocumented161679 +Node: Invoking Summary161976 +Node: Regexp164817 +Node: Regexp Usage166271 +Node: Escape Sequences168308 +Node: Regexp Operators174549 +Node: Regexp Operator Details175034 +Ref: Regexp Operator Details-Footnote-1182398 +Node: Interval Expressions182545 +Ref: Interval Expressions-Footnote-1184745 +Node: Bracket Expressions184843 +Ref: table-char-classes187319 +Node: Leftmost Longest190645 +Node: Computed Regexps191948 +Node: GNU Regexp Operators195375 +Node: Case-sensitivity199112 +Ref: Case-sensitivity-Footnote-1201978 +Ref: Case-sensitivity-Footnote-2202213 +Node: Regexp Summary202321 +Node: Reading Files203787 +Node: Records206056 +Node: awk split records207131 +Node: gawk split records211831 +Ref: gawk split records-Footnote-1216905 +Node: Fields216942 +Node: Nonconstant Fields219683 +Ref: Nonconstant Fields-Footnote-1221919 +Node: Changing Fields222123 +Node: Field Separators228154 +Node: Default Field Splitting230852 +Node: Regexp Field Splitting231970 +Node: Single Character Fields235647 +Node: Command Line Field Separator236707 +Node: Full Line Fields239925 +Ref: Full Line Fields-Footnote-1241447 +Ref: Full Line Fields-Footnote-2241493 +Node: Field Splitting Summary241594 +Node: Constant Size243668 +Node: Fixed width data244400 +Node: Skipping intervening247867 +Node: Allowing trailing data248665 +Node: Fields with fixed data249702 +Node: Splitting By Content251220 +Ref: Splitting By Content-Footnote-1255056 +Node: More CSV255219 +Node: FS versus FPAT256834 +Node: Testing field creation257994 +Node: Multiple Line259619 +Node: Getline265896 +Node: Plain Getline268365 +Node: Getline/Variable270938 +Node: Getline/File272089 +Node: Getline/Variable/File273477 +Ref: Getline/Variable/File-Footnote-1275082 +Node: Getline/Pipe275170 +Node: Getline/Variable/Pipe277874 +Node: Getline/Coprocess279009 +Node: Getline/Variable/Coprocess280276 +Node: Getline Notes281018 +Node: Getline Summary283815 +Ref: table-getline-variants284239 +Node: Read Timeout284987 +Ref: Read Timeout-Footnote-1288893 +Node: Retrying Input288951 +Node: Command-line directories290150 +Node: Input Summary291056 +Node: Input Exercises294228 +Node: Printing294662 +Node: Print296496 +Node: Print Examples297953 +Node: Output Separators300733 +Node: OFMT302750 +Node: Printf304106 +Node: Basic Printf304891 +Node: Control Letters306465 +Node: Format Modifiers311627 +Node: Printf Examples317642 +Node: Redirection320128 +Node: Special FD326969 +Ref: Special FD-Footnote-1330137 +Node: Special Files330211 +Node: Other Inherited Files330828 +Node: Special Network331829 +Node: Special Caveats332689 +Node: Close Files And Pipes333638 +Ref: table-close-pipe-return-values340545 +Ref: Close Files And Pipes-Footnote-1341358 +Ref: Close Files And Pipes-Footnote-2341506 +Node: Nonfatal341658 +Node: Output Summary343996 +Node: Output Exercises345218 +Node: Expressions345897 +Node: Values347085 +Node: Constants347763 +Node: Scalar Constants348454 +Ref: Scalar Constants-Footnote-1350964 +Node: Nondecimal-numbers351214 +Node: Regexp Constants354215 +Node: Using Constant Regexps354741 +Node: Standard Regexp Constants355363 +Node: Strong Regexp Constants358551 +Node: Variables362264 +Node: Using Variables362921 +Node: Assignment Options364831 +Node: Conversion367302 +Node: Strings And Numbers367826 +Ref: Strings And Numbers-Footnote-1370889 +Node: Locale influences conversions370998 +Ref: table-locale-affects373756 +Node: All Operators374374 +Node: Arithmetic Ops375003 +Node: Concatenation377719 +Ref: Concatenation-Footnote-1380566 +Node: Assignment Ops380673 +Ref: table-assign-ops385664 +Node: Increment Ops386977 +Node: Truth Values and Conditions390437 +Node: Truth Values391511 +Node: Typing and Comparison392559 +Node: Variable Typing393379 +Ref: Variable Typing-Footnote-1399842 +Ref: Variable Typing-Footnote-2399914 +Node: Comparison Operators399991 +Ref: table-relational-ops400410 +Node: POSIX String Comparison403905 +Ref: POSIX String Comparison-Footnote-1405600 +Ref: POSIX String Comparison-Footnote-2405739 +Node: Boolean Ops405823 +Ref: Boolean Ops-Footnote-1410305 +Node: Conditional Exp410397 +Node: Function Calls412133 +Node: Precedence416010 +Node: Locales419669 +Node: Expressions Summary421301 +Node: Patterns and Actions423874 +Node: Pattern Overview424994 +Node: Regexp Patterns426671 +Node: Expression Patterns427213 +Node: Ranges430994 +Node: BEGIN/END434102 +Node: Using BEGIN/END434863 +Ref: Using BEGIN/END-Footnote-1437617 +Node: I/O And BEGIN/END437723 +Node: BEGINFILE/ENDFILE440036 +Node: Empty443267 +Node: Using Shell Variables443584 +Node: Action Overview445858 +Node: Statements448183 +Node: If Statement450031 +Node: While Statement451526 +Node: Do Statement453554 +Node: For Statement454702 +Node: Switch Statement457957 +Node: Break Statement460398 +Node: Continue Statement462490 +Node: Next Statement464317 +Node: Nextfile Statement466700 +Node: Exit Statement469389 +Node: Built-in Variables471792 +Node: User-modified472925 +Node: Auto-set480692 +Ref: Auto-set-Footnote-1497499 +Ref: Auto-set-Footnote-2497705 +Node: ARGC and ARGV497761 +Node: Pattern Action Summary501974 +Node: Arrays504404 +Node: Array Basics505733 +Node: Array Intro506577 +Ref: figure-array-elements508552 +Ref: Array Intro-Footnote-1511256 +Node: Reference to Elements511384 +Node: Assigning Elements513848 +Node: Array Example514339 +Node: Scanning an Array516098 +Node: Controlling Scanning519120 +Ref: Controlling Scanning-Footnote-1525576 +Node: Numeric Array Subscripts525892 +Node: Uninitialized Subscripts528076 +Node: Delete529695 +Ref: Delete-Footnote-1532447 +Node: Multidimensional532504 +Node: Multiscanning535599 +Node: Arrays of Arrays537190 +Node: Arrays Summary541958 +Node: Functions544051 +Node: Built-in545089 +Node: Calling Built-in546242 +Node: Boolean Functions548238 +Node: Numeric Functions548792 +Ref: Numeric Functions-Footnote-1552819 +Ref: Numeric Functions-Footnote-2553467 +Ref: Numeric Functions-Footnote-3553515 +Node: String Functions553787 +Ref: String Functions-Footnote-1578629 +Ref: String Functions-Footnote-2578757 +Ref: String Functions-Footnote-3579005 +Node: Gory Details579092 +Ref: table-sub-escapes580883 +Ref: table-sub-proposed582402 +Ref: table-posix-sub583765 +Ref: table-gensub-escapes585306 +Ref: Gory Details-Footnote-1586129 +Node: I/O Functions586283 +Ref: table-system-return-values592737 +Ref: I/O Functions-Footnote-1594817 +Ref: I/O Functions-Footnote-2594965 +Node: Time Functions595085 +Ref: Time Functions-Footnote-1605756 +Ref: Time Functions-Footnote-2605824 +Ref: Time Functions-Footnote-3605982 +Ref: Time Functions-Footnote-4606093 +Ref: Time Functions-Footnote-5606205 +Ref: Time Functions-Footnote-6606432 +Node: Bitwise Functions606698 +Ref: table-bitwise-ops607292 +Ref: Bitwise Functions-Footnote-1613355 +Ref: Bitwise Functions-Footnote-2613528 +Node: Type Functions613719 +Node: I18N Functions617139 +Node: User-defined618790 +Node: Definition Syntax619602 +Ref: Definition Syntax-Footnote-1625296 +Node: Function Example625367 +Ref: Function Example-Footnote-1628289 +Node: Function Calling628311 +Node: Calling A Function628899 +Node: Variable Scope629857 +Node: Pass By Value/Reference632851 +Node: Function Caveats635495 +Ref: Function Caveats-Footnote-1637542 +Node: Return Statement637662 +Node: Dynamic Typing640641 +Node: Indirect Calls641571 +Ref: Indirect Calls-Footnote-1651826 +Node: Functions Summary651954 +Node: Library Functions654659 +Ref: Library Functions-Footnote-1658266 +Ref: Library Functions-Footnote-2658409 +Node: Library Names658580 +Ref: Library Names-Footnote-1662247 +Ref: Library Names-Footnote-2662470 +Node: General Functions662556 +Node: Strtonum Function663738 +Node: Assert Function666760 +Node: Round Function670086 +Node: Cliff Random Function671626 +Node: Ordinal Functions672642 +Ref: Ordinal Functions-Footnote-1675705 +Ref: Ordinal Functions-Footnote-2675957 +Node: Join Function676167 +Ref: Join Function-Footnote-1677937 +Node: Getlocaltime Function678137 +Node: Readfile Function681879 +Node: Shell Quoting683856 +Node: Isnumeric Function685284 +Node: Data File Management686672 +Node: Filetrans Function687304 +Node: Rewind Function691400 +Node: File Checking693309 +Ref: File Checking-Footnote-1694643 +Node: Empty Files694844 +Node: Ignoring Assigns696823 +Node: Getopt Function698373 +Ref: Getopt Function-Footnote-1713596 +Node: Passwd Functions713796 +Ref: Passwd Functions-Footnote-1722635 +Node: Group Functions722723 +Ref: Group Functions-Footnote-1730621 +Node: Walking Arrays730828 +Node: Library Functions Summary733836 +Node: Library Exercises735242 +Node: Sample Programs735707 +Node: Running Examples736477 +Node: Clones737205 +Node: Cut Program738429 +Node: Egrep Program748569 +Node: Id Program757570 +Node: Split Program767505 +Ref: Split Program-Footnote-1777398 +Node: Tee Program777571 +Node: Uniq Program780361 +Node: Wc Program787949 +Node: Bytes vs. Characters788336 +Node: Using extensions789884 +Node: wc program790638 +Node: Miscellaneous Programs795503 +Node: Dupword Program796716 +Node: Alarm Program798746 +Node: Translate Program803601 +Ref: Translate Program-Footnote-1808166 +Node: Labels Program808436 +Ref: Labels Program-Footnote-1811787 +Node: Word Sorting811871 +Node: History Sorting815943 +Node: Extract Program818168 +Node: Simple Sed826222 +Node: Igawk Program829296 +Ref: Igawk Program-Footnote-1843627 +Ref: Igawk Program-Footnote-2843829 +Ref: Igawk Program-Footnote-3843951 +Node: Anagram Program844066 +Node: Signature Program847128 +Node: Programs Summary848375 +Node: Programs Exercises849589 +Ref: Programs Exercises-Footnote-1853719 +Node: Advanced Features853805 +Node: Nondecimal Data855936 +Node: Boolean Typed Values857534 +Node: Array Sorting859415 +Node: Controlling Array Traversal860120 +Ref: Controlling Array Traversal-Footnote-1868488 +Node: Array Sorting Functions868606 +Ref: Array Sorting Functions-Footnote-1873980 +Node: Two-way I/O874176 +Ref: Two-way I/O-Footnote-1881902 +Ref: Two-way I/O-Footnote-2882089 +Node: TCP/IP Networking882171 +Node: Profiling885289 +Node: Extension Philosophy894598 +Node: Advanced Features Summary896077 +Node: Internationalization898092 +Node: I18N and L10N899766 +Node: Explaining gettext900453 +Ref: Explaining gettext-Footnote-1906345 +Ref: Explaining gettext-Footnote-2906530 +Node: Programmer i18n906695 +Ref: Programmer i18n-Footnote-1911644 +Node: Translator i18n911693 +Node: String Extraction912487 +Ref: String Extraction-Footnote-1913619 +Node: Printf Ordering913705 +Ref: Printf Ordering-Footnote-1916491 +Node: I18N Portability916555 +Ref: I18N Portability-Footnote-1919011 +Node: I18N Example919074 +Ref: I18N Example-Footnote-1922349 +Ref: I18N Example-Footnote-2922422 +Node: Gawk I18N922531 +Node: I18N Summary923180 +Node: Debugger924521 +Node: Debugging925521 +Node: Debugging Concepts925962 +Node: Debugging Terms927771 +Node: Awk Debugging930346 +Ref: Awk Debugging-Footnote-1931291 +Node: Sample Debugging Session931423 +Node: Debugger Invocation931957 +Node: Finding The Bug933343 +Node: List of Debugger Commands939817 +Node: Breakpoint Control941150 +Node: Debugger Execution Control944844 +Node: Viewing And Changing Data948206 +Node: Execution Stack951747 +Node: Debugger Info953384 +Node: Miscellaneous Debugger Commands957455 +Node: Readline Support962517 +Node: Limitations963413 +Node: Debugging Summary965967 +Node: Namespaces967246 +Node: Global Namespace968357 +Node: Qualified Names969755 +Node: Default Namespace970754 +Node: Changing The Namespace971495 +Node: Naming Rules973109 +Node: Internal Name Management974957 +Node: Namespace Example975999 +Node: Namespace And Features978561 +Node: Namespace Summary979996 +Node: Arbitrary Precision Arithmetic981473 +Node: Computer Arithmetic982960 +Ref: table-numeric-ranges986726 +Ref: table-floating-point-ranges987219 +Ref: Computer Arithmetic-Footnote-1987877 +Node: Math Definitions987934 +Ref: table-ieee-formats990910 +Node: MPFR features991477 +Node: FP Math Caution993195 +Ref: FP Math Caution-Footnote-1994267 +Node: Inexactness of computations994636 +Node: Inexact representation995667 +Node: Comparing FP Values997027 +Node: Errors accumulate998268 +Node: Strange values999724 +Ref: Strange values-Footnote-11002312 +Node: Getting Accuracy1002417 +Node: Try To Round1005127 +Node: Setting precision1006026 +Ref: table-predefined-precision-strings1006723 +Node: Setting the rounding mode1008553 +Ref: table-gawk-rounding-modes1008927 +Ref: Setting the rounding mode-Footnote-11012858 +Node: Arbitrary Precision Integers1013037 +Ref: Arbitrary Precision Integers-Footnote-11016212 +Node: Checking for MPFR1016361 +Node: POSIX Floating Point Problems1017835 +Ref: POSIX Floating Point Problems-Footnote-11022120 +Node: Floating point summary1022158 +Node: Dynamic Extensions1024348 +Node: Extension Intro1025901 +Node: Plugin License1027167 +Node: Extension Mechanism Outline1027964 +Ref: figure-load-extension1028403 +Ref: figure-register-new-function1029968 +Ref: figure-call-new-function1031060 +Node: Extension API Description1033122 +Node: Extension API Functions Introduction1034835 +Ref: table-api-std-headers1036671 +Node: General Data Types1040920 +Ref: General Data Types-Footnote-11049626 +Node: Memory Allocation Functions1049925 +Ref: Memory Allocation Functions-Footnote-11054426 +Node: Constructor Functions1054525 +Node: API Ownership of MPFR and GMP Values1058178 +Node: Registration Functions1059491 +Node: Extension Functions1060191 +Node: Exit Callback Functions1065513 +Node: Extension Version String1066763 +Node: Input Parsers1067426 +Node: Output Wrappers1080147 +Node: Two-way processors1084659 +Node: Printing Messages1086924 +Ref: Printing Messages-Footnote-11088095 +Node: Updating ERRNO1088248 +Node: Requesting Values1088987 +Ref: table-value-types-returned1089724 +Node: Accessing Parameters1090832 +Node: Symbol Table Access1092069 +Node: Symbol table by name1092581 +Ref: Symbol table by name-Footnote-11095606 +Node: Symbol table by cookie1095734 +Ref: Symbol table by cookie-Footnote-11099919 +Node: Cached values1099983 +Ref: Cached values-Footnote-11103519 +Node: Array Manipulation1103672 +Ref: Array Manipulation-Footnote-11104763 +Node: Array Data Types1104800 +Ref: Array Data Types-Footnote-11107458 +Node: Array Functions1107550 +Node: Flattening Arrays1112048 +Node: Creating Arrays1119024 +Node: Redirection API1123791 +Node: Extension API Variables1126624 +Node: Extension Versioning1127335 +Ref: gawk-api-version1127764 +Node: Extension GMP/MPFR Versioning1129495 +Node: Extension API Informational Variables1131123 +Node: Extension API Boilerplate1132196 +Node: Changes from API V11136170 +Node: Finding Extensions1137742 +Node: Extension Example1138301 +Node: Internal File Description1139099 +Node: Internal File Ops1143179 +Ref: Internal File Ops-Footnote-11154529 +Node: Using Internal File Ops1154669 +Ref: Using Internal File Ops-Footnote-11157052 +Node: Extension Samples1157326 +Node: Extension Sample File Functions1158855 +Node: Extension Sample Fnmatch1166504 +Node: Extension Sample Fork1167991 +Node: Extension Sample Inplace1169209 +Node: Extension Sample Ord1172835 +Node: Extension Sample Readdir1173671 +Ref: table-readdir-file-types1174560 +Node: Extension Sample Revout1175627 +Node: Extension Sample Rev2way1176216 +Node: Extension Sample Read write array1176956 +Node: Extension Sample Readfile1178898 +Node: Extension Sample Time1179993 +Node: Extension Sample API Tests1181745 +Node: gawkextlib1182237 +Node: Extension summary1185155 +Node: Extension Exercises1188857 +Node: Language History1190099 +Node: V7/SVR3.11191755 +Node: SVR41193907 +Node: POSIX1195341 +Node: BTL1196722 +Node: POSIX/GNU1197451 +Node: Feature History1203229 +Node: Common Extensions1220404 +Node: Ranges and Locales1221687 +Ref: Ranges and Locales-Footnote-11226303 +Ref: Ranges and Locales-Footnote-21226330 +Ref: Ranges and Locales-Footnote-31226565 +Node: Contributors1226788 +Node: History summary1232785 +Node: Installation1234165 +Node: Gawk Distribution1235109 +Node: Getting1235593 +Node: Extracting1236556 +Node: Distribution contents1238194 +Node: Unix Installation1245337 +Node: Quick Installation1246141 +Node: Compiling with MPFR1248617 +Node: Shell Startup Files1249307 +Node: Additional Configuration Options1250396 +Node: Configuration Philosophy1252711 +Node: Compiling from Git1255107 +Node: Building the Documentation1255662 +Node: Non-Unix Installation1257046 +Node: PC Installation1257506 +Node: PC Binary Installation1258344 +Node: PC Compiling1258779 +Node: PC Using1259896 +Node: Cygwin1263449 +Node: MSYS1264673 +Node: VMS Installation1265275 +Node: VMS Compilation1265994 +Ref: VMS Compilation-Footnote-11267223 +Node: VMS Dynamic Extensions1267281 +Node: VMS Installation Details1268966 +Node: VMS Running1271228 +Node: VMS GNV1275507 +Node: Bugs1276221 +Node: Bug definition1277133 +Node: Bug address1280069 +Node: Usenet1283457 +Node: Performance bugs1284646 +Node: Asking for help1287567 +Node: Maintainers1289534 +Node: Other Versions1290728 +Node: Installation summary1298580 +Node: Notes1299944 +Node: Compatibility Mode1300738 +Node: Additions1301520 +Node: Accessing The Source1302445 +Node: Adding Code1303882 +Node: New Ports1310101 +Node: Derived Files1314476 +Ref: Derived Files-Footnote-11320136 +Ref: Derived Files-Footnote-21320171 +Ref: Derived Files-Footnote-31320769 +Node: Future Extensions1320883 +Node: Implementation Limitations1321541 +Node: Extension Design1322751 +Node: Old Extension Problems1323895 +Ref: Old Extension Problems-Footnote-11325413 +Node: Extension New Mechanism Goals1325470 +Ref: Extension New Mechanism Goals-Footnote-11328834 +Node: Extension Other Design Decisions1329023 +Node: Extension Future Growth1331136 +Node: Notes summary1331742 +Node: Basic Concepts1332900 +Node: Basic High Level1333581 +Ref: figure-general-flow1333863 +Ref: figure-process-flow1334548 +Ref: Basic High Level-Footnote-11337849 +Node: Basic Data Typing1338034 +Node: Glossary1341362 +Node: Copying1373249 +Node: GNU Free Documentation License1410792 +Node: Index1435912 End Tag Table |