diff options
-rw-r--r-- | doc/ChangeLog | 5 | ||||
-rw-r--r-- | doc/gawk.info | 1250 | ||||
-rw-r--r-- | doc/gawk.texi | 54 | ||||
-rw-r--r-- | doc/gawktexi.in | 54 |
4 files changed, 728 insertions, 635 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog index d62a3880..702ff6ef 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,8 @@ +2019-03-09 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in (Regexp Operators): Refactor a bit into subsections, + mention that BWK awk now has interval expressions. + 2019-02-28 Arnold D. Robbins <arnold@skeeve.com> * gawktexi.in: Fix a spelling error, change update month. diff --git a/doc/gawk.info b/doc/gawk.info index b8ab270e..b026efc6 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -3647,7 +3647,18 @@ You can combine regular expressions with special characters, called "regular expression operators" or "metacharacters", to increase the power and versatility of regular expressions. - The escape sequences described in *note Escape Sequences:: are valid +* Menu: + +* Regexp Operator Details:: The actual details. +* Interval Expressions:: Notes on interval expressions. + + +File: gawk.info, Node: Regexp Operator Details, Next: Interval Expressions, Up: Regexp Operators + +3.3.1 Regexp Operators in 'awk' +------------------------------- + +The escape sequences described in *note Escape Sequences:: are valid inside a regexp. They are introduced by a '\' and are recognized and converted into corresponding real characters as the very first step in processing regexps. @@ -3772,27 +3783,6 @@ sequences and that are not listed here stand for themselves: 'wh{2,}y' Matches 'whhy', 'whhhy', and so on. - Interval expressions were not traditionally available in 'awk'. - They were added as part of the POSIX standard to make 'awk' and - 'egrep' consistent with each other. - - Initially, because old programs may use '{' and '}' in regexp - constants, 'gawk' did _not_ match interval expressions in regexps. - - However, beginning with version 4.0, 'gawk' does match interval - expressions by default. This is because compatibility with POSIX - has become more important to most 'gawk' users than compatibility - with old programs. - - For programs that use '{' and '}' in regexp constants, it is good - practice to always escape them with a backslash. Then the regexp - constants are valid and work the way you want them to, using any - version of 'awk'.(2) - - Finally, when '{' and '}' appear in regexp constants in a way that - cannot be interpreted as an interval expression (such as '/q{a}/'), - then they stand for themselves. - In regular expressions, the '*', '+', and '?' operators, as well as the braces '{' and '}', have the highest precedence, followed by concatenation, and finally by '|'. As in arithmetic, parentheses can @@ -3803,15 +3793,49 @@ themselves when there is nothing in the regexp that precedes them. For example, '/+/' matches a literal plus sign. However, many other versions of 'awk' treat such a usage as a syntax error. - If 'gawk' is in compatibility mode (*note Options::), interval -expressions are not available in regular expressions. - ---------- Footnotes ---------- (1) In other literature, you may see a bracket expression referred to as either a "character set", a "character class", or a "character list". - (2) Use two backslashes if you're using a string constant with a + +File: gawk.info, Node: Interval Expressions, Prev: Regexp Operator Details, Up: Regexp Operators + +3.3.2 Some Notes On Interval Expressions +---------------------------------------- + +Interval expressions were not traditionally available in 'awk'. They +were added as part of the POSIX standard to make 'awk' and 'egrep' +consistent with each other. + + Initially, because old programs may use '{' and '}' in regexp +constants, 'gawk' did _not_ match interval expressions in regexps. + + However, beginning with version 4.0, 'gawk' does match interval +expressions by default. This is because compatibility with POSIX has +become more important to most 'gawk' users than compatibility with old +programs. + + For programs that use '{' and '}' in regexp constants, it is good +practice to always escape them with a backslash. Then the regexp +constants are valid and work the way you want them to, using any version +of 'awk'.(1) + + Finally, when '{' and '}' appear in regexp constants in a way that +cannot be interpreted as an interval expression (such as '/q{a}/'), then +they stand for themselves. + + As mentioned, interval expressions were not traditionally available +in 'awk'. In March of 2019, Brian Kernighan's 'awk' (finally) acquired +them. + + Nonetheless, because they were not available for so many decades, +'gawk' continues to not supply them when in compatibility mode (*note +Options::). + + ---------- Footnotes ---------- + + (1) Use two backslashes if you're using a string constant with a regexp operator or function. @@ -33561,7 +33585,8 @@ Index * $ (dollar sign), $ field operator <1>: Precedence. (line 42) * $ (dollar sign), incrementing fields and arrays: Increment Ops. (line 30) -* $ (dollar sign), regexp operator: Regexp Operators. (line 35) +* $ (dollar sign), regexp operator: Regexp Operator Details. + (line 31) * % (percent sign), % operator: Precedence. (line 54) * % (percent sign), %= operator: Assignment Ops. (line 129) * % (percent sign), %= operator <1>: Precedence. (line 94) @@ -33575,11 +33600,12 @@ Index * ' (single quote), vs. apostrophe: Comments. (line 27) * ' (single quote), with double quotes: Quoting. (line 73) * () (parentheses), in a profile: Profiling. (line 146) -* () (parentheses), regexp operator: Regexp Operators. (line 81) +* () (parentheses), regexp operator: Regexp Operator Details. + (line 77) * * (asterisk), * operator, as multiplication operator: Precedence. (line 54) -* * (asterisk), * operator, as regexp operator: Regexp Operators. - (line 89) +* * (asterisk), * operator, as regexp operator: Regexp Operator Details. + (line 85) * * (asterisk), * operator, null strings, matching: String Functions. (line 542) * * (asterisk), ** operator: Arithmetic Ops. (line 81) @@ -33595,7 +33621,8 @@ Index * + (plus sign), ++ operator <2>: Precedence. (line 45) * + (plus sign), += operator: Assignment Ops. (line 81) * + (plus sign), += operator <1>: Precedence. (line 94) -* + (plus sign), regexp operator: Regexp Operators. (line 105) +* + (plus sign), regexp operator: Regexp Operator Details. + (line 101) * , (comma), in range patterns: Ranges. (line 6) * - (hyphen), - operator: Precedence. (line 51) * - (hyphen), - operator <1>: Precedence. (line 57) @@ -33693,7 +33720,8 @@ Index * -V option: Options. (line 329) * -v option <1>: Assignment Options. (line 12) * -W option: Options. (line 51) -* . (period), regexp operator: Regexp Operators. (line 44) +* . (period), regexp operator: Regexp Operator Details. + (line 40) * .gmo files: Explaining gettext. (line 42) * .gmo files, specifying directory of: Explaining gettext. (line 54) * .gmo files, specifying directory of <1>: Programmer i18n. (line 48) @@ -33746,7 +33774,8 @@ Index * > (right angle bracket), >> operator (I/O): Redirection. (line 50) * > (right angle bracket), >> operator (I/O) <1>: Precedence. (line 64) * ? (question mark), ?: operator: Precedence. (line 91) -* ? (question mark), regexp operator: Regexp Operators. (line 111) +* ? (question mark), regexp operator: Regexp Operator Details. + (line 107) * ? (question mark), regexp operator <1>: GNU Regexp Operators. (line 62) * @-notation for indirect function calls: Indirect Calls. (line 47) @@ -33757,7 +33786,8 @@ Index (line 6) * @namespace, no effect on BEGIN, BEGINFILE, END, and ENDFILE: Changing The Namespace. (line 37) -* [] (square brackets), regexp operator: Regexp Operators. (line 56) +* [] (square brackets), regexp operator: Regexp Operator Details. + (line 52) * \ (backslash): Comments. (line 50) * \ (backslash), as field separator: Command Line Field Separator. (line 24) @@ -33775,7 +33805,8 @@ Index (line 108) * \ (backslash), in regexp constants: Computed Regexps. (line 30) * \ (backslash), in shell commands: Quoting. (line 48) -* \ (backslash), regexp operator: Regexp Operators. (line 18) +* \ (backslash), regexp operator: Regexp Operator Details. + (line 14) * \ (backslash), \" escape sequence: Escape Sequences. (line 85) * \ (backslash), \' operator (gawk): GNU Regexp Operators. (line 59) @@ -33810,7 +33841,8 @@ Index * ^ (caret), in bracket expressions: Bracket Expressions. (line 25) * ^ (caret), in FS: Regexp Field Splitting. (line 59) -* ^ (caret), regexp operator: Regexp Operators. (line 22) +* ^ (caret), regexp operator: Regexp Operator Details. + (line 18) * ^ (caret), regexp operator <1>: GNU Regexp Operators. (line 62) * ^ (caret), ^ operator: Precedence. (line 48) @@ -33826,7 +33858,8 @@ Index * {} (braces): Profiling. (line 142) * {} (braces), actions and: Action Overview. (line 19) * {} (braces), statements, grouping: Statements. (line 10) -* | (vertical bar): Regexp Operators. (line 70) +* | (vertical bar): Regexp Operator Details. + (line 66) * | (vertical bar), | operator (I/O): Getline/Pipe. (line 10) * | (vertical bar), | operator (I/O) <1>: Redirection. (line 57) * | (vertical bar), | operator (I/O) <2>: Precedence. (line 64) @@ -33986,8 +34019,8 @@ Index * associative arrays: Array Intro. (line 48) * asterisk (*), * operator, as multiplication operator: Precedence. (line 54) -* asterisk (*), * operator, as regexp operator: Regexp Operators. - (line 89) +* asterisk (*), * operator, as regexp operator: Regexp Operator Details. + (line 85) * asterisk (*), * operator, null strings, matching: String Functions. (line 542) * asterisk (*), ** operator: Arithmetic Ops. (line 81) @@ -34082,7 +34115,8 @@ Index (line 108) * backslash (\), in regexp constants: Computed Regexps. (line 30) * backslash (\), in shell commands: Quoting. (line 48) -* backslash (\), regexp operator: Regexp Operators. (line 18) +* backslash (\), regexp operator: Regexp Operator Details. + (line 14) * backslash (\), \" escape sequence: Escape Sequences. (line 85) * backslash (\), \' operator (gawk): GNU Regexp Operators. (line 59) @@ -34178,7 +34212,8 @@ Index * braces ({}): Profiling. (line 142) * braces ({}), actions and: Action Overview. (line 19) * braces ({}), statements, grouping: Statements. (line 10) -* bracket expressions: Regexp Operators. (line 56) +* bracket expressions: Regexp Operator Details. + (line 52) * bracket expressions <1>: Bracket Expressions. (line 6) * bracket expressions, character classes: Bracket Expressions. (line 40) @@ -34186,7 +34221,8 @@ Index (line 90) * bracket expressions, collating symbols: Bracket Expressions. (line 97) -* bracket expressions, complemented: Regexp Operators. (line 64) +* bracket expressions, complemented: Regexp Operator Details. + (line 60) * bracket expressions, equivalence classes: Bracket Expressions. (line 103) * bracket expressions, non-ASCII: Bracket Expressions. (line 90) @@ -34256,7 +34292,8 @@ Index * call stack (debugger): Debugging Terms. (line 10) * call stack, display in debugger: Execution Stack. (line 13) * caret (^), in bracket expressions: Bracket Expressions. (line 25) -* caret (^), regexp operator: Regexp Operators. (line 22) +* caret (^), regexp operator: Regexp Operator Details. + (line 18) * caret (^), regexp operator <1>: GNU Regexp Operators. (line 62) * caret (^), ^ operator: Precedence. (line 48) @@ -34271,16 +34308,17 @@ Index * case sensitivity, regexps and <1>: User-modified. (line 79) * case sensitivity, string comparisons and: User-modified. (line 79) * CGI, awk scripts for: Options. (line 147) -* character classes, See bracket expressions: Regexp Operators. - (line 56) +* character classes, See bracket expressions: Regexp Operator Details. + (line 52) * character lists in regular expressions: Bracket Expressions. (line 6) -* character lists, See bracket expressions: Regexp Operators. (line 56) +* character lists, See bracket expressions: Regexp Operator Details. + (line 52) * character sets (machine character encodings): Ordinal Functions. (line 45) * character sets (machine character encodings) <1>: Glossary. (line 194) -* character sets, See Also bracket expressions: Regexp Operators. - (line 56) +* character sets, See Also bracket expressions: Regexp Operator Details. + (line 52) * characters, counting: Wc Program. (line 6) * characters, transliterating: Translate Program. (line 6) * characters, values of as numbers: Ordinal Functions. (line 6) @@ -34773,7 +34811,8 @@ Index * dollar sign ($), $ field operator <1>: Precedence. (line 42) * dollar sign ($), incrementing fields and arrays: Increment Ops. (line 30) -* dollar sign ($), regexp operator: Regexp Operators. (line 35) +* dollar sign ($), regexp operator: Regexp Operator Details. + (line 31) * double quote ("), in regexp constants: Computed Regexps. (line 30) * double quote ("), in shell commands: Quoting. (line 54) * double-precision: Computer Arithmetic. (line 61) @@ -35242,7 +35281,8 @@ Index (line 13) * gawk, interpreter, adding code to: Using Internal File Ops. (line 6) -* gawk, interval expressions and: Regexp Operators. (line 139) +* gawk, interval expressions and: Interval Expressions. + (line 10) * gawk, line continuation in: Conditional Exp. (line 34) * gawk, LINT variable in: User-modified. (line 90) * gawk, list of contributors to: Contributors. (line 6) @@ -35259,7 +35299,8 @@ Index (line 26) * gawk, regular expressions, operators: GNU Regexp Operators. (line 6) -* gawk, regular expressions, precedence: Regexp Operators. (line 161) +* gawk, regular expressions, precedence: Regexp Operator Details. + (line 136) * gawk, RT variable in: awk split records. (line 131) * gawk, RT variable in <1>: gawk split records. (line 58) * gawk, RT variable in <2>: Multiple Line. (line 130) @@ -35502,7 +35543,8 @@ Index * internationalizing a program: Explaining gettext. (line 6) * interpreted programs: Basic High Level. (line 13) * interpreted programs <1>: Glossary. (line 443) -* interval expressions, regexp operator: Regexp Operators. (line 116) +* interval expressions, regexp operator: Regexp Operator Details. + (line 112) * inventory-shipped file: Sample Data Files. (line 32) * invoke shell command: I/O Functions. (line 106) * isarray: Type Functions. (line 11) @@ -35893,7 +35935,8 @@ Index * Papadopoulos, Panos: Contributors. (line 131) * parent process ID of gawk process: Auto-set. (line 251) * parentheses (), in a profile: Profiling. (line 146) -* parentheses (), regexp operator: Regexp Operators. (line 81) +* parentheses (), regexp operator: Regexp Operator Details. + (line 77) * password file: Passwd Functions. (line 16) * patsplit: String Functions. (line 297) * patterns: Patterns and Actions. @@ -35917,7 +35960,8 @@ Index * percent sign (%), % operator: Precedence. (line 54) * percent sign (%), %= operator: Assignment Ops. (line 129) * percent sign (%), %= operator <1>: Precedence. (line 94) -* period (.), regexp operator: Regexp Operators. (line 44) +* period (.), regexp operator: Regexp Operator Details. + (line 40) * Perl: Future Extensions. (line 6) * Peters, Arno: Contributors. (line 88) * Peterson, Hal: Contributors. (line 40) @@ -35937,7 +35981,8 @@ Index * plus sign (+), ++ operator <2>: Precedence. (line 45) * plus sign (+), += operator: Assignment Ops. (line 81) * plus sign (+), += operator <1>: Precedence. (line 94) -* plus sign (+), regexp operator: Regexp Operators. (line 105) +* plus sign (+), regexp operator: Regexp Operator Details. + (line 101) * pointers to functions: Indirect Calls. (line 6) * portability: Escape Sequences. (line 103) * portability, #! (executable scripts): Executable Scripts. (line 33) @@ -36002,14 +36047,17 @@ Index * POSIX awk, functions and, gsub()/sub(): Gory Details. (line 90) * POSIX awk, functions and, length(): String Functions. (line 180) * POSIX awk, GNU long options and: Options. (line 15) -* POSIX awk, interval expressions in: Regexp Operators. (line 135) +* POSIX awk, interval expressions in: Interval Expressions. + (line 6) * POSIX awk, next/nextfile statements and: Next Statement. (line 44) * POSIX awk, numeric strings and: Variable Typing. (line 67) * POSIX awk, OFMT variable and: OFMT. (line 27) * POSIX awk, OFMT variable and <1>: Strings And Numbers. (line 56) -* POSIX awk, period (.), using: Regexp Operators. (line 51) +* POSIX awk, period (.), using: Regexp Operator Details. + (line 47) * POSIX awk, printf format strings and: Format Modifiers. (line 157) -* POSIX awk, regular expressions and: Regexp Operators. (line 161) +* POSIX awk, regular expressions and: Regexp Operator Details. + (line 136) * POSIX awk, timestamps and: Time Functions. (line 6) * POSIX awk, | I/O operator and: Getline/Pipe. (line 56) * POSIX mode: Options. (line 282) @@ -36021,7 +36069,8 @@ Index * PREC variable: User-modified. (line 127) * precedence: Increment Ops. (line 60) * precedence <1>: Precedence. (line 6) -* precedence, regexp operators: Regexp Operators. (line 156) +* precedence, regexp operators: Regexp Operator Details. + (line 131) * predefined variables: Built-in Variables. (line 6) * predefined variables, -v option, setting with: Options. (line 45) * predefined variables, conveying information: Auto-set. (line 6) @@ -36121,7 +36170,8 @@ Index * qualified name, use of: Qualified Names. (line 17) * Quanstrom, Erik: Alarm Program. (line 8) * question mark (?), ?: operator: Precedence. (line 91) -* question mark (?), regexp operator: Regexp Operators. (line 111) +* question mark (?), regexp operator: Regexp Operator Details. + (line 107) * question mark (?), regexp operator <1>: GNU Regexp Operators. (line 62) * QuikTrim Awk: Other Versions. (line 143) @@ -36195,7 +36245,8 @@ Index * register extension: Registration Functions. (line 6) * regular expressions: Regexp. (line 6) -* regular expressions, anchors in: Regexp Operators. (line 22) +* regular expressions, anchors in: Regexp Operator Details. + (line 18) * regular expressions, as field separators: Field Separators. (line 50) * regular expressions, as field separators <1>: Regexp Field Splitting. (line 6) @@ -36224,8 +36275,8 @@ Index (line 6) * regular expressions, operators, gawk: GNU Regexp Operators. (line 6) -* regular expressions, operators, precedence of: Regexp Operators. - (line 156) +* regular expressions, operators, precedence of: Regexp Operator Details. + (line 131) * regular expressions, searching for: Egrep Program. (line 6) * relational operators, See comparison operators: Typing and Comparison. (line 9) @@ -36485,7 +36536,8 @@ Index * sprintf() function, print/printf statements and: Round Function. (line 6) * sqrt: Numeric Functions. (line 78) -* square brackets ([]), regexp operator: Regexp Operators. (line 56) +* square brackets ([]), regexp operator: Regexp Operator Details. + (line 52) * square root: Numeric Functions. (line 78) * srand: Numeric Functions. (line 82) * stack frame (debugger): Debugging Terms. (line 10) @@ -36586,7 +36638,8 @@ Index * Texinfo <4>: Distribution contents. (line 83) * Texinfo <5>: Adding Code. (line 100) -* Texinfo, chapter beginnings in files: Regexp Operators. (line 22) +* Texinfo, chapter beginnings in files: Regexp Operator Details. + (line 18) * Texinfo, extracting programs from source files: Extract Program. (line 6) * text, printing: Print. (line 22) @@ -36750,7 +36803,8 @@ Index * version of gawk extension API: Auto-set. (line 287) * version of GNU MP library: Auto-set. (line 270) * version of GNU MPFR library: Auto-set. (line 272) -* vertical bar (|): Regexp Operators. (line 70) +* vertical bar (|): Regexp Operator Details. + (line 66) * vertical bar (|), | operator (I/O): Getline/Pipe. (line 10) * vertical bar (|), | operator (I/O) <1>: Precedence. (line 64) * vertical bar (|), |& operator (I/O): Getline/Coprocess. (line 6) @@ -36875,536 +36929,538 @@ Node: Regexp159037 Node: Regexp Usage160491 Node: Escape Sequences162528 Node: Regexp Operators168760 -Ref: Regexp Operators-Footnote-1176176 -Ref: Regexp Operators-Footnote-2176323 -Node: Bracket Expressions176421 -Ref: table-char-classes178897 -Node: Leftmost Longest182223 -Node: Computed Regexps183526 -Node: GNU Regexp Operators186953 -Node: Case-sensitivity190632 -Ref: Case-sensitivity-Footnote-1193519 -Ref: Case-sensitivity-Footnote-2193754 -Node: Regexp Summary193862 -Node: Reading Files195328 -Node: Records197597 -Node: awk split records198672 -Node: gawk split records203947 -Ref: gawk split records-Footnote-1208533 -Node: Fields208570 -Node: Nonconstant Fields211311 -Ref: Nonconstant Fields-Footnote-1213547 -Node: Changing Fields213751 -Node: Field Separators219782 -Node: Default Field Splitting222480 -Node: Regexp Field Splitting223598 -Node: Single Character Fields226951 -Node: Command Line Field Separator228011 -Node: Full Line Fields231229 -Ref: Full Line Fields-Footnote-1232751 -Ref: Full Line Fields-Footnote-2232797 -Node: Field Splitting Summary232898 -Node: Constant Size234972 -Node: Fixed width data235704 -Node: Skipping intervening239171 -Node: Allowing trailing data239969 -Node: Fields with fixed data241006 -Node: Splitting By Content242524 -Ref: Splitting By Content-Footnote-1246174 -Node: Testing field creation246337 -Node: Multiple Line247962 -Ref: Multiple Line-Footnote-1253846 -Node: Getline254025 -Node: Plain Getline256494 -Node: Getline/Variable259135 -Node: Getline/File260286 -Node: Getline/Variable/File261674 -Ref: Getline/Variable/File-Footnote-1263279 -Node: Getline/Pipe263367 -Node: Getline/Variable/Pipe266074 -Node: Getline/Coprocess267209 -Node: Getline/Variable/Coprocess268476 -Node: Getline Notes269218 -Node: Getline Summary272015 -Ref: table-getline-variants272439 -Node: Read Timeout273187 -Ref: Read Timeout-Footnote-1277093 -Node: Retrying Input277151 -Node: Command-line directories278350 -Node: Input Summary279256 -Node: Input Exercises282428 -Node: Printing283156 -Node: Print284990 -Node: Print Examples286447 -Node: Output Separators289227 -Node: OFMT291244 -Node: Printf292600 -Node: Basic Printf293385 -Node: Control Letters294959 -Node: Format Modifiers300123 -Node: Printf Examples306138 -Node: Redirection308624 -Node: Special FD315465 -Ref: Special FD-Footnote-1318633 -Node: Special Files318707 -Node: Other Inherited Files319324 -Node: Special Network320325 -Node: Special Caveats321185 -Node: Close Files And Pipes322134 -Ref: table-close-pipe-return-values329041 -Ref: Close Files And Pipes-Footnote-1329854 -Ref: Close Files And Pipes-Footnote-2330002 -Node: Nonfatal330154 -Node: Output Summary332492 -Node: Output Exercises333714 -Node: Expressions334393 -Node: Values335581 -Node: Constants336259 -Node: Scalar Constants336950 -Ref: Scalar Constants-Footnote-1339474 -Node: Nondecimal-numbers339724 -Node: Regexp Constants342725 -Node: Using Constant Regexps343251 -Node: Standard Regexp Constants343873 -Node: Strong Regexp Constants347061 -Node: Variables350019 -Node: Using Variables350676 -Node: Assignment Options352586 -Node: Conversion355053 -Node: Strings And Numbers355577 -Ref: Strings And Numbers-Footnote-1358640 -Node: Locale influences conversions358749 -Ref: table-locale-affects361507 -Node: All Operators362125 -Node: Arithmetic Ops362754 -Node: Concatenation365260 -Ref: Concatenation-Footnote-1368107 -Node: Assignment Ops368214 -Ref: table-assign-ops373205 -Node: Increment Ops374518 -Node: Truth Values and Conditions377978 -Node: Truth Values379052 -Node: Typing and Comparison380100 -Node: Variable Typing380920 -Ref: Variable Typing-Footnote-1387383 -Ref: Variable Typing-Footnote-2387455 -Node: Comparison Operators387532 -Ref: table-relational-ops387951 -Node: POSIX String Comparison391446 -Ref: POSIX String Comparison-Footnote-1393141 -Ref: POSIX String Comparison-Footnote-2393280 -Node: Boolean Ops393364 -Ref: Boolean Ops-Footnote-1397846 -Node: Conditional Exp397938 -Node: Function Calls399674 -Node: Precedence403551 -Node: Locales407210 -Node: Expressions Summary408842 -Node: Patterns and Actions411415 -Node: Pattern Overview412535 -Node: Regexp Patterns414212 -Node: Expression Patterns414754 -Node: Ranges418535 -Node: BEGIN/END421643 -Node: Using BEGIN/END422404 -Ref: Using BEGIN/END-Footnote-1425140 -Node: I/O And BEGIN/END425246 -Node: BEGINFILE/ENDFILE427560 -Node: Empty430473 -Node: Using Shell Variables430790 -Node: Action Overview433064 -Node: Statements435389 -Node: If Statement437237 -Node: While Statement438732 -Node: Do Statement440760 -Node: For Statement441908 -Node: Switch Statement445079 -Node: Break Statement447465 -Node: Continue Statement449557 -Node: Next Statement451384 -Node: Nextfile Statement453767 -Node: Exit Statement456419 -Node: Built-in Variables458822 -Node: User-modified459955 -Node: Auto-set467722 -Ref: Auto-set-Footnote-1484529 -Ref: Auto-set-Footnote-2484735 -Node: ARGC and ARGV484791 -Node: Pattern Action Summary489004 -Node: Arrays491434 -Node: Array Basics492763 -Node: Array Intro493607 -Ref: figure-array-elements495582 -Ref: Array Intro-Footnote-1498286 -Node: Reference to Elements498414 -Node: Assigning Elements500878 -Node: Array Example501369 -Node: Scanning an Array503128 -Node: Controlling Scanning506150 -Ref: Controlling Scanning-Footnote-1511549 -Node: Numeric Array Subscripts511865 -Node: Uninitialized Subscripts514049 -Node: Delete515668 -Ref: Delete-Footnote-1518420 -Node: Multidimensional518477 -Node: Multiscanning521572 -Node: Arrays of Arrays523163 -Node: Arrays Summary527931 -Node: Functions530024 -Node: Built-in531062 -Node: Calling Built-in532143 -Node: Numeric Functions534139 -Ref: Numeric Functions-Footnote-1538167 -Ref: Numeric Functions-Footnote-2538812 -Ref: Numeric Functions-Footnote-3538860 -Node: String Functions539132 -Ref: String Functions-Footnote-1562990 -Ref: String Functions-Footnote-2563118 -Ref: String Functions-Footnote-3563366 -Node: Gory Details563453 -Ref: table-sub-escapes565244 -Ref: table-sub-proposed566763 -Ref: table-posix-sub568126 -Ref: table-gensub-escapes569667 -Ref: Gory Details-Footnote-1570490 -Node: I/O Functions570644 -Ref: table-system-return-values577112 -Ref: I/O Functions-Footnote-1579192 -Ref: I/O Functions-Footnote-2579340 -Node: Time Functions579460 -Ref: Time Functions-Footnote-1590131 -Ref: Time Functions-Footnote-2590199 -Ref: Time Functions-Footnote-3590357 -Ref: Time Functions-Footnote-4590468 -Ref: Time Functions-Footnote-5590580 -Ref: Time Functions-Footnote-6590807 -Node: Bitwise Functions591073 -Ref: table-bitwise-ops591667 -Ref: Bitwise Functions-Footnote-1597730 -Ref: Bitwise Functions-Footnote-2597903 -Node: Type Functions598094 -Node: I18N Functions600845 -Node: User-defined602496 -Node: Definition Syntax603308 -Ref: Definition Syntax-Footnote-1608995 -Node: Function Example609066 -Ref: Function Example-Footnote-1611988 -Node: Function Calling612010 -Node: Calling A Function612598 -Node: Variable Scope613556 -Node: Pass By Value/Reference616550 -Node: Function Caveats619194 -Ref: Function Caveats-Footnote-1621241 -Node: Return Statement621361 -Node: Dynamic Typing624340 -Node: Indirect Calls625270 -Ref: Indirect Calls-Footnote-1635522 -Node: Functions Summary635650 -Node: Library Functions638355 -Ref: Library Functions-Footnote-1641962 -Ref: Library Functions-Footnote-2642105 -Node: Library Names642276 -Ref: Library Names-Footnote-1645943 -Ref: Library Names-Footnote-2646166 -Node: General Functions646252 -Node: Strtonum Function647355 -Node: Assert Function650377 -Node: Round Function653703 -Node: Cliff Random Function655243 -Node: Ordinal Functions656259 -Ref: Ordinal Functions-Footnote-1659322 -Ref: Ordinal Functions-Footnote-2659574 -Node: Join Function659784 -Ref: Join Function-Footnote-1661554 -Node: Getlocaltime Function661754 -Node: Readfile Function665496 -Node: Shell Quoting667473 -Node: Data File Management668874 -Node: Filetrans Function669506 -Node: Rewind Function673602 -Node: File Checking675511 -Ref: File Checking-Footnote-1676845 -Node: Empty Files677046 -Node: Ignoring Assigns679025 -Node: Getopt Function680575 -Ref: Getopt Function-Footnote-1692044 -Node: Passwd Functions692244 -Ref: Passwd Functions-Footnote-1701083 -Node: Group Functions701171 -Ref: Group Functions-Footnote-1709069 -Node: Walking Arrays709276 -Node: Library Functions Summary712284 -Node: Library Exercises713690 -Node: Sample Programs714155 -Node: Running Examples714925 -Node: Clones715653 -Node: Cut Program716877 -Node: Egrep Program726806 -Ref: Egrep Program-Footnote-1734318 -Node: Id Program734428 -Node: Split Program738108 -Ref: Split Program-Footnote-1741566 -Node: Tee Program741695 -Node: Uniq Program744485 -Node: Wc Program752106 -Ref: Wc Program-Footnote-1756361 -Node: Miscellaneous Programs756455 -Node: Dupword Program757668 -Node: Alarm Program759698 -Node: Translate Program764553 -Ref: Translate Program-Footnote-1769118 -Node: Labels Program769388 -Ref: Labels Program-Footnote-1772739 -Node: Word Sorting772823 -Node: History Sorting776895 -Node: Extract Program778730 -Node: Simple Sed786784 -Node: Igawk Program789858 -Ref: Igawk Program-Footnote-1804189 -Ref: Igawk Program-Footnote-2804391 -Ref: Igawk Program-Footnote-3804513 -Node: Anagram Program804628 -Node: Signature Program807690 -Node: Programs Summary808937 -Node: Programs Exercises810151 -Ref: Programs Exercises-Footnote-1814280 -Node: Advanced Features814371 -Node: Nondecimal Data816361 -Node: Array Sorting817952 -Node: Controlling Array Traversal818652 -Ref: Controlling Array Traversal-Footnote-1827020 -Node: Array Sorting Functions827138 -Ref: Array Sorting Functions-Footnote-1832229 -Node: Two-way I/O832425 -Ref: Two-way I/O-Footnote-1840146 -Ref: Two-way I/O-Footnote-2840333 -Node: TCP/IP Networking840415 -Node: Profiling843533 -Node: Advanced Features Summary852551 -Node: Internationalization854395 -Node: I18N and L10N855875 -Node: Explaining gettext856562 -Ref: Explaining gettext-Footnote-1862454 -Ref: Explaining gettext-Footnote-2862639 -Node: Programmer i18n862804 -Ref: Programmer i18n-Footnote-1867753 -Node: Translator i18n867802 -Node: String Extraction868596 -Ref: String Extraction-Footnote-1869728 -Node: Printf Ordering869814 -Ref: Printf Ordering-Footnote-1872600 -Node: I18N Portability872664 -Ref: I18N Portability-Footnote-1875120 -Node: I18N Example875183 -Ref: I18N Example-Footnote-1878458 -Ref: I18N Example-Footnote-2878531 -Node: Gawk I18N878640 -Node: I18N Summary879285 -Node: Debugger880626 -Node: Debugging881626 -Node: Debugging Concepts882067 -Node: Debugging Terms883876 -Node: Awk Debugging886451 -Ref: Awk Debugging-Footnote-1887396 -Node: Sample Debugging Session887528 -Node: Debugger Invocation888062 -Node: Finding The Bug889448 -Node: List of Debugger Commands895922 -Node: Breakpoint Control897255 -Node: Debugger Execution Control900949 -Node: Viewing And Changing Data904311 -Node: Execution Stack907852 -Node: Debugger Info909489 -Node: Miscellaneous Debugger Commands913560 -Node: Readline Support918622 -Node: Limitations919518 -Node: Debugging Summary921627 -Node: Namespaces922906 -Node: Global Namespace923985 -Node: Qualified Names925383 -Node: Default Namespace926382 -Node: Changing The Namespace927123 -Node: Naming Rules928737 -Node: Internal Name Management930585 -Node: Namespace Example931627 -Node: Namespace And Features934189 -Node: Namespace Summary935624 -Node: Arbitrary Precision Arithmetic937101 -Node: Computer Arithmetic938588 -Ref: table-numeric-ranges942354 -Ref: table-floating-point-ranges942847 -Ref: Computer Arithmetic-Footnote-1943505 -Node: Math Definitions943562 -Ref: table-ieee-formats946878 -Ref: Math Definitions-Footnote-1947481 -Node: MPFR features947586 -Node: FP Math Caution949304 -Ref: FP Math Caution-Footnote-1950376 -Node: Inexactness of computations950745 -Node: Inexact representation951705 -Node: Comparing FP Values953065 -Node: Errors accumulate954306 -Node: Getting Accuracy955739 -Node: Try To Round958449 -Node: Setting precision959348 -Ref: table-predefined-precision-strings960045 -Node: Setting the rounding mode961875 -Ref: table-gawk-rounding-modes962249 -Ref: Setting the rounding mode-Footnote-1966180 -Node: Arbitrary Precision Integers966359 -Ref: Arbitrary Precision Integers-Footnote-1969534 -Node: Checking for MPFR969683 -Node: POSIX Floating Point Problems971157 -Ref: POSIX Floating Point Problems-Footnote-1975442 -Node: Floating point summary975480 -Node: Dynamic Extensions977670 -Node: Extension Intro979223 -Node: Plugin License980489 -Node: Extension Mechanism Outline981286 -Ref: figure-load-extension981725 -Ref: figure-register-new-function983290 -Ref: figure-call-new-function984382 -Node: Extension API Description986444 -Node: Extension API Functions Introduction988086 -Ref: table-api-std-headers989922 -Node: General Data Types993787 -Ref: General Data Types-Footnote-11002148 -Node: Memory Allocation Functions1002447 -Ref: Memory Allocation Functions-Footnote-11006657 -Node: Constructor Functions1006756 -Node: Registration Functions1010342 -Node: Extension Functions1011027 -Node: Exit Callback Functions1016349 -Node: Extension Version String1017599 -Node: Input Parsers1018262 -Node: Output Wrappers1030983 -Node: Two-way processors1035495 -Node: Printing Messages1037760 -Ref: Printing Messages-Footnote-11038931 -Node: Updating ERRNO1039084 -Node: Requesting Values1039823 -Ref: table-value-types-returned1040560 -Node: Accessing Parameters1041496 -Node: Symbol Table Access1042731 -Node: Symbol table by name1043243 -Ref: Symbol table by name-Footnote-11046267 -Node: Symbol table by cookie1046395 -Ref: Symbol table by cookie-Footnote-11050580 -Node: Cached values1050644 -Ref: Cached values-Footnote-11054180 -Node: Array Manipulation1054333 -Ref: Array Manipulation-Footnote-11055424 -Node: Array Data Types1055461 -Ref: Array Data Types-Footnote-11058119 -Node: Array Functions1058211 -Node: Flattening Arrays1062709 -Node: Creating Arrays1069685 -Node: Redirection API1074452 -Node: Extension API Variables1077285 -Node: Extension Versioning1077996 -Ref: gawk-api-version1078425 -Node: Extension GMP/MPFR Versioning1080156 -Node: Extension API Informational Variables1081784 -Node: Extension API Boilerplate1082857 -Node: Changes from API V11086831 -Node: Finding Extensions1088403 -Node: Extension Example1088962 -Node: Internal File Description1089760 -Node: Internal File Ops1093840 -Ref: Internal File Ops-Footnote-11105190 -Node: Using Internal File Ops1105330 -Ref: Using Internal File Ops-Footnote-11107713 -Node: Extension Samples1107987 -Node: Extension Sample File Functions1109516 -Node: Extension Sample Fnmatch1117165 -Node: Extension Sample Fork1118652 -Node: Extension Sample Inplace1119870 -Node: Extension Sample Ord1123174 -Node: Extension Sample Readdir1124010 -Ref: table-readdir-file-types1124899 -Node: Extension Sample Revout1125704 -Node: Extension Sample Rev2way1126293 -Node: Extension Sample Read write array1127033 -Node: Extension Sample Readfile1128975 -Node: Extension Sample Time1130070 -Node: Extension Sample API Tests1131418 -Node: gawkextlib1131910 -Node: Extension summary1134828 -Node: Extension Exercises1138530 -Node: Language History1139772 -Node: V7/SVR3.11141428 -Node: SVR41143580 -Node: POSIX1145014 -Node: BTL1146394 -Node: POSIX/GNU1147123 -Node: Feature History1152901 -Node: Common Extensions1168947 -Node: Ranges and Locales1170230 -Ref: Ranges and Locales-Footnote-11174846 -Ref: Ranges and Locales-Footnote-21174873 -Ref: Ranges and Locales-Footnote-31175108 -Node: Contributors1175329 -Node: History summary1181274 -Node: Installation1182654 -Node: Gawk Distribution1183598 -Node: Getting1184082 -Node: Extracting1185045 -Node: Distribution contents1186683 -Node: Unix Installation1193163 -Node: Quick Installation1193845 -Node: Shell Startup Files1196259 -Node: Additional Configuration Options1197348 -Node: Configuration Philosophy1199513 -Node: Non-Unix Installation1201882 -Node: PC Installation1202342 -Node: PC Binary Installation1203180 -Node: PC Compiling1203615 -Node: PC Using1204732 -Node: Cygwin1208285 -Node: MSYS1209384 -Node: VMS Installation1209885 -Node: VMS Compilation1210676 -Ref: VMS Compilation-Footnote-11211905 -Node: VMS Dynamic Extensions1211963 -Node: VMS Installation Details1213648 -Node: VMS Running1215901 -Node: VMS GNV1220180 -Node: VMS Old Gawk1220915 -Node: Bugs1221386 -Node: Bug address1222049 -Node: Usenet1225031 -Node: Maintainers1226035 -Node: Other Versions1227296 -Node: Installation summary1234210 -Node: Notes1235412 -Node: Compatibility Mode1236206 -Node: Additions1236988 -Node: Accessing The Source1237913 -Node: Adding Code1239350 -Node: New Ports1245569 -Node: Derived Files1250057 -Ref: Derived Files-Footnote-11255703 -Ref: Derived Files-Footnote-21255738 -Ref: Derived Files-Footnote-31256336 -Node: Future Extensions1256450 -Node: Implementation Limitations1257108 -Node: Extension Design1258291 -Node: Old Extension Problems1259435 -Ref: Old Extension Problems-Footnote-11260953 -Node: Extension New Mechanism Goals1261010 -Ref: Extension New Mechanism Goals-Footnote-11264374 -Node: Extension Other Design Decisions1264563 -Node: Extension Future Growth1266676 -Node: Notes summary1267512 -Node: Basic Concepts1268687 -Node: Basic High Level1269368 -Ref: figure-general-flow1269650 -Ref: figure-process-flow1270335 -Ref: Basic High Level-Footnote-11273636 -Node: Basic Data Typing1273821 -Node: Glossary1277149 -Node: Copying1308987 -Node: GNU Free Documentation License1346530 -Node: Index1371650 +Node: Regexp Operator Details169245 +Ref: Regexp Operator Details-Footnote-1175367 +Node: Interval Expressions175514 +Ref: Interval Expressions-Footnote-1176949 +Node: Bracket Expressions177047 +Ref: table-char-classes179523 +Node: Leftmost Longest182849 +Node: Computed Regexps184152 +Node: GNU Regexp Operators187579 +Node: Case-sensitivity191258 +Ref: Case-sensitivity-Footnote-1194145 +Ref: Case-sensitivity-Footnote-2194380 +Node: Regexp Summary194488 +Node: Reading Files195954 +Node: Records198223 +Node: awk split records199298 +Node: gawk split records204573 +Ref: gawk split records-Footnote-1209159 +Node: Fields209196 +Node: Nonconstant Fields211937 +Ref: Nonconstant Fields-Footnote-1214173 +Node: Changing Fields214377 +Node: Field Separators220408 +Node: Default Field Splitting223106 +Node: Regexp Field Splitting224224 +Node: Single Character Fields227577 +Node: Command Line Field Separator228637 +Node: Full Line Fields231855 +Ref: Full Line Fields-Footnote-1233377 +Ref: Full Line Fields-Footnote-2233423 +Node: Field Splitting Summary233524 +Node: Constant Size235598 +Node: Fixed width data236330 +Node: Skipping intervening239797 +Node: Allowing trailing data240595 +Node: Fields with fixed data241632 +Node: Splitting By Content243150 +Ref: Splitting By Content-Footnote-1246800 +Node: Testing field creation246963 +Node: Multiple Line248588 +Ref: Multiple Line-Footnote-1254472 +Node: Getline254651 +Node: Plain Getline257120 +Node: Getline/Variable259761 +Node: Getline/File260912 +Node: Getline/Variable/File262300 +Ref: Getline/Variable/File-Footnote-1263905 +Node: Getline/Pipe263993 +Node: Getline/Variable/Pipe266700 +Node: Getline/Coprocess267835 +Node: Getline/Variable/Coprocess269102 +Node: Getline Notes269844 +Node: Getline Summary272641 +Ref: table-getline-variants273065 +Node: Read Timeout273813 +Ref: Read Timeout-Footnote-1277719 +Node: Retrying Input277777 +Node: Command-line directories278976 +Node: Input Summary279882 +Node: Input Exercises283054 +Node: Printing283782 +Node: Print285616 +Node: Print Examples287073 +Node: Output Separators289853 +Node: OFMT291870 +Node: Printf293226 +Node: Basic Printf294011 +Node: Control Letters295585 +Node: Format Modifiers300749 +Node: Printf Examples306764 +Node: Redirection309250 +Node: Special FD316091 +Ref: Special FD-Footnote-1319259 +Node: Special Files319333 +Node: Other Inherited Files319950 +Node: Special Network320951 +Node: Special Caveats321811 +Node: Close Files And Pipes322760 +Ref: table-close-pipe-return-values329667 +Ref: Close Files And Pipes-Footnote-1330480 +Ref: Close Files And Pipes-Footnote-2330628 +Node: Nonfatal330780 +Node: Output Summary333118 +Node: Output Exercises334340 +Node: Expressions335019 +Node: Values336207 +Node: Constants336885 +Node: Scalar Constants337576 +Ref: Scalar Constants-Footnote-1340100 +Node: Nondecimal-numbers340350 +Node: Regexp Constants343351 +Node: Using Constant Regexps343877 +Node: Standard Regexp Constants344499 +Node: Strong Regexp Constants347687 +Node: Variables350645 +Node: Using Variables351302 +Node: Assignment Options353212 +Node: Conversion355679 +Node: Strings And Numbers356203 +Ref: Strings And Numbers-Footnote-1359266 +Node: Locale influences conversions359375 +Ref: table-locale-affects362133 +Node: All Operators362751 +Node: Arithmetic Ops363380 +Node: Concatenation365886 +Ref: Concatenation-Footnote-1368733 +Node: Assignment Ops368840 +Ref: table-assign-ops373831 +Node: Increment Ops375144 +Node: Truth Values and Conditions378604 +Node: Truth Values379678 +Node: Typing and Comparison380726 +Node: Variable Typing381546 +Ref: Variable Typing-Footnote-1388009 +Ref: Variable Typing-Footnote-2388081 +Node: Comparison Operators388158 +Ref: table-relational-ops388577 +Node: POSIX String Comparison392072 +Ref: POSIX String Comparison-Footnote-1393767 +Ref: POSIX String Comparison-Footnote-2393906 +Node: Boolean Ops393990 +Ref: Boolean Ops-Footnote-1398472 +Node: Conditional Exp398564 +Node: Function Calls400300 +Node: Precedence404177 +Node: Locales407836 +Node: Expressions Summary409468 +Node: Patterns and Actions412041 +Node: Pattern Overview413161 +Node: Regexp Patterns414838 +Node: Expression Patterns415380 +Node: Ranges419161 +Node: BEGIN/END422269 +Node: Using BEGIN/END423030 +Ref: Using BEGIN/END-Footnote-1425766 +Node: I/O And BEGIN/END425872 +Node: BEGINFILE/ENDFILE428186 +Node: Empty431099 +Node: Using Shell Variables431416 +Node: Action Overview433690 +Node: Statements436015 +Node: If Statement437863 +Node: While Statement439358 +Node: Do Statement441386 +Node: For Statement442534 +Node: Switch Statement445705 +Node: Break Statement448091 +Node: Continue Statement450183 +Node: Next Statement452010 +Node: Nextfile Statement454393 +Node: Exit Statement457045 +Node: Built-in Variables459448 +Node: User-modified460581 +Node: Auto-set468348 +Ref: Auto-set-Footnote-1485155 +Ref: Auto-set-Footnote-2485361 +Node: ARGC and ARGV485417 +Node: Pattern Action Summary489630 +Node: Arrays492060 +Node: Array Basics493389 +Node: Array Intro494233 +Ref: figure-array-elements496208 +Ref: Array Intro-Footnote-1498912 +Node: Reference to Elements499040 +Node: Assigning Elements501504 +Node: Array Example501995 +Node: Scanning an Array503754 +Node: Controlling Scanning506776 +Ref: Controlling Scanning-Footnote-1512175 +Node: Numeric Array Subscripts512491 +Node: Uninitialized Subscripts514675 +Node: Delete516294 +Ref: Delete-Footnote-1519046 +Node: Multidimensional519103 +Node: Multiscanning522198 +Node: Arrays of Arrays523789 +Node: Arrays Summary528557 +Node: Functions530650 +Node: Built-in531688 +Node: Calling Built-in532769 +Node: Numeric Functions534765 +Ref: Numeric Functions-Footnote-1538793 +Ref: Numeric Functions-Footnote-2539438 +Ref: Numeric Functions-Footnote-3539486 +Node: String Functions539758 +Ref: String Functions-Footnote-1563616 +Ref: String Functions-Footnote-2563744 +Ref: String Functions-Footnote-3563992 +Node: Gory Details564079 +Ref: table-sub-escapes565870 +Ref: table-sub-proposed567389 +Ref: table-posix-sub568752 +Ref: table-gensub-escapes570293 +Ref: Gory Details-Footnote-1571116 +Node: I/O Functions571270 +Ref: table-system-return-values577738 +Ref: I/O Functions-Footnote-1579818 +Ref: I/O Functions-Footnote-2579966 +Node: Time Functions580086 +Ref: Time Functions-Footnote-1590757 +Ref: Time Functions-Footnote-2590825 +Ref: Time Functions-Footnote-3590983 +Ref: Time Functions-Footnote-4591094 +Ref: Time Functions-Footnote-5591206 +Ref: Time Functions-Footnote-6591433 +Node: Bitwise Functions591699 +Ref: table-bitwise-ops592293 +Ref: Bitwise Functions-Footnote-1598356 +Ref: Bitwise Functions-Footnote-2598529 +Node: Type Functions598720 +Node: I18N Functions601471 +Node: User-defined603122 +Node: Definition Syntax603934 +Ref: Definition Syntax-Footnote-1609621 +Node: Function Example609692 +Ref: Function Example-Footnote-1612614 +Node: Function Calling612636 +Node: Calling A Function613224 +Node: Variable Scope614182 +Node: Pass By Value/Reference617176 +Node: Function Caveats619820 +Ref: Function Caveats-Footnote-1621867 +Node: Return Statement621987 +Node: Dynamic Typing624966 +Node: Indirect Calls625896 +Ref: Indirect Calls-Footnote-1636148 +Node: Functions Summary636276 +Node: Library Functions638981 +Ref: Library Functions-Footnote-1642588 +Ref: Library Functions-Footnote-2642731 +Node: Library Names642902 +Ref: Library Names-Footnote-1646569 +Ref: Library Names-Footnote-2646792 +Node: General Functions646878 +Node: Strtonum Function647981 +Node: Assert Function651003 +Node: Round Function654329 +Node: Cliff Random Function655869 +Node: Ordinal Functions656885 +Ref: Ordinal Functions-Footnote-1659948 +Ref: Ordinal Functions-Footnote-2660200 +Node: Join Function660410 +Ref: Join Function-Footnote-1662180 +Node: Getlocaltime Function662380 +Node: Readfile Function666122 +Node: Shell Quoting668099 +Node: Data File Management669500 +Node: Filetrans Function670132 +Node: Rewind Function674228 +Node: File Checking676137 +Ref: File Checking-Footnote-1677471 +Node: Empty Files677672 +Node: Ignoring Assigns679651 +Node: Getopt Function681201 +Ref: Getopt Function-Footnote-1692670 +Node: Passwd Functions692870 +Ref: Passwd Functions-Footnote-1701709 +Node: Group Functions701797 +Ref: Group Functions-Footnote-1709695 +Node: Walking Arrays709902 +Node: Library Functions Summary712910 +Node: Library Exercises714316 +Node: Sample Programs714781 +Node: Running Examples715551 +Node: Clones716279 +Node: Cut Program717503 +Node: Egrep Program727432 +Ref: Egrep Program-Footnote-1734944 +Node: Id Program735054 +Node: Split Program738734 +Ref: Split Program-Footnote-1742192 +Node: Tee Program742321 +Node: Uniq Program745111 +Node: Wc Program752732 +Ref: Wc Program-Footnote-1756987 +Node: Miscellaneous Programs757081 +Node: Dupword Program758294 +Node: Alarm Program760324 +Node: Translate Program765179 +Ref: Translate Program-Footnote-1769744 +Node: Labels Program770014 +Ref: Labels Program-Footnote-1773365 +Node: Word Sorting773449 +Node: History Sorting777521 +Node: Extract Program779356 +Node: Simple Sed787410 +Node: Igawk Program790484 +Ref: Igawk Program-Footnote-1804815 +Ref: Igawk Program-Footnote-2805017 +Ref: Igawk Program-Footnote-3805139 +Node: Anagram Program805254 +Node: Signature Program808316 +Node: Programs Summary809563 +Node: Programs Exercises810777 +Ref: Programs Exercises-Footnote-1814906 +Node: Advanced Features814997 +Node: Nondecimal Data816987 +Node: Array Sorting818578 +Node: Controlling Array Traversal819278 +Ref: Controlling Array Traversal-Footnote-1827646 +Node: Array Sorting Functions827764 +Ref: Array Sorting Functions-Footnote-1832855 +Node: Two-way I/O833051 +Ref: Two-way I/O-Footnote-1840772 +Ref: Two-way I/O-Footnote-2840959 +Node: TCP/IP Networking841041 +Node: Profiling844159 +Node: Advanced Features Summary853177 +Node: Internationalization855021 +Node: I18N and L10N856501 +Node: Explaining gettext857188 +Ref: Explaining gettext-Footnote-1863080 +Ref: Explaining gettext-Footnote-2863265 +Node: Programmer i18n863430 +Ref: Programmer i18n-Footnote-1868379 +Node: Translator i18n868428 +Node: String Extraction869222 +Ref: String Extraction-Footnote-1870354 +Node: Printf Ordering870440 +Ref: Printf Ordering-Footnote-1873226 +Node: I18N Portability873290 +Ref: I18N Portability-Footnote-1875746 +Node: I18N Example875809 +Ref: I18N Example-Footnote-1879084 +Ref: I18N Example-Footnote-2879157 +Node: Gawk I18N879266 +Node: I18N Summary879911 +Node: Debugger881252 +Node: Debugging882252 +Node: Debugging Concepts882693 +Node: Debugging Terms884502 +Node: Awk Debugging887077 +Ref: Awk Debugging-Footnote-1888022 +Node: Sample Debugging Session888154 +Node: Debugger Invocation888688 +Node: Finding The Bug890074 +Node: List of Debugger Commands896548 +Node: Breakpoint Control897881 +Node: Debugger Execution Control901575 +Node: Viewing And Changing Data904937 +Node: Execution Stack908478 +Node: Debugger Info910115 +Node: Miscellaneous Debugger Commands914186 +Node: Readline Support919248 +Node: Limitations920144 +Node: Debugging Summary922253 +Node: Namespaces923532 +Node: Global Namespace924611 +Node: Qualified Names926009 +Node: Default Namespace927008 +Node: Changing The Namespace927749 +Node: Naming Rules929363 +Node: Internal Name Management931211 +Node: Namespace Example932253 +Node: Namespace And Features934815 +Node: Namespace Summary936250 +Node: Arbitrary Precision Arithmetic937727 +Node: Computer Arithmetic939214 +Ref: table-numeric-ranges942980 +Ref: table-floating-point-ranges943473 +Ref: Computer Arithmetic-Footnote-1944131 +Node: Math Definitions944188 +Ref: table-ieee-formats947504 +Ref: Math Definitions-Footnote-1948107 +Node: MPFR features948212 +Node: FP Math Caution949930 +Ref: FP Math Caution-Footnote-1951002 +Node: Inexactness of computations951371 +Node: Inexact representation952331 +Node: Comparing FP Values953691 +Node: Errors accumulate954932 +Node: Getting Accuracy956365 +Node: Try To Round959075 +Node: Setting precision959974 +Ref: table-predefined-precision-strings960671 +Node: Setting the rounding mode962501 +Ref: table-gawk-rounding-modes962875 +Ref: Setting the rounding mode-Footnote-1966806 +Node: Arbitrary Precision Integers966985 +Ref: Arbitrary Precision Integers-Footnote-1970160 +Node: Checking for MPFR970309 +Node: POSIX Floating Point Problems971783 +Ref: POSIX Floating Point Problems-Footnote-1976068 +Node: Floating point summary976106 +Node: Dynamic Extensions978296 +Node: Extension Intro979849 +Node: Plugin License981115 +Node: Extension Mechanism Outline981912 +Ref: figure-load-extension982351 +Ref: figure-register-new-function983916 +Ref: figure-call-new-function985008 +Node: Extension API Description987070 +Node: Extension API Functions Introduction988712 +Ref: table-api-std-headers990548 +Node: General Data Types994413 +Ref: General Data Types-Footnote-11002774 +Node: Memory Allocation Functions1003073 +Ref: Memory Allocation Functions-Footnote-11007283 +Node: Constructor Functions1007382 +Node: Registration Functions1010968 +Node: Extension Functions1011653 +Node: Exit Callback Functions1016975 +Node: Extension Version String1018225 +Node: Input Parsers1018888 +Node: Output Wrappers1031609 +Node: Two-way processors1036121 +Node: Printing Messages1038386 +Ref: Printing Messages-Footnote-11039557 +Node: Updating ERRNO1039710 +Node: Requesting Values1040449 +Ref: table-value-types-returned1041186 +Node: Accessing Parameters1042122 +Node: Symbol Table Access1043357 +Node: Symbol table by name1043869 +Ref: Symbol table by name-Footnote-11046893 +Node: Symbol table by cookie1047021 +Ref: Symbol table by cookie-Footnote-11051206 +Node: Cached values1051270 +Ref: Cached values-Footnote-11054806 +Node: Array Manipulation1054959 +Ref: Array Manipulation-Footnote-11056050 +Node: Array Data Types1056087 +Ref: Array Data Types-Footnote-11058745 +Node: Array Functions1058837 +Node: Flattening Arrays1063335 +Node: Creating Arrays1070311 +Node: Redirection API1075078 +Node: Extension API Variables1077911 +Node: Extension Versioning1078622 +Ref: gawk-api-version1079051 +Node: Extension GMP/MPFR Versioning1080782 +Node: Extension API Informational Variables1082410 +Node: Extension API Boilerplate1083483 +Node: Changes from API V11087457 +Node: Finding Extensions1089029 +Node: Extension Example1089588 +Node: Internal File Description1090386 +Node: Internal File Ops1094466 +Ref: Internal File Ops-Footnote-11105816 +Node: Using Internal File Ops1105956 +Ref: Using Internal File Ops-Footnote-11108339 +Node: Extension Samples1108613 +Node: Extension Sample File Functions1110142 +Node: Extension Sample Fnmatch1117791 +Node: Extension Sample Fork1119278 +Node: Extension Sample Inplace1120496 +Node: Extension Sample Ord1123800 +Node: Extension Sample Readdir1124636 +Ref: table-readdir-file-types1125525 +Node: Extension Sample Revout1126330 +Node: Extension Sample Rev2way1126919 +Node: Extension Sample Read write array1127659 +Node: Extension Sample Readfile1129601 +Node: Extension Sample Time1130696 +Node: Extension Sample API Tests1132044 +Node: gawkextlib1132536 +Node: Extension summary1135454 +Node: Extension Exercises1139156 +Node: Language History1140398 +Node: V7/SVR3.11142054 +Node: SVR41144206 +Node: POSIX1145640 +Node: BTL1147020 +Node: POSIX/GNU1147749 +Node: Feature History1153527 +Node: Common Extensions1169573 +Node: Ranges and Locales1170856 +Ref: Ranges and Locales-Footnote-11175472 +Ref: Ranges and Locales-Footnote-21175499 +Ref: Ranges and Locales-Footnote-31175734 +Node: Contributors1175955 +Node: History summary1181900 +Node: Installation1183280 +Node: Gawk Distribution1184224 +Node: Getting1184708 +Node: Extracting1185671 +Node: Distribution contents1187309 +Node: Unix Installation1193789 +Node: Quick Installation1194471 +Node: Shell Startup Files1196885 +Node: Additional Configuration Options1197974 +Node: Configuration Philosophy1200139 +Node: Non-Unix Installation1202508 +Node: PC Installation1202968 +Node: PC Binary Installation1203806 +Node: PC Compiling1204241 +Node: PC Using1205358 +Node: Cygwin1208911 +Node: MSYS1210010 +Node: VMS Installation1210511 +Node: VMS Compilation1211302 +Ref: VMS Compilation-Footnote-11212531 +Node: VMS Dynamic Extensions1212589 +Node: VMS Installation Details1214274 +Node: VMS Running1216527 +Node: VMS GNV1220806 +Node: VMS Old Gawk1221541 +Node: Bugs1222012 +Node: Bug address1222675 +Node: Usenet1225657 +Node: Maintainers1226661 +Node: Other Versions1227922 +Node: Installation summary1234836 +Node: Notes1236038 +Node: Compatibility Mode1236832 +Node: Additions1237614 +Node: Accessing The Source1238539 +Node: Adding Code1239976 +Node: New Ports1246195 +Node: Derived Files1250683 +Ref: Derived Files-Footnote-11256329 +Ref: Derived Files-Footnote-21256364 +Ref: Derived Files-Footnote-31256962 +Node: Future Extensions1257076 +Node: Implementation Limitations1257734 +Node: Extension Design1258917 +Node: Old Extension Problems1260061 +Ref: Old Extension Problems-Footnote-11261579 +Node: Extension New Mechanism Goals1261636 +Ref: Extension New Mechanism Goals-Footnote-11265000 +Node: Extension Other Design Decisions1265189 +Node: Extension Future Growth1267302 +Node: Notes summary1268138 +Node: Basic Concepts1269313 +Node: Basic High Level1269994 +Ref: figure-general-flow1270276 +Ref: figure-process-flow1270961 +Ref: Basic High Level-Footnote-11274262 +Node: Basic Data Typing1274447 +Node: Glossary1277775 +Node: Copying1309613 +Node: GNU Free Documentation License1347156 +Node: Index1372276 End Tag Table diff --git a/doc/gawk.texi b/doc/gawk.texi index 7a8354eb..48ec7032 100644 --- a/doc/gawk.texi +++ b/doc/gawk.texi @@ -59,7 +59,7 @@ @c applies to and all the info about who's publishing this edition @c These apply across the board. -@set UPDATE-MONTH February, 2019 +@set UPDATE-MONTH March, 2019 @set VERSION 5.0 @set PATCHLEVEL 0 @@ -5541,6 +5541,14 @@ You can combine regular expressions with special characters, called @dfn{regular expression operators} or @dfn{metacharacters}, to increase the power and versatility of regular expressions. +@menu +* Regexp Operator Details:: The actual details. +* Interval Expressions:: Notes on interval expressions. +@end menu + +@node Regexp Operator Details +@subsection Regexp Operators in @command{awk} + The escape sequences described @ifnotinfo earlier @@ -5718,6 +5726,26 @@ Matches @samp{whhhy}, @samp{whhhhy}, or @samp{whhhhhy} only. @item wh@{2,@}y Matches @samp{whhy}, @samp{whhhy}, and so on. @end table +@end table + +@cindex precedence, regexp operators +@cindex regular expressions, operators, precedence of +In regular expressions, the @samp{*}, @samp{+}, and @samp{?} operators, +as well as the braces @samp{@{} and @samp{@}}, +have +the highest precedence, followed by concatenation, and finally by @samp{|}. +As in arithmetic, parentheses can change how operators are grouped. + +@cindex POSIX @command{awk}, regular expressions and +@cindex @command{gawk}, regular expressions, precedence +In POSIX @command{awk} and @command{gawk}, the @samp{*}, @samp{+}, and +@samp{?} operators stand for themselves when there is nothing in the +regexp that precedes them. For example, @code{/+/} matches a literal +plus sign. However, many other versions of @command{awk} treat such a +usage as a syntax error. + +@node Interval Expressions +@subsection Some Notes On Interval Expressions @cindex POSIX @command{awk}, interval expressions in Interval expressions were not traditionally available in @command{awk}. @@ -5745,26 +5773,14 @@ using a string constant with a regexp operator or function.} Finally, when @samp{@{} and @samp{@}} appear in regexp constants in a way that cannot be interpreted as an interval expression (such as @code{/q@{a@}/}), then they stand for themselves. -@end table -@cindex precedence, regexp operators -@cindex regular expressions, operators, precedence of -In regular expressions, the @samp{*}, @samp{+}, and @samp{?} operators, -as well as the braces @samp{@{} and @samp{@}}, -have -the highest precedence, followed by concatenation, and finally by @samp{|}. -As in arithmetic, parentheses can change how operators are grouped. - -@cindex POSIX @command{awk}, regular expressions and -@cindex @command{gawk}, regular expressions, precedence -In POSIX @command{awk} and @command{gawk}, the @samp{*}, @samp{+}, and -@samp{?} operators stand for themselves when there is nothing in the -regexp that precedes them. For example, @code{/+/} matches a literal -plus sign. However, many other versions of @command{awk} treat such a -usage as a syntax error. +As mentioned, interval expressions were not traditionally available +in @command{awk}. In March of 2019, Brian Kernighan's +@command{awk} (finally) acquired them. -If @command{gawk} is in compatibility mode (@pxref{Options}), interval -expressions are not available in regular expressions. +Nonetheless, because they were not available for +so many decades, @command{gawk} continues to not supply them +when in compatibility mode (@pxref{Options}). @node Bracket Expressions @section Using Bracket Expressions diff --git a/doc/gawktexi.in b/doc/gawktexi.in index 1aa632db..4cbc3484 100644 --- a/doc/gawktexi.in +++ b/doc/gawktexi.in @@ -54,7 +54,7 @@ @c applies to and all the info about who's publishing this edition @c These apply across the board. -@set UPDATE-MONTH February, 2019 +@set UPDATE-MONTH March, 2019 @set VERSION 5.0 @set PATCHLEVEL 0 @@ -5368,6 +5368,14 @@ You can combine regular expressions with special characters, called @dfn{regular expression operators} or @dfn{metacharacters}, to increase the power and versatility of regular expressions. +@menu +* Regexp Operator Details:: The actual details. +* Interval Expressions:: Notes on interval expressions. +@end menu + +@node Regexp Operator Details +@subsection Regexp Operators in @command{awk} + The escape sequences described @ifnotinfo earlier @@ -5545,6 +5553,26 @@ Matches @samp{whhhy}, @samp{whhhhy}, or @samp{whhhhhy} only. @item wh@{2,@}y Matches @samp{whhy}, @samp{whhhy}, and so on. @end table +@end table + +@cindex precedence, regexp operators +@cindex regular expressions, operators, precedence of +In regular expressions, the @samp{*}, @samp{+}, and @samp{?} operators, +as well as the braces @samp{@{} and @samp{@}}, +have +the highest precedence, followed by concatenation, and finally by @samp{|}. +As in arithmetic, parentheses can change how operators are grouped. + +@cindex POSIX @command{awk}, regular expressions and +@cindex @command{gawk}, regular expressions, precedence +In POSIX @command{awk} and @command{gawk}, the @samp{*}, @samp{+}, and +@samp{?} operators stand for themselves when there is nothing in the +regexp that precedes them. For example, @code{/+/} matches a literal +plus sign. However, many other versions of @command{awk} treat such a +usage as a syntax error. + +@node Interval Expressions +@subsection Some Notes On Interval Expressions @cindex POSIX @command{awk}, interval expressions in Interval expressions were not traditionally available in @command{awk}. @@ -5572,26 +5600,14 @@ using a string constant with a regexp operator or function.} Finally, when @samp{@{} and @samp{@}} appear in regexp constants in a way that cannot be interpreted as an interval expression (such as @code{/q@{a@}/}), then they stand for themselves. -@end table -@cindex precedence, regexp operators -@cindex regular expressions, operators, precedence of -In regular expressions, the @samp{*}, @samp{+}, and @samp{?} operators, -as well as the braces @samp{@{} and @samp{@}}, -have -the highest precedence, followed by concatenation, and finally by @samp{|}. -As in arithmetic, parentheses can change how operators are grouped. - -@cindex POSIX @command{awk}, regular expressions and -@cindex @command{gawk}, regular expressions, precedence -In POSIX @command{awk} and @command{gawk}, the @samp{*}, @samp{+}, and -@samp{?} operators stand for themselves when there is nothing in the -regexp that precedes them. For example, @code{/+/} matches a literal -plus sign. However, many other versions of @command{awk} treat such a -usage as a syntax error. +As mentioned, interval expressions were not traditionally available +in @command{awk}. In March of 2019, Brian Kernighan's +@command{awk} (finally) acquired them. -If @command{gawk} is in compatibility mode (@pxref{Options}), interval -expressions are not available in regular expressions. +Nonetheless, because they were not available for +so many decades, @command{gawk} continues to not supply them +when in compatibility mode (@pxref{Options}). @node Bracket Expressions @section Using Bracket Expressions |