diff options
Diffstat (limited to 'doc/gawk.info')
-rw-r--r-- | doc/gawk.info | 1231 |
1 files changed, 667 insertions, 564 deletions
diff --git a/doc/gawk.info b/doc/gawk.info index db3250a4..6d6def4f 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -175,6 +175,7 @@ in (a) below. A copy of the license is included in the section entitled * Computed Regexps:: Using Dynamic Regexps. * GNU Regexp Operators:: Operators specific to GNU software. * Case-sensitivity:: How to do case-insensitive matching. +* Strong Regexp Constants:: Strongly typed regexp constants. * Regexp Summary:: Regular expressions summary. * Records:: Controlling how data is split into records. @@ -3311,6 +3312,7 @@ you specify more complicated classes of strings. * Computed Regexps:: Using Dynamic Regexps. * GNU Regexp Operators:: Operators specific to GNU software. * Case-sensitivity:: How to do case-insensitive matching. +* Strong Regexp Constants:: Strongly typed regexp constants. * Regexp Summary:: Regular expressions summary. @@ -4013,7 +4015,7 @@ No options default. -File: gawk.info, Node: Case-sensitivity, Next: Regexp Summary, Prev: GNU Regexp Operators, Up: Regexp +File: gawk.info, Node: Case-sensitivity, Next: Strong Regexp Constants, Prev: GNU Regexp Operators, Up: Regexp 3.8 Case Sensitivity in Matching ================================ @@ -4087,10 +4089,77 @@ and we don't recommend it. that 'gawk' does the right thing. -File: gawk.info, Node: Regexp Summary, Prev: Case-sensitivity, Up: Regexp +File: gawk.info, Node: Strong Regexp Constants, Next: Regexp Summary, Prev: Case-sensitivity, Up: Regexp -3.9 Summary -=========== +3.9 Strongly Typed Regexp Constants +=================================== + +This minor node describes a 'gawk'-specific feature. + + Regexp constants ('/.../') hold a strange position in the 'awk' +language. In most contexts, they act like an expression: '$0 ~ /.../'. +In other contexts, they denote only a regexp to be matched. In no case +are they really a "first class citizen" of the language. That is, you +cannot define a scalar variable whose type is "regexp" in the same sense +that you can define a variable to be a number or a string: + + num = 42 Numeric variable + str = "hi" String variable + re = /foo/ Wrong! re is the result of $0 ~ /foo/ + + For a number of more advanced use cases (described later on in this +Info file), it would be nice to have regexp constants that are "strongly +typed"; in other words, that denote a regexp useful for matching, and +not an expression. + + 'gawk' provides this feature. A strongly typed regexp constant looks +almost like a regular regexp constant, except that it is preceded by an +'@' sign: + + re = @/foo/ Regexp variable + + Strongly typed regexp constants _cannot_ be used eveywhere that a +regular regexp constant can, because this would make the language even +more confusing. Instead, you may use them only in certain contexts: + + * On the righthand side of the '~' and '!~' operators: 'some_var ~ + @/foo/' (*note Regexp Usage::). + + * In the 'case' part of a 'switch' statement (*note Switch + Statement::). + + * As an argument to one of the built-in functions that accept regexp + constants: 'gensub()', 'gsub()', 'match()', 'patsplit()', + 'split()', and 'sub()' (*note String Functions::). + + * As a parameter in a call to a user-defined function (*note + User-defined::). + + * On the righthand side of an assignment to a variable: 'some_var = + @/foo/'. In this case, the type of 'some_var' is regexp. + Additionally, 'some_var' can be used with '~' and '!~', passed to + one of the built-in functions listed above, or passed as a + parameter to a user-defined function. + + You may use the 'typeof()' built-in function (*note Type Functions::) +to determine if a variable or function parameter is a regexp variable. + + The true power of this feature comes from the ability to create +variables that have regexp type. Such variables can be passed on to +user-defined functions, without the confusing aspects of computed +regular expressions created from strings or string constants. They may +also be passed through indirect function calls (*note Indirect Calls::) +onto the built-in functions that accept regexp constants. + + When used in numeric conversions, strongly typed regexp variables +convert to zero. When used in string conversions, they convert to the +string value of the original regexp text. + + +File: gawk.info, Node: Regexp Summary, Prev: Strong Regexp Constants, Up: Regexp + +3.10 Summary +============ * Regular expressions describe sets of strings to be matched. In 'awk', regular expression constants are written enclosed between @@ -4123,6 +4192,9 @@ File: gawk.info, Node: Regexp Summary, Prev: Case-sensitivity, Up: Regexp sensitivity of regexp matching. In other 'awk' versions, use 'tolower()' or 'toupper()'. + * Strongly typed regexp constants ('@/.../') enable certain advanced + use cases to be described later on in the Info file. + File: gawk.info, Node: Reading Files, Next: Printing, Prev: Regexp, Up: Top @@ -13426,14 +13498,33 @@ File: gawk.info, Node: Type Functions, Next: I18N Functions, Prev: Bitwise Fu 9.1.7 Getting Type Information ------------------------------ -'gawk' provides a single function that lets you distinguish an array -from a scalar variable. This is necessary for writing code that -traverses every element of an array of arrays (*note Arrays of -Arrays::). +'gawk' provides two functions that lets you distinguish the type of a +variable. This is necessary for writing code that traverses every +element of an array of arrays (*note Arrays of Arrays::), and in other +contexts. 'isarray(X)' Return a true value if X is an array. Otherwise, return false. +'typeof(X)' + Return one of the following strings, depending upon the type of X: + + '"array"' + X is an array. + + '"regexp"' + X is a strongly typed regexp (*note Strong Regexp + Constants::). + + '"scalar_n"' + X is a number. + + '"scalar_s"' + X is a string. + + '"untyped"' + X has not yet been given a type. + 'isarray()' is meant for use in two circumstances. The first is when traversing a multidimensional array: you can test if an element is itself an array or not. The second is inside the body of a user-defined @@ -13447,6 +13538,14 @@ parameter is an array or not. that has not been previously used to 'isarray()', 'gawk' ends up turning it into a scalar. + The 'typeof()' function is general; it allows you to determine if a +variable or function parameter is a scalar, an array, or a strongly +typed regexp. + + 'isarray()' is deprecated; you should use 'typeof()' instead. You +should replace any existing uses of 'isarray(var)' in your code with +'typeof(var) == "array"'. + File: gawk.info, Node: I18N Functions, Prev: Type Functions, Up: Built-in @@ -34741,6 +34840,8 @@ Index * trunc-mod operation: Arithmetic Ops. (line 66) * truth values: Truth Values. (line 6) * type conversion: Strings And Numbers. (line 21) +* type, of variable: Type Functions. (line 14) +* 'typeof': Type Functions. (line 14) * 'u' debugger command (alias for 'until'): Debugger Execution Control. (line 82) * unassigned array elements: Reference to Elements. @@ -34787,6 +34888,7 @@ Index * values, numeric: Basic Data Typing. (line 13) * values, string: Basic Data Typing. (line 13) * variable assignments and input files: Other Arguments. (line 26) +* variable type: Type Functions. (line 14) * variable typing: Typing and Comparison. (line 9) * variables: Other Features. (line 6) @@ -34887,561 +34989,562 @@ Index Tag Table: Node: Top1200 -Node: Foreword342435 -Node: Foreword446877 -Node: Preface48409 -Ref: Preface-Footnote-151281 -Ref: Preface-Footnote-251388 -Ref: Preface-Footnote-351622 -Node: History51764 -Node: Names54117 -Ref: Names-Footnote-155211 -Node: This Manual55358 -Ref: This Manual-Footnote-161840 -Node: Conventions61940 -Node: Manual History64295 -Ref: Manual History-Footnote-167291 -Ref: Manual History-Footnote-267332 -Node: How To Contribute67406 -Node: Acknowledgments68535 -Node: Getting Started73403 -Node: Running gawk75842 -Node: One-shot77032 -Node: Read Terminal78295 -Node: Long80327 -Node: Executable Scripts81840 -Ref: Executable Scripts-Footnote-184635 -Node: Comments84738 -Node: Quoting87222 -Node: DOS Quoting92740 -Node: Sample Data Files93415 -Node: Very Simple96010 -Node: Two Rules100912 -Node: More Complex102798 -Node: Statements/Lines105661 -Ref: Statements/Lines-Footnote-1110120 -Node: Other Features110385 -Node: When111322 -Ref: When-Footnote-1113076 -Node: Intro Summary113141 -Node: Invoking Gawk114025 -Node: Command Line115539 -Node: Options116337 -Ref: Options-Footnote-1131988 -Ref: Options-Footnote-2132218 -Node: Other Arguments132243 -Node: Naming Standard Input135190 -Node: Environment Variables136283 -Node: AWKPATH Variable136841 -Ref: AWKPATH Variable-Footnote-1140252 -Ref: AWKPATH Variable-Footnote-2140297 -Node: AWKLIBPATH Variable140558 -Node: Other Environment Variables141815 -Node: Exit Status145453 -Node: Include Files146130 -Node: Loading Shared Libraries149725 -Node: Obsolete151153 -Node: Undocumented151845 -Node: Invoking Summary152142 -Node: Regexp153802 -Node: Regexp Usage155256 -Node: Escape Sequences157293 -Node: Regexp Operators163526 -Ref: Regexp Operators-Footnote-1170943 -Ref: Regexp Operators-Footnote-2171090 -Node: Bracket Expressions171188 -Ref: table-char-classes173211 -Node: Leftmost Longest176157 -Node: Computed Regexps177460 -Node: GNU Regexp Operators180887 -Node: Case-sensitivity184566 -Ref: Case-sensitivity-Footnote-1187453 -Ref: Case-sensitivity-Footnote-2187688 -Node: Regexp Summary187796 -Node: Reading Files189262 -Node: Records191425 -Node: awk split records192158 -Node: gawk split records197090 -Ref: gawk split records-Footnote-1201634 -Node: Fields201671 -Node: Nonconstant Fields204412 -Ref: Nonconstant Fields-Footnote-1206648 -Node: Changing Fields206852 -Node: Field Separators212782 -Node: Default Field Splitting215480 -Node: Regexp Field Splitting216598 -Node: Single Character Fields219951 -Node: Command Line Field Separator221011 -Node: Full Line Fields224229 -Ref: Full Line Fields-Footnote-1225751 -Ref: Full Line Fields-Footnote-2225797 -Node: Field Splitting Summary225898 -Node: Constant Size227972 -Node: Splitting By Content232551 -Ref: Splitting By Content-Footnote-1236522 -Node: Multiple Line236685 -Ref: Multiple Line-Footnote-1242568 -Node: Getline242747 -Node: Plain Getline245214 -Node: Getline/Variable247853 -Node: Getline/File249002 -Node: Getline/Variable/File250388 -Ref: Getline/Variable/File-Footnote-1251992 -Node: Getline/Pipe252080 -Node: Getline/Variable/Pipe254785 -Node: Getline/Coprocess255918 -Node: Getline/Variable/Coprocess257183 -Node: Getline Notes257923 -Node: Getline Summary260718 -Ref: table-getline-variants261140 -Node: Read Timeout261888 -Ref: Read Timeout-Footnote-1265795 -Node: Retrying Input265853 -Node: Command-line directories267052 -Node: Input Summary267959 -Node: Input Exercises271131 -Node: Printing271859 -Node: Print273694 -Node: Print Examples275151 -Node: Output Separators277931 -Node: OFMT279948 -Node: Printf281304 -Node: Basic Printf282089 -Node: Control Letters283663 -Node: Format Modifiers287651 -Node: Printf Examples293666 -Node: Redirection296152 -Node: Special FD302995 -Ref: Special FD-Footnote-1306163 -Node: Special Files306237 -Node: Other Inherited Files306854 -Node: Special Network307855 -Node: Special Caveats308715 -Node: Close Files And Pipes309664 -Ref: Close Files And Pipes-Footnote-1316851 -Ref: Close Files And Pipes-Footnote-2316999 -Node: Nonfatal317150 -Node: Output Summary319475 -Node: Output Exercises320697 -Node: Expressions321376 -Node: Values322564 -Node: Constants323242 -Node: Scalar Constants323933 -Ref: Scalar Constants-Footnote-1324797 -Node: Nondecimal-numbers325047 -Node: Regexp Constants328061 -Node: Using Constant Regexps328587 -Node: Variables331750 -Node: Using Variables332407 -Node: Assignment Options334318 -Node: Conversion336192 -Node: Strings And Numbers336716 -Ref: Strings And Numbers-Footnote-1339780 -Node: Locale influences conversions339889 -Ref: table-locale-affects342647 -Node: All Operators343265 -Node: Arithmetic Ops343894 -Node: Concatenation346400 -Ref: Concatenation-Footnote-1349247 -Node: Assignment Ops349354 -Ref: table-assign-ops354346 -Node: Increment Ops355659 -Node: Truth Values and Conditions359119 -Node: Truth Values360193 -Node: Typing and Comparison361241 -Node: Variable Typing362061 -Node: Comparison Operators365685 -Ref: table-relational-ops366104 -Node: POSIX String Comparison369599 -Ref: POSIX String Comparison-Footnote-1370673 -Node: Boolean Ops370812 -Ref: Boolean Ops-Footnote-1375294 -Node: Conditional Exp375386 -Node: Function Calls377122 -Node: Precedence381002 -Node: Locales384661 -Node: Expressions Summary386293 -Node: Patterns and Actions388866 -Node: Pattern Overview389986 -Node: Regexp Patterns391663 -Node: Expression Patterns392205 -Node: Ranges395986 -Node: BEGIN/END399094 -Node: Using BEGIN/END399855 -Ref: Using BEGIN/END-Footnote-1402592 -Node: I/O And BEGIN/END402698 -Node: BEGINFILE/ENDFILE405014 -Node: Empty407921 -Node: Using Shell Variables408238 -Node: Action Overview410512 -Node: Statements412837 -Node: If Statement414685 -Node: While Statement416180 -Node: Do Statement418208 -Node: For Statement419356 -Node: Switch Statement422515 -Node: Break Statement424901 -Node: Continue Statement426993 -Node: Next Statement428820 -Node: Nextfile Statement431203 -Node: Exit Statement433855 -Node: Built-in Variables436260 -Node: User-modified437393 -Node: Auto-set444981 -Ref: Auto-set-Footnote-1459230 -Ref: Auto-set-Footnote-2459436 -Node: ARGC and ARGV459492 -Node: Pattern Action Summary463711 -Node: Arrays466141 -Node: Array Basics467470 -Node: Array Intro468314 -Ref: figure-array-elements470289 -Ref: Array Intro-Footnote-1472993 -Node: Reference to Elements473121 -Node: Assigning Elements475585 -Node: Array Example476076 -Node: Scanning an Array477835 -Node: Controlling Scanning480859 -Ref: Controlling Scanning-Footnote-1486258 -Node: Numeric Array Subscripts486574 -Node: Uninitialized Subscripts488758 -Node: Delete490377 -Ref: Delete-Footnote-1493129 -Node: Multidimensional493186 -Node: Multiscanning496281 -Node: Arrays of Arrays497872 -Node: Arrays Summary502640 -Node: Functions504733 -Node: Built-in505771 -Node: Calling Built-in506849 -Node: Numeric Functions508845 -Ref: Numeric Functions-Footnote-1513678 -Ref: Numeric Functions-Footnote-2514035 -Ref: Numeric Functions-Footnote-3514083 -Node: String Functions514355 -Ref: String Functions-Footnote-1537863 -Ref: String Functions-Footnote-2537992 -Ref: String Functions-Footnote-3538240 -Node: Gory Details538327 -Ref: table-sub-escapes540118 -Ref: table-sub-proposed541637 -Ref: table-posix-sub543000 -Ref: table-gensub-escapes544541 -Ref: Gory Details-Footnote-1545364 -Node: I/O Functions545515 -Ref: I/O Functions-Footnote-1552736 -Node: Time Functions552884 -Ref: Time Functions-Footnote-1563389 -Ref: Time Functions-Footnote-2563457 -Ref: Time Functions-Footnote-3563615 -Ref: Time Functions-Footnote-4563726 -Ref: Time Functions-Footnote-5563838 -Ref: Time Functions-Footnote-6564065 -Node: Bitwise Functions564331 -Ref: table-bitwise-ops564925 -Ref: Bitwise Functions-Footnote-1569263 -Node: Type Functions569436 -Node: I18N Functions570592 -Node: User-defined572243 -Node: Definition Syntax573048 -Ref: Definition Syntax-Footnote-1578735 -Node: Function Example578806 -Ref: Function Example-Footnote-1581728 -Node: Function Caveats581750 -Node: Calling A Function582268 -Node: Variable Scope583226 -Node: Pass By Value/Reference586220 -Node: Return Statement589719 -Node: Dynamic Typing592698 -Node: Indirect Calls593628 -Ref: Indirect Calls-Footnote-1603879 -Node: Functions Summary604007 -Node: Library Functions606712 -Ref: Library Functions-Footnote-1610321 -Ref: Library Functions-Footnote-2610464 -Node: Library Names610635 -Ref: Library Names-Footnote-1614096 -Ref: Library Names-Footnote-2614319 -Node: General Functions614405 -Node: Strtonum Function615508 -Node: Assert Function618530 -Node: Round Function621856 -Node: Cliff Random Function623397 -Node: Ordinal Functions624413 -Ref: Ordinal Functions-Footnote-1627476 -Ref: Ordinal Functions-Footnote-2627728 -Node: Join Function627938 -Ref: Join Function-Footnote-1629708 -Node: Getlocaltime Function629908 -Node: Readfile Function633652 -Node: Shell Quoting635626 -Node: Data File Management637027 -Node: Filetrans Function637659 -Node: Rewind Function641756 -Node: File Checking643142 -Ref: File Checking-Footnote-1644476 -Node: Empty Files644677 -Node: Ignoring Assigns646656 -Node: Getopt Function648206 -Ref: Getopt Function-Footnote-1659676 -Node: Passwd Functions659876 -Ref: Passwd Functions-Footnote-1668717 -Node: Group Functions668805 -Ref: Group Functions-Footnote-1676704 -Node: Walking Arrays676911 -Node: Library Functions Summary679921 -Node: Library Exercises681327 -Node: Sample Programs681792 -Node: Running Examples682562 -Node: Clones683290 -Node: Cut Program684514 -Node: Egrep Program694235 -Ref: Egrep Program-Footnote-1701747 -Node: Id Program701857 -Node: Split Program705537 -Ref: Split Program-Footnote-1708996 -Node: Tee Program709125 -Node: Uniq Program711915 -Node: Wc Program719341 -Ref: Wc Program-Footnote-1723596 -Node: Miscellaneous Programs723690 -Node: Dupword Program724903 -Node: Alarm Program726933 -Node: Translate Program731788 -Ref: Translate Program-Footnote-1736353 -Node: Labels Program736623 -Ref: Labels Program-Footnote-1739974 -Node: Word Sorting740058 -Node: History Sorting744130 -Node: Extract Program745965 -Node: Simple Sed753496 -Node: Igawk Program756570 -Ref: Igawk Program-Footnote-1770901 -Ref: Igawk Program-Footnote-2771103 -Ref: Igawk Program-Footnote-3771225 -Node: Anagram Program771340 -Node: Signature Program774402 -Node: Programs Summary775649 -Node: Programs Exercises776864 -Ref: Programs Exercises-Footnote-1780993 -Node: Advanced Features781084 -Node: Nondecimal Data783074 -Node: Array Sorting784665 -Node: Controlling Array Traversal785365 -Ref: Controlling Array Traversal-Footnote-1793734 -Node: Array Sorting Functions793852 -Ref: Array Sorting Functions-Footnote-1797739 -Node: Two-way I/O797935 -Ref: Two-way I/O-Footnote-1802886 -Ref: Two-way I/O-Footnote-2803073 -Node: TCP/IP Networking803155 -Node: Profiling806062 -Node: Advanced Features Summary814333 -Node: Internationalization816269 -Node: I18N and L10N817749 -Node: Explaining gettext818436 -Ref: Explaining gettext-Footnote-1823459 -Ref: Explaining gettext-Footnote-2823644 -Node: Programmer i18n823809 -Ref: Programmer i18n-Footnote-1828665 -Node: Translator i18n828714 -Node: String Extraction829508 -Ref: String Extraction-Footnote-1830641 -Node: Printf Ordering830727 -Ref: Printf Ordering-Footnote-1833513 -Node: I18N Portability833577 -Ref: I18N Portability-Footnote-1836033 -Node: I18N Example836096 -Ref: I18N Example-Footnote-1838902 -Node: Gawk I18N838975 -Node: I18N Summary839620 -Node: Debugger840961 -Node: Debugging841983 -Node: Debugging Concepts842424 -Node: Debugging Terms844233 -Node: Awk Debugging846808 -Node: Sample Debugging Session847714 -Node: Debugger Invocation848248 -Node: Finding The Bug849634 -Node: List of Debugger Commands856112 -Node: Breakpoint Control857445 -Node: Debugger Execution Control861139 -Node: Viewing And Changing Data864501 -Node: Execution Stack867875 -Node: Debugger Info869512 -Node: Miscellaneous Debugger Commands873583 -Node: Readline Support878592 -Node: Limitations879488 -Node: Debugging Summary881597 -Node: Arbitrary Precision Arithmetic882770 -Node: Computer Arithmetic884186 -Ref: table-numeric-ranges887777 -Ref: Computer Arithmetic-Footnote-1888499 -Node: Math Definitions888556 -Ref: table-ieee-formats891870 -Ref: Math Definitions-Footnote-1892473 -Node: MPFR features892578 -Node: FP Math Caution894251 -Ref: FP Math Caution-Footnote-1895323 -Node: Inexactness of computations895692 -Node: Inexact representation896652 -Node: Comparing FP Values898012 -Node: Errors accumulate899094 -Node: Getting Accuracy900527 -Node: Try To Round903237 -Node: Setting precision904136 -Ref: table-predefined-precision-strings904833 -Node: Setting the rounding mode906663 -Ref: table-gawk-rounding-modes907037 -Ref: Setting the rounding mode-Footnote-1910445 -Node: Arbitrary Precision Integers910624 -Ref: Arbitrary Precision Integers-Footnote-1915541 -Node: POSIX Floating Point Problems915690 -Ref: POSIX Floating Point Problems-Footnote-1919572 -Node: Floating point summary919610 -Node: Dynamic Extensions921800 -Node: Extension Intro923353 -Node: Plugin License924619 -Node: Extension Mechanism Outline925416 -Ref: figure-load-extension925855 -Ref: figure-register-new-function927420 -Ref: figure-call-new-function928512 -Node: Extension API Description930575 -Node: Extension API Functions Introduction932109 -Node: General Data Types936968 -Ref: General Data Types-Footnote-1942923 -Node: Memory Allocation Functions943222 -Ref: Memory Allocation Functions-Footnote-1946067 -Node: Constructor Functions946166 -Node: Registration Functions947911 -Node: Extension Functions948596 -Node: Exit Callback Functions950895 -Node: Extension Version String952145 -Node: Input Parsers952808 -Node: Output Wrappers962693 -Node: Two-way processors967205 -Node: Printing Messages969469 -Ref: Printing Messages-Footnote-1970545 -Node: Updating 'ERRNO'970698 -Node: Requesting Values971439 -Ref: table-value-types-returned972178 -Node: Accessing Parameters973061 -Node: Symbol Table Access974297 -Node: Symbol table by name974809 -Node: Symbol table by cookie976830 -Ref: Symbol table by cookie-Footnote-1980979 -Node: Cached values981043 -Ref: Cached values-Footnote-1984544 -Node: Array Manipulation984635 -Ref: Array Manipulation-Footnote-1985726 -Node: Array Data Types985763 -Ref: Array Data Types-Footnote-1988421 -Node: Array Functions988513 -Node: Flattening Arrays992372 -Node: Creating Arrays999280 -Node: Redirection API1004052 -Node: Extension API Variables1006883 -Node: Extension Versioning1007516 -Node: Extension API Informational Variables1009407 -Node: Extension API Boilerplate1010471 -Node: Finding Extensions1014285 -Node: Extension Example1014845 -Node: Internal File Description1015643 -Node: Internal File Ops1019723 -Ref: Internal File Ops-Footnote-11031485 -Node: Using Internal File Ops1031625 -Ref: Using Internal File Ops-Footnote-11034008 -Node: Extension Samples1034283 -Node: Extension Sample File Functions1035812 -Node: Extension Sample Fnmatch1043461 -Node: Extension Sample Fork1044948 -Node: Extension Sample Inplace1046166 -Node: Extension Sample Ord1049376 -Node: Extension Sample Readdir1050212 -Ref: table-readdir-file-types1051101 -Node: Extension Sample Revout1051906 -Node: Extension Sample Rev2way1052495 -Node: Extension Sample Read write array1053235 -Node: Extension Sample Readfile1055177 -Node: Extension Sample Time1056272 -Node: Extension Sample API Tests1057620 -Node: gawkextlib1058112 -Node: Extension summary1060559 -Node: Extension Exercises1064251 -Node: Language History1065748 -Node: V7/SVR3.11067404 -Node: SVR41069557 -Node: POSIX1070991 -Node: BTL1072371 -Node: POSIX/GNU1073101 -Node: Feature History1078940 -Node: Common Extensions1093259 -Node: Ranges and Locales1094542 -Ref: Ranges and Locales-Footnote-11099158 -Ref: Ranges and Locales-Footnote-21099185 -Ref: Ranges and Locales-Footnote-31099420 -Node: Contributors1099641 -Node: History summary1105210 -Node: Installation1106590 -Node: Gawk Distribution1107535 -Node: Getting1108019 -Node: Extracting1108842 -Node: Distribution contents1110480 -Node: Unix Installation1116576 -Node: Quick Installation1117258 -Node: Shell Startup Files1119672 -Node: Additional Configuration Options1120750 -Node: Configuration Philosophy1122555 -Node: Non-Unix Installation1124925 -Node: PC Installation1125383 -Node: PC Binary Installation1126703 -Node: PC Compiling1128555 -Ref: PC Compiling-Footnote-11131579 -Node: PC Testing1131688 -Node: PC Using1132868 -Node: Cygwin1136982 -Node: MSYS1137752 -Node: VMS Installation1138253 -Node: VMS Compilation1139044 -Ref: VMS Compilation-Footnote-11140274 -Node: VMS Dynamic Extensions1140332 -Node: VMS Installation Details1142017 -Node: VMS Running1144270 -Node: VMS GNV1147111 -Node: VMS Old Gawk1147846 -Node: Bugs1148317 -Node: Other Versions1152431 -Node: Installation summary1158905 -Node: Notes1159963 -Node: Compatibility Mode1160828 -Node: Additions1161610 -Node: Accessing The Source1162535 -Node: Adding Code1163971 -Node: New Ports1170126 -Node: Derived Files1174614 -Ref: Derived Files-Footnote-11180099 -Ref: Derived Files-Footnote-21180134 -Ref: Derived Files-Footnote-31180732 -Node: Future Extensions1180846 -Node: Implementation Limitations1181504 -Node: Extension Design1182687 -Node: Old Extension Problems1183841 -Ref: Old Extension Problems-Footnote-11185359 -Node: Extension New Mechanism Goals1185416 -Ref: Extension New Mechanism Goals-Footnote-11188780 -Node: Extension Other Design Decisions1188969 -Node: Extension Future Growth1191082 -Node: Old Extension Mechanism1191918 -Node: Notes summary1193681 -Node: Basic Concepts1194863 -Node: Basic High Level1195544 -Ref: figure-general-flow1195826 -Ref: figure-process-flow1196511 -Ref: Basic High Level-Footnote-11199812 -Node: Basic Data Typing1199997 -Node: Glossary1203325 -Node: Copying1235271 -Node: GNU Free Documentation License1272810 -Node: Index1297928 +Node: Foreword342508 +Node: Foreword446950 +Node: Preface48482 +Ref: Preface-Footnote-151354 +Ref: Preface-Footnote-251461 +Ref: Preface-Footnote-351695 +Node: History51837 +Node: Names54190 +Ref: Names-Footnote-155284 +Node: This Manual55431 +Ref: This Manual-Footnote-161913 +Node: Conventions62013 +Node: Manual History64368 +Ref: Manual History-Footnote-167364 +Ref: Manual History-Footnote-267405 +Node: How To Contribute67479 +Node: Acknowledgments68608 +Node: Getting Started73476 +Node: Running gawk75915 +Node: One-shot77105 +Node: Read Terminal78368 +Node: Long80400 +Node: Executable Scripts81913 +Ref: Executable Scripts-Footnote-184708 +Node: Comments84811 +Node: Quoting87295 +Node: DOS Quoting92813 +Node: Sample Data Files93488 +Node: Very Simple96083 +Node: Two Rules100985 +Node: More Complex102871 +Node: Statements/Lines105734 +Ref: Statements/Lines-Footnote-1110193 +Node: Other Features110458 +Node: When111395 +Ref: When-Footnote-1113149 +Node: Intro Summary113214 +Node: Invoking Gawk114098 +Node: Command Line115612 +Node: Options116410 +Ref: Options-Footnote-1132061 +Ref: Options-Footnote-2132291 +Node: Other Arguments132316 +Node: Naming Standard Input135263 +Node: Environment Variables136356 +Node: AWKPATH Variable136914 +Ref: AWKPATH Variable-Footnote-1140325 +Ref: AWKPATH Variable-Footnote-2140370 +Node: AWKLIBPATH Variable140631 +Node: Other Environment Variables141888 +Node: Exit Status145526 +Node: Include Files146203 +Node: Loading Shared Libraries149798 +Node: Obsolete151226 +Node: Undocumented151918 +Node: Invoking Summary152215 +Node: Regexp153875 +Node: Regexp Usage155394 +Node: Escape Sequences157431 +Node: Regexp Operators163664 +Ref: Regexp Operators-Footnote-1171081 +Ref: Regexp Operators-Footnote-2171228 +Node: Bracket Expressions171326 +Ref: table-char-classes173349 +Node: Leftmost Longest176295 +Node: Computed Regexps177598 +Node: GNU Regexp Operators181025 +Node: Case-sensitivity184704 +Ref: Case-sensitivity-Footnote-1187600 +Ref: Case-sensitivity-Footnote-2187835 +Node: Strong Regexp Constants187943 +Node: Regexp Summary190885 +Node: Reading Files192491 +Node: Records194654 +Node: awk split records195387 +Node: gawk split records200319 +Ref: gawk split records-Footnote-1204863 +Node: Fields204900 +Node: Nonconstant Fields207641 +Ref: Nonconstant Fields-Footnote-1209877 +Node: Changing Fields210081 +Node: Field Separators216011 +Node: Default Field Splitting218709 +Node: Regexp Field Splitting219827 +Node: Single Character Fields223180 +Node: Command Line Field Separator224240 +Node: Full Line Fields227458 +Ref: Full Line Fields-Footnote-1228980 +Ref: Full Line Fields-Footnote-2229026 +Node: Field Splitting Summary229127 +Node: Constant Size231201 +Node: Splitting By Content235780 +Ref: Splitting By Content-Footnote-1239751 +Node: Multiple Line239914 +Ref: Multiple Line-Footnote-1245797 +Node: Getline245976 +Node: Plain Getline248443 +Node: Getline/Variable251082 +Node: Getline/File252231 +Node: Getline/Variable/File253617 +Ref: Getline/Variable/File-Footnote-1255221 +Node: Getline/Pipe255309 +Node: Getline/Variable/Pipe258014 +Node: Getline/Coprocess259147 +Node: Getline/Variable/Coprocess260412 +Node: Getline Notes261152 +Node: Getline Summary263947 +Ref: table-getline-variants264369 +Node: Read Timeout265117 +Ref: Read Timeout-Footnote-1269024 +Node: Retrying Input269082 +Node: Command-line directories270281 +Node: Input Summary271188 +Node: Input Exercises274360 +Node: Printing275088 +Node: Print276923 +Node: Print Examples278380 +Node: Output Separators281160 +Node: OFMT283177 +Node: Printf284533 +Node: Basic Printf285318 +Node: Control Letters286892 +Node: Format Modifiers290880 +Node: Printf Examples296895 +Node: Redirection299381 +Node: Special FD306224 +Ref: Special FD-Footnote-1309392 +Node: Special Files309466 +Node: Other Inherited Files310083 +Node: Special Network311084 +Node: Special Caveats311944 +Node: Close Files And Pipes312893 +Ref: Close Files And Pipes-Footnote-1320080 +Ref: Close Files And Pipes-Footnote-2320228 +Node: Nonfatal320379 +Node: Output Summary322704 +Node: Output Exercises323926 +Node: Expressions324605 +Node: Values325793 +Node: Constants326471 +Node: Scalar Constants327162 +Ref: Scalar Constants-Footnote-1328026 +Node: Nondecimal-numbers328276 +Node: Regexp Constants331290 +Node: Using Constant Regexps331816 +Node: Variables334979 +Node: Using Variables335636 +Node: Assignment Options337547 +Node: Conversion339421 +Node: Strings And Numbers339945 +Ref: Strings And Numbers-Footnote-1343009 +Node: Locale influences conversions343118 +Ref: table-locale-affects345876 +Node: All Operators346494 +Node: Arithmetic Ops347123 +Node: Concatenation349629 +Ref: Concatenation-Footnote-1352476 +Node: Assignment Ops352583 +Ref: table-assign-ops357575 +Node: Increment Ops358888 +Node: Truth Values and Conditions362348 +Node: Truth Values363422 +Node: Typing and Comparison364470 +Node: Variable Typing365290 +Node: Comparison Operators368914 +Ref: table-relational-ops369333 +Node: POSIX String Comparison372828 +Ref: POSIX String Comparison-Footnote-1373902 +Node: Boolean Ops374041 +Ref: Boolean Ops-Footnote-1378523 +Node: Conditional Exp378615 +Node: Function Calls380351 +Node: Precedence384231 +Node: Locales387890 +Node: Expressions Summary389522 +Node: Patterns and Actions392095 +Node: Pattern Overview393215 +Node: Regexp Patterns394892 +Node: Expression Patterns395434 +Node: Ranges399215 +Node: BEGIN/END402323 +Node: Using BEGIN/END403084 +Ref: Using BEGIN/END-Footnote-1405821 +Node: I/O And BEGIN/END405927 +Node: BEGINFILE/ENDFILE408243 +Node: Empty411150 +Node: Using Shell Variables411467 +Node: Action Overview413741 +Node: Statements416066 +Node: If Statement417914 +Node: While Statement419409 +Node: Do Statement421437 +Node: For Statement422585 +Node: Switch Statement425744 +Node: Break Statement428130 +Node: Continue Statement430222 +Node: Next Statement432049 +Node: Nextfile Statement434432 +Node: Exit Statement437084 +Node: Built-in Variables439489 +Node: User-modified440622 +Node: Auto-set448210 +Ref: Auto-set-Footnote-1462459 +Ref: Auto-set-Footnote-2462665 +Node: ARGC and ARGV462721 +Node: Pattern Action Summary466940 +Node: Arrays469370 +Node: Array Basics470699 +Node: Array Intro471543 +Ref: figure-array-elements473518 +Ref: Array Intro-Footnote-1476222 +Node: Reference to Elements476350 +Node: Assigning Elements478814 +Node: Array Example479305 +Node: Scanning an Array481064 +Node: Controlling Scanning484088 +Ref: Controlling Scanning-Footnote-1489487 +Node: Numeric Array Subscripts489803 +Node: Uninitialized Subscripts491987 +Node: Delete493606 +Ref: Delete-Footnote-1496358 +Node: Multidimensional496415 +Node: Multiscanning499510 +Node: Arrays of Arrays501101 +Node: Arrays Summary505869 +Node: Functions507962 +Node: Built-in509000 +Node: Calling Built-in510078 +Node: Numeric Functions512074 +Ref: Numeric Functions-Footnote-1516907 +Ref: Numeric Functions-Footnote-2517264 +Ref: Numeric Functions-Footnote-3517312 +Node: String Functions517584 +Ref: String Functions-Footnote-1541092 +Ref: String Functions-Footnote-2541221 +Ref: String Functions-Footnote-3541469 +Node: Gory Details541556 +Ref: table-sub-escapes543347 +Ref: table-sub-proposed544866 +Ref: table-posix-sub546229 +Ref: table-gensub-escapes547770 +Ref: Gory Details-Footnote-1548593 +Node: I/O Functions548744 +Ref: I/O Functions-Footnote-1555965 +Node: Time Functions556113 +Ref: Time Functions-Footnote-1566618 +Ref: Time Functions-Footnote-2566686 +Ref: Time Functions-Footnote-3566844 +Ref: Time Functions-Footnote-4566955 +Ref: Time Functions-Footnote-5567067 +Ref: Time Functions-Footnote-6567294 +Node: Bitwise Functions567560 +Ref: table-bitwise-ops568154 +Ref: Bitwise Functions-Footnote-1572492 +Node: Type Functions572665 +Node: I18N Functions574527 +Node: User-defined576178 +Node: Definition Syntax576983 +Ref: Definition Syntax-Footnote-1582670 +Node: Function Example582741 +Ref: Function Example-Footnote-1585663 +Node: Function Caveats585685 +Node: Calling A Function586203 +Node: Variable Scope587161 +Node: Pass By Value/Reference590155 +Node: Return Statement593654 +Node: Dynamic Typing596633 +Node: Indirect Calls597563 +Ref: Indirect Calls-Footnote-1607814 +Node: Functions Summary607942 +Node: Library Functions610647 +Ref: Library Functions-Footnote-1614256 +Ref: Library Functions-Footnote-2614399 +Node: Library Names614570 +Ref: Library Names-Footnote-1618031 +Ref: Library Names-Footnote-2618254 +Node: General Functions618340 +Node: Strtonum Function619443 +Node: Assert Function622465 +Node: Round Function625791 +Node: Cliff Random Function627332 +Node: Ordinal Functions628348 +Ref: Ordinal Functions-Footnote-1631411 +Ref: Ordinal Functions-Footnote-2631663 +Node: Join Function631873 +Ref: Join Function-Footnote-1633643 +Node: Getlocaltime Function633843 +Node: Readfile Function637587 +Node: Shell Quoting639561 +Node: Data File Management640962 +Node: Filetrans Function641594 +Node: Rewind Function645691 +Node: File Checking647077 +Ref: File Checking-Footnote-1648411 +Node: Empty Files648612 +Node: Ignoring Assigns650591 +Node: Getopt Function652141 +Ref: Getopt Function-Footnote-1663611 +Node: Passwd Functions663811 +Ref: Passwd Functions-Footnote-1672652 +Node: Group Functions672740 +Ref: Group Functions-Footnote-1680639 +Node: Walking Arrays680846 +Node: Library Functions Summary683856 +Node: Library Exercises685262 +Node: Sample Programs685727 +Node: Running Examples686497 +Node: Clones687225 +Node: Cut Program688449 +Node: Egrep Program698170 +Ref: Egrep Program-Footnote-1705682 +Node: Id Program705792 +Node: Split Program709472 +Ref: Split Program-Footnote-1712931 +Node: Tee Program713060 +Node: Uniq Program715850 +Node: Wc Program723276 +Ref: Wc Program-Footnote-1727531 +Node: Miscellaneous Programs727625 +Node: Dupword Program728838 +Node: Alarm Program730868 +Node: Translate Program735723 +Ref: Translate Program-Footnote-1740288 +Node: Labels Program740558 +Ref: Labels Program-Footnote-1743909 +Node: Word Sorting743993 +Node: History Sorting748065 +Node: Extract Program749900 +Node: Simple Sed757431 +Node: Igawk Program760505 +Ref: Igawk Program-Footnote-1774836 +Ref: Igawk Program-Footnote-2775038 +Ref: Igawk Program-Footnote-3775160 +Node: Anagram Program775275 +Node: Signature Program778337 +Node: Programs Summary779584 +Node: Programs Exercises780799 +Ref: Programs Exercises-Footnote-1784928 +Node: Advanced Features785019 +Node: Nondecimal Data787009 +Node: Array Sorting788600 +Node: Controlling Array Traversal789300 +Ref: Controlling Array Traversal-Footnote-1797669 +Node: Array Sorting Functions797787 +Ref: Array Sorting Functions-Footnote-1801674 +Node: Two-way I/O801870 +Ref: Two-way I/O-Footnote-1806821 +Ref: Two-way I/O-Footnote-2807008 +Node: TCP/IP Networking807090 +Node: Profiling809997 +Node: Advanced Features Summary818268 +Node: Internationalization820204 +Node: I18N and L10N821684 +Node: Explaining gettext822371 +Ref: Explaining gettext-Footnote-1827394 +Ref: Explaining gettext-Footnote-2827579 +Node: Programmer i18n827744 +Ref: Programmer i18n-Footnote-1832600 +Node: Translator i18n832649 +Node: String Extraction833443 +Ref: String Extraction-Footnote-1834576 +Node: Printf Ordering834662 +Ref: Printf Ordering-Footnote-1837448 +Node: I18N Portability837512 +Ref: I18N Portability-Footnote-1839968 +Node: I18N Example840031 +Ref: I18N Example-Footnote-1842837 +Node: Gawk I18N842910 +Node: I18N Summary843555 +Node: Debugger844896 +Node: Debugging845918 +Node: Debugging Concepts846359 +Node: Debugging Terms848168 +Node: Awk Debugging850743 +Node: Sample Debugging Session851649 +Node: Debugger Invocation852183 +Node: Finding The Bug853569 +Node: List of Debugger Commands860047 +Node: Breakpoint Control861380 +Node: Debugger Execution Control865074 +Node: Viewing And Changing Data868436 +Node: Execution Stack871810 +Node: Debugger Info873447 +Node: Miscellaneous Debugger Commands877518 +Node: Readline Support882527 +Node: Limitations883423 +Node: Debugging Summary885532 +Node: Arbitrary Precision Arithmetic886705 +Node: Computer Arithmetic888121 +Ref: table-numeric-ranges891712 +Ref: Computer Arithmetic-Footnote-1892434 +Node: Math Definitions892491 +Ref: table-ieee-formats895805 +Ref: Math Definitions-Footnote-1896408 +Node: MPFR features896513 +Node: FP Math Caution898186 +Ref: FP Math Caution-Footnote-1899258 +Node: Inexactness of computations899627 +Node: Inexact representation900587 +Node: Comparing FP Values901947 +Node: Errors accumulate903029 +Node: Getting Accuracy904462 +Node: Try To Round907172 +Node: Setting precision908071 +Ref: table-predefined-precision-strings908768 +Node: Setting the rounding mode910598 +Ref: table-gawk-rounding-modes910972 +Ref: Setting the rounding mode-Footnote-1914380 +Node: Arbitrary Precision Integers914559 +Ref: Arbitrary Precision Integers-Footnote-1919476 +Node: POSIX Floating Point Problems919625 +Ref: POSIX Floating Point Problems-Footnote-1923507 +Node: Floating point summary923545 +Node: Dynamic Extensions925735 +Node: Extension Intro927288 +Node: Plugin License928554 +Node: Extension Mechanism Outline929351 +Ref: figure-load-extension929790 +Ref: figure-register-new-function931355 +Ref: figure-call-new-function932447 +Node: Extension API Description934510 +Node: Extension API Functions Introduction936044 +Node: General Data Types940903 +Ref: General Data Types-Footnote-1946858 +Node: Memory Allocation Functions947157 +Ref: Memory Allocation Functions-Footnote-1950002 +Node: Constructor Functions950101 +Node: Registration Functions951846 +Node: Extension Functions952531 +Node: Exit Callback Functions954830 +Node: Extension Version String956080 +Node: Input Parsers956743 +Node: Output Wrappers966628 +Node: Two-way processors971140 +Node: Printing Messages973404 +Ref: Printing Messages-Footnote-1974480 +Node: Updating 'ERRNO'974633 +Node: Requesting Values975374 +Ref: table-value-types-returned976113 +Node: Accessing Parameters976996 +Node: Symbol Table Access978232 +Node: Symbol table by name978744 +Node: Symbol table by cookie980765 +Ref: Symbol table by cookie-Footnote-1984914 +Node: Cached values984978 +Ref: Cached values-Footnote-1988479 +Node: Array Manipulation988570 +Ref: Array Manipulation-Footnote-1989661 +Node: Array Data Types989698 +Ref: Array Data Types-Footnote-1992356 +Node: Array Functions992448 +Node: Flattening Arrays996307 +Node: Creating Arrays1003215 +Node: Redirection API1007987 +Node: Extension API Variables1010818 +Node: Extension Versioning1011451 +Node: Extension API Informational Variables1013342 +Node: Extension API Boilerplate1014406 +Node: Finding Extensions1018220 +Node: Extension Example1018780 +Node: Internal File Description1019578 +Node: Internal File Ops1023658 +Ref: Internal File Ops-Footnote-11035420 +Node: Using Internal File Ops1035560 +Ref: Using Internal File Ops-Footnote-11037943 +Node: Extension Samples1038218 +Node: Extension Sample File Functions1039747 +Node: Extension Sample Fnmatch1047396 +Node: Extension Sample Fork1048883 +Node: Extension Sample Inplace1050101 +Node: Extension Sample Ord1053311 +Node: Extension Sample Readdir1054147 +Ref: table-readdir-file-types1055036 +Node: Extension Sample Revout1055841 +Node: Extension Sample Rev2way1056430 +Node: Extension Sample Read write array1057170 +Node: Extension Sample Readfile1059112 +Node: Extension Sample Time1060207 +Node: Extension Sample API Tests1061555 +Node: gawkextlib1062047 +Node: Extension summary1064494 +Node: Extension Exercises1068186 +Node: Language History1069683 +Node: V7/SVR3.11071339 +Node: SVR41073492 +Node: POSIX1074926 +Node: BTL1076306 +Node: POSIX/GNU1077036 +Node: Feature History1082875 +Node: Common Extensions1097194 +Node: Ranges and Locales1098477 +Ref: Ranges and Locales-Footnote-11103093 +Ref: Ranges and Locales-Footnote-21103120 +Ref: Ranges and Locales-Footnote-31103355 +Node: Contributors1103576 +Node: History summary1109145 +Node: Installation1110525 +Node: Gawk Distribution1111470 +Node: Getting1111954 +Node: Extracting1112777 +Node: Distribution contents1114415 +Node: Unix Installation1120511 +Node: Quick Installation1121193 +Node: Shell Startup Files1123607 +Node: Additional Configuration Options1124685 +Node: Configuration Philosophy1126490 +Node: Non-Unix Installation1128860 +Node: PC Installation1129318 +Node: PC Binary Installation1130638 +Node: PC Compiling1132490 +Ref: PC Compiling-Footnote-11135514 +Node: PC Testing1135623 +Node: PC Using1136803 +Node: Cygwin1140917 +Node: MSYS1141687 +Node: VMS Installation1142188 +Node: VMS Compilation1142979 +Ref: VMS Compilation-Footnote-11144209 +Node: VMS Dynamic Extensions1144267 +Node: VMS Installation Details1145952 +Node: VMS Running1148205 +Node: VMS GNV1151046 +Node: VMS Old Gawk1151781 +Node: Bugs1152252 +Node: Other Versions1156366 +Node: Installation summary1162840 +Node: Notes1163898 +Node: Compatibility Mode1164763 +Node: Additions1165545 +Node: Accessing The Source1166470 +Node: Adding Code1167906 +Node: New Ports1174061 +Node: Derived Files1178549 +Ref: Derived Files-Footnote-11184034 +Ref: Derived Files-Footnote-21184069 +Ref: Derived Files-Footnote-31184667 +Node: Future Extensions1184781 +Node: Implementation Limitations1185439 +Node: Extension Design1186622 +Node: Old Extension Problems1187776 +Ref: Old Extension Problems-Footnote-11189294 +Node: Extension New Mechanism Goals1189351 +Ref: Extension New Mechanism Goals-Footnote-11192715 +Node: Extension Other Design Decisions1192904 +Node: Extension Future Growth1195017 +Node: Old Extension Mechanism1195853 +Node: Notes summary1197616 +Node: Basic Concepts1198798 +Node: Basic High Level1199479 +Ref: figure-general-flow1199761 +Ref: figure-process-flow1200446 +Ref: Basic High Level-Footnote-11203747 +Node: Basic Data Typing1203932 +Node: Glossary1207260 +Node: Copying1239206 +Node: GNU Free Documentation License1276745 +Node: Index1301863 End Tag Table |