aboutsummaryrefslogtreecommitdiffstats
path: root/doc/gawk.info
diff options
context:
space:
mode:
Diffstat (limited to 'doc/gawk.info')
-rw-r--r--doc/gawk.info1231
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