summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2023-03-29 20:33:16 +0300
committerArnold D. Robbins <arnold@skeeve.com>2023-03-29 20:33:16 +0300
commitf60fe7e831e6ac2fc817b503a89e98b4396cd6c2 (patch)
tree9f9bd533638a43b4676f97565efb381e5cbe5f8c
parent3d7e2e99724fdb52daabcd39f1ee6cffe70ee75f (diff)
downloadgawk-f60fe7e831e6ac2fc817b503a89e98b4396cd6c2.tar.gz
More doc updates.
-rw-r--r--doc/ChangeLog4
-rw-r--r--doc/gawk.info1077
-rw-r--r--doc/gawk.texi46
-rw-r--r--doc/gawktexi.in19
4 files changed, 603 insertions, 543 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 07425432..f8d9bf24 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -3,6 +3,10 @@
* texinfo.tex: Sync from Texinfo.
* gawktexi.in (Dynamic Typing): Add a quote.
(Common Extensions): Sort the table entries, sort of.
+ * gawktexi.in: Several fixes related to CSV; thanks to
+ Antonio Columbo. Note that `nawk' is BWK awk.
+ (Common Extensions): Add entries to the table for \u and
+ CSV support.
2023-03-26 Arnold D. Robbins <arnold@skeeve.com>
diff --git a/doc/gawk.info b/doc/gawk.info
index 7f1de2d5..614a7154 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -5126,7 +5126,7 @@ separator. To do this, use the special ‘BEGIN’ pattern (*note
BEGIN/END::). For example, here we set the value of ‘FS’ to the string
‘":"’:
- awk 'BEGIN { FS = "," } ; { print $2 }'
+ awk 'BEGIN { FS = ":" } ; { print $2 }'
Given the input line:
@@ -5324,6 +5324,11 @@ newlines that are not enclosed in double quotes. Thus, use of the
‘--csv’ totally overrides normal record processing with ‘RS’ (*note
Records::).
+ Carriage-Return–Line-Feed Line Endings In CSV Files
+
+ ‘\r\n’ is the invention of the devil.
+ — _Brian Kernighan_
+
Many CSV files are imported from systems where the line terminator
for text files is a carriage-return–line-feed pair (CR-LF, ‘\r’ followed
by ‘\n’). For ease of use, when processing CSV files, ‘gawk’ simply
@@ -8244,7 +8249,7 @@ Other Versions::) elide the backslash and newline, as in C:
In POSIX mode (*note Options::), ‘gawk’ does not allow escaped
newlines. Otherwise, it behaves as just described.
- BWK ‘awk’ and BusyBox ‘awk’ remove the backslash but leave the
+ BWK ‘awk’(2) and BusyBox ‘awk’ remove the backslash but leave the
newline intact, as part of the string:
$ nawk 'BEGIN { print "hello, \
@@ -8259,6 +8264,8 @@ uses double-precision floating-point numbers. On most modern systems,
these are in IEEE 754 standard format. *Note Arbitrary Precision
Arithmetic::, for much more information.
+ (2) In all examples throughout this Info file, ‘nawk’ is BWK ‘awk’.
+

File: gawk.info, Node: Nondecimal-numbers, Next: Regexp Constants, Prev: Scalar Constants, Up: Constants
@@ -15544,9 +15551,9 @@ others do this:
⊣ 1
Or ‘awk’ could wait until runtime to set the type of ‘a’. In this
-case, since ‘a’ was never assigned used before being passed to the
-function, how the function uses it forces the type to be resolved to
-either scalar or array. ‘gawk’ and the MKS ‘awk’ do this:
+case, since ‘a’ was never used before being passed to the function, how
+the function uses it forces the type to be resolved to either scalar or
+array. ‘gawk’ and the MKS ‘awk’ do this:
$ gawk -v A=0 -f funky.awk
⊣ <>
@@ -30930,7 +30937,7 @@ unfortunately. It added the following features:
• The ability to make ‘gawk’ buffer output to pipes (*note
Noflush::).
- • The ‘\u’ escape sequence (*note Escape Sequences::)
+ • The ‘\u’ escape sequence (*note Escape Sequences::).
• The need for GNU ‘libsigsegv’ was removed from ‘gawk’. The
value-add was never very much and it caused problems in some
@@ -30950,10 +30957,12 @@ Feature BWK ‘awk’ ‘mawk’ ‘gawk’ Now stand
--------------------------------------------------------------------------
‘**’ and ‘**=’ operators X X
‘\x’ escape sequence X X X
+‘\u’ escape sequence X X
‘/dev/stdin’ special file X X X
‘/dev/stdout’ special file X X X
‘/dev/stderr’ special file X X X
‘BINMODE’ variable X X
+CSV support X X
‘FS’ as null string X X X
‘delete’ without subscript X X X X
‘fflush()’ function X X X X
@@ -38448,7 +38457,6 @@ Index
* OFS variable <1>: Output Separators. (line 6)
* OFS variable <2>: User-modified. (line 116)
* op-codes, trace of internal: Options. (line 197)
-* op-codes, trace of internal <1>: Options. (line 203)
* OpenBSD: Glossary. (line 747)
* OpenSolaris: Other Versions. (line 100)
* operating systems, BSD-based: Manual History. (line 28)
@@ -39087,6 +39095,8 @@ Index
(line 50)
* sidebar, RS = "\0" Is Not Portable: gawk split records. (line 75)
* sidebar, Understanding $0: Changing Fields. (line 135)
+* sidebar, Carriage-Return–Line-Feed Line Endings In CSV Files: Comma Separated Fields.
+ (line 45)
* sidebar, Changing FS Does Not Affect the Fields: Full Line Fields.
(line 14)
* sidebar, FS and IGNORECASE: Field Splitting Summary.
@@ -39649,532 +39659,533 @@ Node: Regexp Field Splitting243342
Node: Single Character Fields247171
Node: Comma Separated Fields248260
Ref: table-csv-examples249679
-Node: Command Line Field Separator251448
-Node: Full Line Fields254834
-Ref: Full Line Fields-Footnote-1256414
-Ref: Full Line Fields-Footnote-2256460
-Node: Field Splitting Summary256568
-Node: Constant Size259002
-Node: Fixed width data259746
-Node: Skipping intervening263265
-Node: Allowing trailing data264067
-Node: Fields with fixed data265132
-Node: Splitting By Content266758
-Ref: Splitting By Content-Footnote-1271027
-Node: More CSV271190
-Node: FS versus FPAT272843
-Node: Testing field creation274052
-Node: Multiple Line275830
-Node: Getline282312
-Node: Plain Getline284898
-Node: Getline/Variable287548
-Node: Getline/File288745
-Node: Getline/Variable/File290193
-Ref: Getline/Variable/File-Footnote-1291838
-Node: Getline/Pipe291934
-Node: Getline/Variable/Pipe294747
-Node: Getline/Coprocess295930
-Node: Getline/Variable/Coprocess297253
-Node: Getline Notes298019
-Node: Getline Summary300980
-Ref: table-getline-variants301424
-Node: Read Timeout302329
-Ref: Read Timeout-Footnote-1306293
-Node: Retrying Input306351
-Node: Command-line directories307618
-Node: Input Summary308556
-Node: Input Exercises311936
-Node: Printing312376
-Node: Print314319
-Node: Print Examples315825
-Node: Output Separators318678
-Node: OFMT320789
-Node: Printf322212
-Node: Basic Printf323017
-Node: Control Letters324653
-Node: Format Modifiers330122
-Node: Printf Examples336408
-Node: Redirection338953
-Node: Special FD346027
-Ref: Special FD-Footnote-1349317
-Node: Special Files349403
-Node: Other Inherited Files350032
-Node: Special Network351097
-Node: Special Caveats351985
-Node: Close Files And Pipes352968
-Ref: Close Files And Pipes-Footnote-1359104
-Node: Close Return Value359260
-Ref: table-close-pipe-return-values360535
-Ref: Close Return Value-Footnote-1361369
-Node: Noflush361525
-Node: Nonfatal363037
-Node: Output Summary365454
-Node: Output Exercises366740
-Node: Expressions367431
-Node: Values368633
-Node: Constants369311
-Node: Scalar Constants370008
-Ref: Scalar Constants-Footnote-1372583
-Node: Nondecimal-numbers372833
-Node: Regexp Constants375954
-Node: Using Constant Regexps376500
-Node: Standard Regexp Constants377146
-Node: Strong Regexp Constants380446
-Node: Variables384297
-Node: Using Variables384962
-Node: Assignment Options386942
-Node: Conversion389504
-Node: Strings And Numbers390036
-Ref: Strings And Numbers-Footnote-1393255
-Node: Locale influences conversions393364
-Ref: table-locale-affects396214
-Node: All Operators396857
-Node: Arithmetic Ops397498
-Node: Concatenation400328
-Ref: Concatenation-Footnote-1403278
-Node: Assignment Ops403401
-Ref: table-assign-ops408540
-Node: Increment Ops409922
-Node: Truth Values and Conditions413521
-Node: Truth Values414647
-Node: Typing and Comparison415738
-Node: Variable Typing416574
-Ref: Variable Typing-Footnote-1423236
-Ref: Variable Typing-Footnote-2423316
-Node: Comparison Operators423399
-Ref: table-relational-ops423826
-Node: POSIX String Comparison427512
-Ref: POSIX String Comparison-Footnote-1429271
-Ref: POSIX String Comparison-Footnote-2429414
-Node: Boolean Ops429498
-Ref: Boolean Ops-Footnote-1434191
-Node: Conditional Exp434287
-Node: Function Calls436073
-Node: Precedence440023
-Node: Locales443900
-Node: Expressions Summary445582
-Node: Patterns and Actions448245
-Node: Pattern Overview449387
-Node: Regexp Patterns451113
-Node: Expression Patterns451659
-Node: Ranges455568
-Node: BEGIN/END458746
-Node: Using BEGIN/END459559
-Ref: Using BEGIN/END-Footnote-1462469
-Node: I/O And BEGIN/END462579
-Node: BEGINFILE/ENDFILE465060
-Node: Empty468501
-Node: Using Shell Variables468818
-Node: Action Overview471156
-Node: Statements473591
-Node: If Statement475489
-Node: While Statement477058
-Node: Do Statement479146
-Node: For Statement480332
-Node: Switch Statement483689
-Node: Break Statement486240
-Node: Continue Statement488432
-Node: Next Statement490364
-Node: Nextfile Statement492861
-Node: Exit Statement495722
-Node: Built-in Variables498255
-Node: User-modified499434
-Node: Auto-set507645
-Ref: Auto-set-Footnote-1525744
-Ref: Auto-set-Footnote-2525962
-Node: ARGC and ARGV526018
-Node: Pattern Action Summary530457
-Node: Arrays533073
-Node: Array Basics534450
-Node: Array Intro535300
-Ref: figure-array-elements537316
-Ref: Array Intro-Footnote-1540185
-Node: Reference to Elements540317
-Node: Assigning Elements542839
-Node: Array Example543334
-Node: Scanning an Array545303
-Node: Controlling Scanning548400
-Ref: Controlling Scanning-Footnote-1555063
-Node: Numeric Array Subscripts555387
-Node: Uninitialized Subscripts557661
-Node: Delete559340
-Ref: Delete-Footnote-1562154
-Node: Multidimensional562211
-Node: Multiscanning565416
-Node: Arrays of Arrays567088
-Node: Arrays Summary571988
-Node: Functions574177
-Node: Built-in575237
-Node: Calling Built-in576426
-Node: Boolean Functions578473
-Node: Numeric Functions579043
-Ref: Numeric Functions-Footnote-1583236
-Ref: Numeric Functions-Footnote-2583920
-Ref: Numeric Functions-Footnote-3583972
-Node: String Functions584248
-Ref: String Functions-Footnote-1610479
-Ref: String Functions-Footnote-2610613
-Ref: String Functions-Footnote-3610873
-Node: Gory Details610960
-Ref: table-sub-escapes612867
-Ref: table-sub-proposed614513
-Ref: table-posix-sub616023
-Ref: table-gensub-escapes617711
-Ref: Gory Details-Footnote-1618645
-Node: I/O Functions618799
-Ref: table-system-return-values625486
-Ref: I/O Functions-Footnote-1627657
-Ref: I/O Functions-Footnote-2627805
-Node: Time Functions627925
-Ref: Time Functions-Footnote-1639081
-Ref: Time Functions-Footnote-2639157
-Ref: Time Functions-Footnote-3639319
-Ref: Time Functions-Footnote-4639430
-Ref: Time Functions-Footnote-5639548
-Ref: Time Functions-Footnote-6639783
-Node: Bitwise Functions640065
-Ref: table-bitwise-ops640667
-Ref: Bitwise Functions-Footnote-1646921
-Ref: Bitwise Functions-Footnote-2647100
-Node: Type Functions647297
-Node: I18N Functions650890
-Node: User-defined652633
-Node: Definition Syntax653453
-Ref: Definition Syntax-Footnote-1659281
-Node: Function Example659358
-Ref: Function Example-Footnote-1662337
-Node: Function Calling662359
-Node: Calling A Function662953
-Node: Variable Scope663923
-Node: Pass By Value/Reference666977
-Node: Function Caveats669709
-Ref: Function Caveats-Footnote-1671804
-Node: Return Statement671928
-Node: Dynamic Typing674983
-Node: Indirect Calls677380
-Node: Functions Summary688539
-Node: Library Functions691316
-Ref: Library Functions-Footnote-1694864
-Ref: Library Functions-Footnote-2695007
-Node: Library Names695182
-Ref: Library Names-Footnote-1698976
-Ref: Library Names-Footnote-2699203
-Node: General Functions699299
-Node: Strtonum Function700493
-Node: Assert Function703575
-Node: Round Function707027
-Node: Cliff Random Function708605
-Node: Ordinal Functions709638
-Ref: Ordinal Functions-Footnote-1712747
-Ref: Ordinal Functions-Footnote-2712999
-Node: Join Function713213
-Ref: Join Function-Footnote-1715016
-Node: Getlocaltime Function715220
-Node: Readfile Function718994
-Node: Shell Quoting721023
-Node: Isnumeric Function722479
-Node: Data File Management723891
-Node: Filetrans Function724523
-Node: Rewind Function728817
-Node: File Checking730796
-Ref: File Checking-Footnote-1732168
-Node: Empty Files732375
-Node: Ignoring Assigns734442
-Node: Getopt Function736016
-Ref: Getopt Function-Footnote-1751850
-Node: Passwd Functions752062
-Ref: Passwd Functions-Footnote-1761244
-Node: Group Functions761332
-Ref: Group Functions-Footnote-1769470
-Node: Walking Arrays769683
-Node: Library Functions Summary772731
-Node: Library Exercises774155
-Node: Sample Programs774642
-Node: Running Examples775424
-Node: Clones776176
-Node: Cut Program777448
-Node: Egrep Program787889
-Node: Id Program797206
-Node: Split Program807320
-Ref: Split Program-Footnote-1817555
-Node: Tee Program817742
-Node: Uniq Program820651
-Node: Wc Program828516
-Node: Bytes vs. Characters828911
-Node: Using extensions830513
-Node: wc program831293
-Node: Miscellaneous Programs836299
-Node: Dupword Program837528
-Node: Alarm Program839591
-Node: Translate Program844504
-Ref: Translate Program-Footnote-1849245
-Node: Labels Program849523
-Ref: Labels Program-Footnote-1852964
-Node: Word Sorting853056
-Node: History Sorting857250
-Node: Extract Program859525
-Node: Simple Sed867794
-Node: Igawk Program871010
-Ref: Igawk Program-Footnote-1886257
-Ref: Igawk Program-Footnote-2886463
-Ref: Igawk Program-Footnote-3886593
-Node: Anagram Program886720
-Node: Signature Program889816
-Node: Programs Summary891068
-Node: Programs Exercises892326
-Ref: Programs Exercises-Footnote-1896642
-Node: Advanced Features896728
-Node: Nondecimal Data899222
-Node: Boolean Typed Values900852
-Node: Array Sorting902827
-Node: Controlling Array Traversal903556
-Ref: Controlling Array Traversal-Footnote-1912063
-Node: Array Sorting Functions912185
-Ref: Array Sorting Functions-Footnote-1918304
-Node: Two-way I/O918512
-Ref: Two-way I/O-Footnote-1926507
-Ref: Two-way I/O-Footnote-2926698
-Node: TCP/IP Networking926780
-Node: Profiling929960
-Node: Persistent Memory939670
-Ref: Persistent Memory-Footnote-1948628
-Node: Extension Philosophy948759
-Node: Advanced Features Summary950294
-Node: Internationalization952564
-Node: I18N and L10N954270
-Node: Explaining gettext954965
-Ref: Explaining gettext-Footnote-1961118
-Ref: Explaining gettext-Footnote-2961313
-Node: Programmer i18n961478
-Ref: Programmer i18n-Footnote-1966591
-Node: Translator i18n966640
-Node: String Extraction967476
-Ref: String Extraction-Footnote-1968654
-Node: Printf Ordering968752
-Ref: Printf Ordering-Footnote-1971614
-Node: I18N Portability971682
-Ref: I18N Portability-Footnote-1974256
-Node: I18N Example974327
-Ref: I18N Example-Footnote-1977727
-Ref: I18N Example-Footnote-2977803
-Node: Gawk I18N977920
-Node: I18N Summary978576
-Node: Debugger979977
-Node: Debugging981001
-Node: Debugging Concepts981450
-Node: Debugging Terms983276
-Node: Awk Debugging985889
-Ref: Awk Debugging-Footnote-1986866
-Node: Sample Debugging Session987006
-Node: Debugger Invocation987558
-Node: Finding The Bug989187
-Node: List of Debugger Commands995873
-Node: Breakpoint Control997250
-Node: Debugger Execution Control1001082
-Node: Viewing And Changing Data1004562
-Node: Execution Stack1008300
-Node: Debugger Info1009981
-Node: Miscellaneous Debugger Commands1014280
-Node: Readline Support1019533
-Node: Limitations1020479
-Node: Debugging Summary1023123
-Node: Namespaces1024426
-Node: Global Namespace1025553
-Node: Qualified Names1026998
-Node: Default Namespace1028033
-Node: Changing The Namespace1028808
-Node: Naming Rules1030502
-Node: Internal Name Management1032417
-Node: Namespace Example1033487
-Node: Namespace And Features1036070
-Node: Namespace Summary1037527
-Node: Arbitrary Precision Arithmetic1039040
-Node: Computer Arithmetic1040559
-Ref: table-numeric-ranges1044376
-Ref: table-floating-point-ranges1044874
-Ref: Computer Arithmetic-Footnote-11045533
-Node: Math Definitions1045592
-Ref: table-ieee-formats1048637
-Node: MPFR features1049211
-Node: MPFR On Parole1049664
-Ref: MPFR On Parole-Footnote-11050508
-Node: MPFR Intro1050667
-Node: FP Math Caution1052357
-Ref: FP Math Caution-Footnote-11053431
-Node: Inexactness of computations1053808
-Node: Inexact representation1054839
-Node: Comparing FP Values1056222
-Node: Errors accumulate1057480
-Node: Strange values1058947
-Ref: Strange values-Footnote-11061613
-Node: Getting Accuracy1061718
-Node: Try To Round1064455
-Node: Setting precision1065362
-Ref: table-predefined-precision-strings1066067
-Node: Setting the rounding mode1067952
-Ref: table-gawk-rounding-modes1068334
-Ref: Setting the rounding mode-Footnote-11072392
-Node: Arbitrary Precision Integers1072575
-Ref: Arbitrary Precision Integers-Footnote-11075787
-Node: Checking for MPFR1075943
-Node: POSIX Floating Point Problems1077433
-Ref: POSIX Floating Point Problems-Footnote-11082297
-Node: Floating point summary1082335
-Node: Dynamic Extensions1084599
-Node: Extension Intro1086198
-Node: Plugin License1087506
-Node: Extension Mechanism Outline1088319
-Ref: figure-load-extension1088770
-Ref: figure-register-new-function1090355
-Ref: figure-call-new-function1091465
-Node: Extension API Description1093589
-Node: Extension API Functions Introduction1095318
-Ref: table-api-std-headers1097216
-Node: General Data Types1101680
-Ref: General Data Types-Footnote-11110848
-Node: Memory Allocation Functions1111163
-Ref: Memory Allocation Functions-Footnote-11115888
-Node: Constructor Functions1115987
-Node: API Ownership of MPFR and GMP Values1119892
-Node: Registration Functions1121453
-Node: Extension Functions1122157
-Node: Exit Callback Functions1127733
-Node: Extension Version String1129052
-Node: Input Parsers1129747
-Node: Output Wrappers1144391
-Node: Two-way processors1149239
-Node: Printing Messages1151600
-Ref: Printing Messages-Footnote-11152814
-Node: Updating ERRNO1152969
-Node: Requesting Values1153768
-Ref: table-value-types-returned1154521
-Node: Accessing Parameters1155630
-Node: Symbol Table Access1156914
-Node: Symbol table by name1157430
-Ref: Symbol table by name-Footnote-11160641
-Node: Symbol table by cookie1160773
-Ref: Symbol table by cookie-Footnote-11165054
-Node: Cached values1165118
-Ref: Cached values-Footnote-11168762
-Node: Array Manipulation1168919
-Ref: Array Manipulation-Footnote-11170022
-Node: Array Data Types1170059
-Ref: Array Data Types-Footnote-11172881
-Node: Array Functions1172981
-Node: Flattening Arrays1178010
-Node: Creating Arrays1185062
-Node: Redirection API1189912
-Node: Extension API Variables1192933
-Node: Extension Versioning1193658
-Ref: gawk-api-version1194095
-Node: Extension GMP/MPFR Versioning1195883
-Node: Extension API Informational Variables1197589
-Node: Extension API Boilerplate1198750
-Node: Changes from API V11202886
-Node: Finding Extensions1204520
-Node: Extension Example1205095
-Node: Internal File Description1205919
-Node: Internal File Ops1210243
-Ref: Internal File Ops-Footnote-11221801
-Node: Using Internal File Ops1221949
-Ref: Using Internal File Ops-Footnote-11224380
-Node: Extension Samples1224658
-Node: Extension Sample File Functions1226227
-Node: Extension Sample Fnmatch1234365
-Node: Extension Sample Fork1235960
-Node: Extension Sample Inplace1237236
-Node: Extension Sample Ord1240908
-Node: Extension Sample Readdir1241784
-Ref: table-readdir-file-types1242681
-Node: Extension Sample Revout1243819
-Node: Extension Sample Rev2way1244416
-Node: Extension Sample Read write array1245168
-Node: Extension Sample Readfile1248442
-Node: Extension Sample Time1249573
-Node: Extension Sample API Tests1251863
-Node: gawkextlib1252371
-Node: Extension summary1255407
-Node: Extension Exercises1259265
-Node: Language History1260543
-Node: V7/SVR3.11262257
-Node: SVR41264607
-Node: POSIX1266139
-Node: BTL1267564
-Node: POSIX/GNU1268333
-Node: Feature History1274864
-Node: Common Extensions1294430
-Node: Ranges and Locales1295799
-Ref: Ranges and Locales-Footnote-11300600
-Ref: Ranges and Locales-Footnote-21300627
-Ref: Ranges and Locales-Footnote-31300866
-Node: Contributors1301089
-Node: History summary1307294
-Node: Installation1308740
-Node: Gawk Distribution1309704
-Node: Getting1310196
-Node: Extracting1311195
-Node: Distribution contents1312907
-Node: Unix Installation1320987
-Node: Quick Installation1321809
-Node: Compiling with MPFR1324355
-Node: Shell Startup Files1325061
-Node: Additional Configuration Options1326218
-Node: Configuration Philosophy1328605
-Node: Compiling from Git1331107
-Node: Building the Documentation1331666
-Node: Non-Unix Installation1333078
-Node: PC Installation1333554
-Node: PC Binary Installation1334427
-Node: PC Compiling1335332
-Node: PC Using1336510
-Node: Cygwin1340238
-Node: MSYS1341494
-Node: OpenVMS Installation1342126
-Node: OpenVMS Compilation1342807
-Ref: OpenVMS Compilation-Footnote-11344290
-Node: OpenVMS Dynamic Extensions1344352
-Node: OpenVMS Installation Details1345988
-Node: OpenVMS Running1348423
-Node: OpenVMS GNV1352560
-Node: Bugs1353315
-Node: Bug definition1354239
-Node: Bug address1357890
-Node: Usenet1361481
-Node: Performance bugs1362712
-Node: Asking for help1365730
-Node: Maintainers1367721
-Node: Other Versions1368748
-Node: Installation summary1377680
-Node: Notes1379064
-Node: Compatibility Mode1379874
-Node: Additions1380696
-Node: Accessing The Source1381641
-Node: Adding Code1383176
-Node: New Ports1390312
-Node: Derived Files1394822
-Ref: Derived Files-Footnote-11400669
-Ref: Derived Files-Footnote-21400704
-Ref: Derived Files-Footnote-31401321
-Node: Future Extensions1401435
-Node: Implementation Limitations1402107
-Node: Extension Design1403349
-Node: Old Extension Problems1404513
-Ref: Old Extension Problems-Footnote-11406089
-Node: Extension New Mechanism Goals1406150
-Ref: Extension New Mechanism Goals-Footnote-11409646
-Node: Extension Other Design Decisions1409847
-Node: Extension Future Growth1412046
-Node: Notes summary1412670
-Node: Basic Concepts1413883
-Node: Basic High Level1414568
-Ref: figure-general-flow1414850
-Ref: figure-process-flow1415557
-Ref: Basic High Level-Footnote-11418958
-Node: Basic Data Typing1419147
-Node: Glossary1422565
-Node: Copying1455687
-Node: GNU Free Documentation License1493448
-Node: Index1518771
+Node: Command Line Field Separator251609
+Node: Full Line Fields254995
+Ref: Full Line Fields-Footnote-1256575
+Ref: Full Line Fields-Footnote-2256621
+Node: Field Splitting Summary256729
+Node: Constant Size259163
+Node: Fixed width data259907
+Node: Skipping intervening263426
+Node: Allowing trailing data264228
+Node: Fields with fixed data265293
+Node: Splitting By Content266919
+Ref: Splitting By Content-Footnote-1271188
+Node: More CSV271351
+Node: FS versus FPAT273004
+Node: Testing field creation274213
+Node: Multiple Line275991
+Node: Getline282473
+Node: Plain Getline285059
+Node: Getline/Variable287709
+Node: Getline/File288906
+Node: Getline/Variable/File290354
+Ref: Getline/Variable/File-Footnote-1291999
+Node: Getline/Pipe292095
+Node: Getline/Variable/Pipe294908
+Node: Getline/Coprocess296091
+Node: Getline/Variable/Coprocess297414
+Node: Getline Notes298180
+Node: Getline Summary301141
+Ref: table-getline-variants301585
+Node: Read Timeout302490
+Ref: Read Timeout-Footnote-1306454
+Node: Retrying Input306512
+Node: Command-line directories307779
+Node: Input Summary308717
+Node: Input Exercises312097
+Node: Printing312537
+Node: Print314480
+Node: Print Examples315986
+Node: Output Separators318839
+Node: OFMT320950
+Node: Printf322373
+Node: Basic Printf323178
+Node: Control Letters324814
+Node: Format Modifiers330283
+Node: Printf Examples336569
+Node: Redirection339114
+Node: Special FD346188
+Ref: Special FD-Footnote-1349478
+Node: Special Files349564
+Node: Other Inherited Files350193
+Node: Special Network351258
+Node: Special Caveats352146
+Node: Close Files And Pipes353129
+Ref: Close Files And Pipes-Footnote-1359265
+Node: Close Return Value359421
+Ref: table-close-pipe-return-values360696
+Ref: Close Return Value-Footnote-1361530
+Node: Noflush361686
+Node: Nonfatal363198
+Node: Output Summary365615
+Node: Output Exercises366901
+Node: Expressions367592
+Node: Values368794
+Node: Constants369472
+Node: Scalar Constants370169
+Ref: Scalar Constants-Footnote-1372747
+Ref: Scalar Constants-Footnote-2372997
+Node: Nondecimal-numbers373077
+Node: Regexp Constants376198
+Node: Using Constant Regexps376744
+Node: Standard Regexp Constants377390
+Node: Strong Regexp Constants380690
+Node: Variables384541
+Node: Using Variables385206
+Node: Assignment Options387186
+Node: Conversion389748
+Node: Strings And Numbers390280
+Ref: Strings And Numbers-Footnote-1393499
+Node: Locale influences conversions393608
+Ref: table-locale-affects396458
+Node: All Operators397101
+Node: Arithmetic Ops397742
+Node: Concatenation400572
+Ref: Concatenation-Footnote-1403522
+Node: Assignment Ops403645
+Ref: table-assign-ops408784
+Node: Increment Ops410166
+Node: Truth Values and Conditions413765
+Node: Truth Values414891
+Node: Typing and Comparison415982
+Node: Variable Typing416818
+Ref: Variable Typing-Footnote-1423480
+Ref: Variable Typing-Footnote-2423560
+Node: Comparison Operators423643
+Ref: table-relational-ops424070
+Node: POSIX String Comparison427756
+Ref: POSIX String Comparison-Footnote-1429515
+Ref: POSIX String Comparison-Footnote-2429658
+Node: Boolean Ops429742
+Ref: Boolean Ops-Footnote-1434435
+Node: Conditional Exp434531
+Node: Function Calls436317
+Node: Precedence440267
+Node: Locales444144
+Node: Expressions Summary445826
+Node: Patterns and Actions448489
+Node: Pattern Overview449631
+Node: Regexp Patterns451357
+Node: Expression Patterns451903
+Node: Ranges455812
+Node: BEGIN/END458990
+Node: Using BEGIN/END459803
+Ref: Using BEGIN/END-Footnote-1462713
+Node: I/O And BEGIN/END462823
+Node: BEGINFILE/ENDFILE465304
+Node: Empty468745
+Node: Using Shell Variables469062
+Node: Action Overview471400
+Node: Statements473835
+Node: If Statement475733
+Node: While Statement477302
+Node: Do Statement479390
+Node: For Statement480576
+Node: Switch Statement483933
+Node: Break Statement486484
+Node: Continue Statement488676
+Node: Next Statement490608
+Node: Nextfile Statement493105
+Node: Exit Statement495966
+Node: Built-in Variables498499
+Node: User-modified499678
+Node: Auto-set507889
+Ref: Auto-set-Footnote-1525988
+Ref: Auto-set-Footnote-2526206
+Node: ARGC and ARGV526262
+Node: Pattern Action Summary530701
+Node: Arrays533317
+Node: Array Basics534694
+Node: Array Intro535544
+Ref: figure-array-elements537560
+Ref: Array Intro-Footnote-1540429
+Node: Reference to Elements540561
+Node: Assigning Elements543083
+Node: Array Example543578
+Node: Scanning an Array545547
+Node: Controlling Scanning548644
+Ref: Controlling Scanning-Footnote-1555307
+Node: Numeric Array Subscripts555631
+Node: Uninitialized Subscripts557905
+Node: Delete559584
+Ref: Delete-Footnote-1562398
+Node: Multidimensional562455
+Node: Multiscanning565660
+Node: Arrays of Arrays567332
+Node: Arrays Summary572232
+Node: Functions574421
+Node: Built-in575481
+Node: Calling Built-in576670
+Node: Boolean Functions578717
+Node: Numeric Functions579287
+Ref: Numeric Functions-Footnote-1583480
+Ref: Numeric Functions-Footnote-2584164
+Ref: Numeric Functions-Footnote-3584216
+Node: String Functions584492
+Ref: String Functions-Footnote-1610723
+Ref: String Functions-Footnote-2610857
+Ref: String Functions-Footnote-3611117
+Node: Gory Details611204
+Ref: table-sub-escapes613111
+Ref: table-sub-proposed614757
+Ref: table-posix-sub616267
+Ref: table-gensub-escapes617955
+Ref: Gory Details-Footnote-1618889
+Node: I/O Functions619043
+Ref: table-system-return-values625730
+Ref: I/O Functions-Footnote-1627901
+Ref: I/O Functions-Footnote-2628049
+Node: Time Functions628169
+Ref: Time Functions-Footnote-1639325
+Ref: Time Functions-Footnote-2639401
+Ref: Time Functions-Footnote-3639563
+Ref: Time Functions-Footnote-4639674
+Ref: Time Functions-Footnote-5639792
+Ref: Time Functions-Footnote-6640027
+Node: Bitwise Functions640309
+Ref: table-bitwise-ops640911
+Ref: Bitwise Functions-Footnote-1647165
+Ref: Bitwise Functions-Footnote-2647344
+Node: Type Functions647541
+Node: I18N Functions651134
+Node: User-defined652877
+Node: Definition Syntax653697
+Ref: Definition Syntax-Footnote-1659525
+Node: Function Example659602
+Ref: Function Example-Footnote-1662581
+Node: Function Calling662603
+Node: Calling A Function663197
+Node: Variable Scope664167
+Node: Pass By Value/Reference667221
+Node: Function Caveats669953
+Ref: Function Caveats-Footnote-1672048
+Node: Return Statement672172
+Node: Dynamic Typing675227
+Node: Indirect Calls677615
+Node: Functions Summary688774
+Node: Library Functions691551
+Ref: Library Functions-Footnote-1695099
+Ref: Library Functions-Footnote-2695242
+Node: Library Names695417
+Ref: Library Names-Footnote-1699211
+Ref: Library Names-Footnote-2699438
+Node: General Functions699534
+Node: Strtonum Function700728
+Node: Assert Function703810
+Node: Round Function707262
+Node: Cliff Random Function708840
+Node: Ordinal Functions709873
+Ref: Ordinal Functions-Footnote-1712982
+Ref: Ordinal Functions-Footnote-2713234
+Node: Join Function713448
+Ref: Join Function-Footnote-1715251
+Node: Getlocaltime Function715455
+Node: Readfile Function719229
+Node: Shell Quoting721258
+Node: Isnumeric Function722714
+Node: Data File Management724126
+Node: Filetrans Function724758
+Node: Rewind Function729052
+Node: File Checking731031
+Ref: File Checking-Footnote-1732403
+Node: Empty Files732610
+Node: Ignoring Assigns734677
+Node: Getopt Function736251
+Ref: Getopt Function-Footnote-1752085
+Node: Passwd Functions752297
+Ref: Passwd Functions-Footnote-1761479
+Node: Group Functions761567
+Ref: Group Functions-Footnote-1769705
+Node: Walking Arrays769918
+Node: Library Functions Summary772966
+Node: Library Exercises774390
+Node: Sample Programs774877
+Node: Running Examples775659
+Node: Clones776411
+Node: Cut Program777683
+Node: Egrep Program788124
+Node: Id Program797441
+Node: Split Program807555
+Ref: Split Program-Footnote-1817790
+Node: Tee Program817977
+Node: Uniq Program820886
+Node: Wc Program828751
+Node: Bytes vs. Characters829146
+Node: Using extensions830748
+Node: wc program831528
+Node: Miscellaneous Programs836534
+Node: Dupword Program837763
+Node: Alarm Program839826
+Node: Translate Program844739
+Ref: Translate Program-Footnote-1849480
+Node: Labels Program849758
+Ref: Labels Program-Footnote-1853199
+Node: Word Sorting853291
+Node: History Sorting857485
+Node: Extract Program859760
+Node: Simple Sed868029
+Node: Igawk Program871245
+Ref: Igawk Program-Footnote-1886492
+Ref: Igawk Program-Footnote-2886698
+Ref: Igawk Program-Footnote-3886828
+Node: Anagram Program886955
+Node: Signature Program890051
+Node: Programs Summary891303
+Node: Programs Exercises892561
+Ref: Programs Exercises-Footnote-1896877
+Node: Advanced Features896963
+Node: Nondecimal Data899457
+Node: Boolean Typed Values901087
+Node: Array Sorting903062
+Node: Controlling Array Traversal903791
+Ref: Controlling Array Traversal-Footnote-1912298
+Node: Array Sorting Functions912420
+Ref: Array Sorting Functions-Footnote-1918539
+Node: Two-way I/O918747
+Ref: Two-way I/O-Footnote-1926742
+Ref: Two-way I/O-Footnote-2926933
+Node: TCP/IP Networking927015
+Node: Profiling930195
+Node: Persistent Memory939905
+Ref: Persistent Memory-Footnote-1948863
+Node: Extension Philosophy948994
+Node: Advanced Features Summary950529
+Node: Internationalization952799
+Node: I18N and L10N954505
+Node: Explaining gettext955200
+Ref: Explaining gettext-Footnote-1961353
+Ref: Explaining gettext-Footnote-2961548
+Node: Programmer i18n961713
+Ref: Programmer i18n-Footnote-1966826
+Node: Translator i18n966875
+Node: String Extraction967711
+Ref: String Extraction-Footnote-1968889
+Node: Printf Ordering968987
+Ref: Printf Ordering-Footnote-1971849
+Node: I18N Portability971917
+Ref: I18N Portability-Footnote-1974491
+Node: I18N Example974562
+Ref: I18N Example-Footnote-1977962
+Ref: I18N Example-Footnote-2978038
+Node: Gawk I18N978155
+Node: I18N Summary978811
+Node: Debugger980212
+Node: Debugging981236
+Node: Debugging Concepts981685
+Node: Debugging Terms983511
+Node: Awk Debugging986124
+Ref: Awk Debugging-Footnote-1987101
+Node: Sample Debugging Session987241
+Node: Debugger Invocation987793
+Node: Finding The Bug989422
+Node: List of Debugger Commands996108
+Node: Breakpoint Control997485
+Node: Debugger Execution Control1001317
+Node: Viewing And Changing Data1004797
+Node: Execution Stack1008535
+Node: Debugger Info1010216
+Node: Miscellaneous Debugger Commands1014515
+Node: Readline Support1019768
+Node: Limitations1020714
+Node: Debugging Summary1023358
+Node: Namespaces1024661
+Node: Global Namespace1025788
+Node: Qualified Names1027233
+Node: Default Namespace1028268
+Node: Changing The Namespace1029043
+Node: Naming Rules1030737
+Node: Internal Name Management1032652
+Node: Namespace Example1033722
+Node: Namespace And Features1036305
+Node: Namespace Summary1037762
+Node: Arbitrary Precision Arithmetic1039275
+Node: Computer Arithmetic1040794
+Ref: table-numeric-ranges1044611
+Ref: table-floating-point-ranges1045109
+Ref: Computer Arithmetic-Footnote-11045768
+Node: Math Definitions1045827
+Ref: table-ieee-formats1048872
+Node: MPFR features1049446
+Node: MPFR On Parole1049899
+Ref: MPFR On Parole-Footnote-11050743
+Node: MPFR Intro1050902
+Node: FP Math Caution1052592
+Ref: FP Math Caution-Footnote-11053666
+Node: Inexactness of computations1054043
+Node: Inexact representation1055074
+Node: Comparing FP Values1056457
+Node: Errors accumulate1057715
+Node: Strange values1059182
+Ref: Strange values-Footnote-11061848
+Node: Getting Accuracy1061953
+Node: Try To Round1064690
+Node: Setting precision1065597
+Ref: table-predefined-precision-strings1066302
+Node: Setting the rounding mode1068187
+Ref: table-gawk-rounding-modes1068569
+Ref: Setting the rounding mode-Footnote-11072627
+Node: Arbitrary Precision Integers1072810
+Ref: Arbitrary Precision Integers-Footnote-11076022
+Node: Checking for MPFR1076178
+Node: POSIX Floating Point Problems1077668
+Ref: POSIX Floating Point Problems-Footnote-11082532
+Node: Floating point summary1082570
+Node: Dynamic Extensions1084834
+Node: Extension Intro1086433
+Node: Plugin License1087741
+Node: Extension Mechanism Outline1088554
+Ref: figure-load-extension1089005
+Ref: figure-register-new-function1090590
+Ref: figure-call-new-function1091700
+Node: Extension API Description1093824
+Node: Extension API Functions Introduction1095553
+Ref: table-api-std-headers1097451
+Node: General Data Types1101915
+Ref: General Data Types-Footnote-11111083
+Node: Memory Allocation Functions1111398
+Ref: Memory Allocation Functions-Footnote-11116123
+Node: Constructor Functions1116222
+Node: API Ownership of MPFR and GMP Values1120127
+Node: Registration Functions1121688
+Node: Extension Functions1122392
+Node: Exit Callback Functions1127968
+Node: Extension Version String1129287
+Node: Input Parsers1129982
+Node: Output Wrappers1144626
+Node: Two-way processors1149474
+Node: Printing Messages1151835
+Ref: Printing Messages-Footnote-11153049
+Node: Updating ERRNO1153204
+Node: Requesting Values1154003
+Ref: table-value-types-returned1154756
+Node: Accessing Parameters1155865
+Node: Symbol Table Access1157149
+Node: Symbol table by name1157665
+Ref: Symbol table by name-Footnote-11160876
+Node: Symbol table by cookie1161008
+Ref: Symbol table by cookie-Footnote-11165289
+Node: Cached values1165353
+Ref: Cached values-Footnote-11168997
+Node: Array Manipulation1169154
+Ref: Array Manipulation-Footnote-11170257
+Node: Array Data Types1170294
+Ref: Array Data Types-Footnote-11173116
+Node: Array Functions1173216
+Node: Flattening Arrays1178245
+Node: Creating Arrays1185297
+Node: Redirection API1190147
+Node: Extension API Variables1193168
+Node: Extension Versioning1193893
+Ref: gawk-api-version1194330
+Node: Extension GMP/MPFR Versioning1196118
+Node: Extension API Informational Variables1197824
+Node: Extension API Boilerplate1198985
+Node: Changes from API V11203121
+Node: Finding Extensions1204755
+Node: Extension Example1205330
+Node: Internal File Description1206154
+Node: Internal File Ops1210478
+Ref: Internal File Ops-Footnote-11222036
+Node: Using Internal File Ops1222184
+Ref: Using Internal File Ops-Footnote-11224615
+Node: Extension Samples1224893
+Node: Extension Sample File Functions1226462
+Node: Extension Sample Fnmatch1234600
+Node: Extension Sample Fork1236195
+Node: Extension Sample Inplace1237471
+Node: Extension Sample Ord1241143
+Node: Extension Sample Readdir1242019
+Ref: table-readdir-file-types1242916
+Node: Extension Sample Revout1244054
+Node: Extension Sample Rev2way1244651
+Node: Extension Sample Read write array1245403
+Node: Extension Sample Readfile1248677
+Node: Extension Sample Time1249808
+Node: Extension Sample API Tests1252098
+Node: gawkextlib1252606
+Node: Extension summary1255642
+Node: Extension Exercises1259500
+Node: Language History1260778
+Node: V7/SVR3.11262492
+Node: SVR41264842
+Node: POSIX1266374
+Node: BTL1267799
+Node: POSIX/GNU1268568
+Node: Feature History1275099
+Node: Common Extensions1294666
+Node: Ranges and Locales1296143
+Ref: Ranges and Locales-Footnote-11300944
+Ref: Ranges and Locales-Footnote-21300971
+Ref: Ranges and Locales-Footnote-31301210
+Node: Contributors1301433
+Node: History summary1307638
+Node: Installation1309084
+Node: Gawk Distribution1310048
+Node: Getting1310540
+Node: Extracting1311539
+Node: Distribution contents1313251
+Node: Unix Installation1321331
+Node: Quick Installation1322153
+Node: Compiling with MPFR1324699
+Node: Shell Startup Files1325405
+Node: Additional Configuration Options1326562
+Node: Configuration Philosophy1328949
+Node: Compiling from Git1331451
+Node: Building the Documentation1332010
+Node: Non-Unix Installation1333422
+Node: PC Installation1333898
+Node: PC Binary Installation1334771
+Node: PC Compiling1335676
+Node: PC Using1336854
+Node: Cygwin1340582
+Node: MSYS1341838
+Node: OpenVMS Installation1342470
+Node: OpenVMS Compilation1343151
+Ref: OpenVMS Compilation-Footnote-11344634
+Node: OpenVMS Dynamic Extensions1344696
+Node: OpenVMS Installation Details1346332
+Node: OpenVMS Running1348767
+Node: OpenVMS GNV1352904
+Node: Bugs1353659
+Node: Bug definition1354583
+Node: Bug address1358234
+Node: Usenet1361825
+Node: Performance bugs1363056
+Node: Asking for help1366074
+Node: Maintainers1368065
+Node: Other Versions1369092
+Node: Installation summary1378024
+Node: Notes1379408
+Node: Compatibility Mode1380218
+Node: Additions1381040
+Node: Accessing The Source1381985
+Node: Adding Code1383520
+Node: New Ports1390656
+Node: Derived Files1395166
+Ref: Derived Files-Footnote-11401013
+Ref: Derived Files-Footnote-21401048
+Ref: Derived Files-Footnote-31401665
+Node: Future Extensions1401779
+Node: Implementation Limitations1402451
+Node: Extension Design1403693
+Node: Old Extension Problems1404857
+Ref: Old Extension Problems-Footnote-11406433
+Node: Extension New Mechanism Goals1406494
+Ref: Extension New Mechanism Goals-Footnote-11409990
+Node: Extension Other Design Decisions1410191
+Node: Extension Future Growth1412390
+Node: Notes summary1413014
+Node: Basic Concepts1414227
+Node: Basic High Level1414912
+Ref: figure-general-flow1415194
+Ref: figure-process-flow1415901
+Ref: Basic High Level-Footnote-11419302
+Node: Basic Data Typing1419491
+Node: Glossary1422909
+Node: Copying1456031
+Node: GNU Free Documentation License1493792
+Node: Index1519115

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 673cfe4b..56748299 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -4191,7 +4191,6 @@ sign in the output.
@cindex comma separated values (CSV) data @subentry @option{--csv} option
@cindex CSV (comma separated values) data @subentry @option{-k} option
@cindex CSV (comma separated values) data @subentry @option{--csv} option
-@cindex op-codes, trace of internal
Enable special processing for files with comma separated values
(CSV). @xref{Comma Separated Fields}.
This option cannot be used with @option{--posix}. Attempting to do
@@ -7889,7 +7888,7 @@ For example, here we set the value of @code{FS} to the string
@code{":"}:
@example
-awk 'BEGIN @{ FS = "," @} ; @{ print $2 @}'
+awk 'BEGIN @{ FS = ":" @} ; @{ print $2 @}'
@end example
@cindex @code{BEGIN} pattern
@@ -8147,11 +8146,45 @@ In order to deal with such things, when processing CSV files,
are not enclosed in double quotes. Thus, use of the @option{--csv}
totally overrides normal record processing with @code{RS} (@pxref{Records}).
+@cindex sidebar @subentry Carriage-Return--Line-Feed Line Endings In CSV Files
+@ifdocbook
+@docbook
+<sidebar><title>Carriage-Return--Line-Feed Line Endings In CSV Files</title>
+@end docbook
+
+@quotation
+@code{\r\n} @i{is the invention of the devil.}
+@author Brian Kernighan
+@end quotation
+
+Many CSV files are imported from systems where the line terminator
+for text files is a carriage-return--line-feed pair
+(CR-LF, @code{\r} followed by @code{\n}).
+For ease of use, when processing CSV files, @command{gawk} simply
+strips out any carriage-return characters in the input.
+
+@docbook
+</sidebar>
+@end docbook
+@end ifdocbook
+
+@ifnotdocbook
+@cartouche
+@center @b{Carriage-Return--Line-Feed Line Endings In CSV Files}
+
+
+@quotation
+@code{\r\n} @i{is the invention of the devil.}
+@author Brian Kernighan
+@end quotation
+
Many CSV files are imported from systems where the line terminator
for text files is a carriage-return--line-feed pair
(CR-LF, @code{\r} followed by @code{\n}).
For ease of use, when processing CSV files, @command{gawk} simply
strips out any carriage-return characters in the input.
+@end cartouche
+@end ifnotdocbook
The behavior of the @code{split()} function (not formally discussed
yet, see @ref{String Functions}) differs slightly when processing CSV
@@ -11922,7 +11955,8 @@ $ @kbd{gawk 'BEGIN @{ print "hello, \}
In POSIX mode (@pxref{Options}), @command{gawk} does not
allow escaped newlines. Otherwise, it behaves as just described.
-BWK @command{awk} and BusyBox @command{awk}
+BWK @command{awk}@footnote{In all examples throughout this @value{DOCUMENT},
+@command{nawk} is BWK @command{awk}.} and BusyBox @command{awk}
remove the backslash but leave the newline
intact, as part of the string:
@@ -22235,7 +22269,7 @@ $ @kbd{nawk -v A=1 -f funky.awk}
@end example
Or @command{awk} could wait until runtime to set the type of @code{a}.
-In this case, since @code{a} was never assigned used before being
+In this case, since @code{a} was never used before being
passed to the function, how the function uses it forces the type to
be resolved to either scalar or array. @command{gawk}
and the MKS @command{awk} do this:
@@ -42381,7 +42415,7 @@ The ability to make @command{gawk} buffer output to pipes
@item
The @samp{\u} escape sequence
-(@pxref{Escape Sequences})
+(@pxref{Escape Sequences}).
@item
The need for GNU @code{libsigsegv} was removed from @command{gawk}.
@@ -42407,10 +42441,12 @@ the three most widely used freely available versions of @command{awk}
@headitem Feature @tab BWK @command{awk} @tab @command{mawk} @tab @command{gawk} @tab Now standard
@item @code{**} and @code{**=} operators @tab X @tab @tab X @tab
@item @samp{\x} escape sequence @tab X @tab X @tab X @tab
+@item @samp{\u} escape sequence @tab X @tab @tab X @tab
@item @file{/dev/stdin} special file @tab X @tab X @tab X @tab
@item @file{/dev/stdout} special file @tab X @tab X @tab X @tab
@item @file{/dev/stderr} special file @tab X @tab X @tab X @tab
@item @code{BINMODE} variable @tab @tab X @tab X @tab
+@item CSV support @tab X @tab @tab X @tab
@item @code{FS} as null string @tab X @tab X @tab X @tab
@item @code{delete} without subscript @tab X @tab X @tab X @tab X
@item @code{fflush()} function @tab X @tab X @tab X @tab X
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 7eb91428..28359633 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -4097,7 +4097,6 @@ sign in the output.
@cindex comma separated values (CSV) data @subentry @option{--csv} option
@cindex CSV (comma separated values) data @subentry @option{-k} option
@cindex CSV (comma separated values) data @subentry @option{--csv} option
-@cindex op-codes, trace of internal
Enable special processing for files with comma separated values
(CSV). @xref{Comma Separated Fields}.
This option cannot be used with @option{--posix}. Attempting to do
@@ -7450,7 +7449,7 @@ For example, here we set the value of @code{FS} to the string
@code{":"}:
@example
-awk 'BEGIN @{ FS = "," @} ; @{ print $2 @}'
+awk 'BEGIN @{ FS = ":" @} ; @{ print $2 @}'
@end example
@cindex @code{BEGIN} pattern
@@ -7708,11 +7707,18 @@ In order to deal with such things, when processing CSV files,
are not enclosed in double quotes. Thus, use of the @option{--csv}
totally overrides normal record processing with @code{RS} (@pxref{Records}).
+@sidebar Carriage-Return--Line-Feed Line Endings In CSV Files
+@quotation
+@code{\r\n} @i{is the invention of the devil.}
+@author Brian Kernighan
+@end quotation
+
Many CSV files are imported from systems where the line terminator
for text files is a carriage-return--line-feed pair
(CR-LF, @code{\r} followed by @code{\n}).
For ease of use, when processing CSV files, @command{gawk} simply
strips out any carriage-return characters in the input.
+@end sidebar
The behavior of the @code{split()} function (not formally discussed
yet, see @ref{String Functions}) differs slightly when processing CSV
@@ -11346,7 +11352,8 @@ $ @kbd{gawk 'BEGIN @{ print "hello, \}
In POSIX mode (@pxref{Options}), @command{gawk} does not
allow escaped newlines. Otherwise, it behaves as just described.
-BWK @command{awk} and BusyBox @command{awk}
+BWK @command{awk}@footnote{In all examples throughout this @value{DOCUMENT},
+@command{nawk} is BWK @command{awk}.} and BusyBox @command{awk}
remove the backslash but leave the newline
intact, as part of the string:
@@ -21216,7 +21223,7 @@ $ @kbd{nawk -v A=1 -f funky.awk}
@end example
Or @command{awk} could wait until runtime to set the type of @code{a}.
-In this case, since @code{a} was never assigned used before being
+In this case, since @code{a} was never used before being
passed to the function, how the function uses it forces the type to
be resolved to either scalar or array. @command{gawk}
and the MKS @command{awk} do this:
@@ -41293,7 +41300,7 @@ The ability to make @command{gawk} buffer output to pipes
@item
The @samp{\u} escape sequence
-(@pxref{Escape Sequences})
+(@pxref{Escape Sequences}).
@item
The need for GNU @code{libsigsegv} was removed from @command{gawk}.
@@ -41319,10 +41326,12 @@ the three most widely used freely available versions of @command{awk}
@headitem Feature @tab BWK @command{awk} @tab @command{mawk} @tab @command{gawk} @tab Now standard
@item @code{**} and @code{**=} operators @tab X @tab @tab X @tab
@item @samp{\x} escape sequence @tab X @tab X @tab X @tab
+@item @samp{\u} escape sequence @tab X @tab @tab X @tab
@item @file{/dev/stdin} special file @tab X @tab X @tab X @tab
@item @file{/dev/stdout} special file @tab X @tab X @tab X @tab
@item @file{/dev/stderr} special file @tab X @tab X @tab X @tab
@item @code{BINMODE} variable @tab @tab X @tab X @tab
+@item CSV support @tab X @tab @tab X @tab
@item @code{FS} as null string @tab X @tab X @tab X @tab
@item @code{delete} without subscript @tab X @tab X @tab X @tab X
@item @code{fflush()} function @tab X @tab X @tab X @tab X