diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2020-12-26 20:47:32 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2020-12-26 20:47:32 +0200 |
commit | f7a69176569a76daab7b772157a76ddb8f85e046 (patch) | |
tree | b02f311383b72b3b6c156343afd3b9dad8c61602 | |
parent | daaaab1ae680cbaf6575741c314a19ae9d57ef8f (diff) | |
download | egawk-f7a69176569a76daab7b772157a76ddb8f85e046.tar.gz egawk-f7a69176569a76daab7b772157a76ddb8f85e046.tar.bz2 egawk-f7a69176569a76daab7b772157a76ddb8f85e046.zip |
Doc updates.
-rw-r--r-- | doc/ChangeLog | 5 | ||||
-rw-r--r-- | doc/gawk.info | 1009 | ||||
-rw-r--r-- | doc/gawk.texi | 11 | ||||
-rw-r--r-- | doc/gawktexi.in | 11 |
4 files changed, 539 insertions, 497 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog index 39d32ce3..b8955456 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,8 @@ +2020-12-26 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in (More CSV): Add indexing and reference to + Manuel Collado's CSVMODE library. + 2020-12-07 Arnold D. Robbins <arnold@skeeve.com> * gawktexi.in (awk split records): Remove the bit about POSIX diff --git a/doc/gawk.info b/doc/gawk.info index 7a01d25a..84aaf435 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -5662,6 +5662,11 @@ And here is his test program: -| <p,,s> -| NF = 3 <p><><s> + In general, using 'FPAT' to do your own CSV parsing is like having a +bed with a blanket that's not quite big enough. There's always a corner +that isn't covered. We recommend, instead, that you use Manuel +Collado's 'CSVMODE' library for 'gawk' (http://mcollado.z15.es/xgawk/). + File: gawk.info, Node: Testing field creation, Next: Multiple Line, Prev: Splitting By Content, Up: Reading Files @@ -35339,6 +35344,7 @@ Index * Close, Diane <1>: Contributors. (line 21) * Collado, Manuel: Acknowledgments. (line 60) * Collado, Manuel <1>: More CSV. (line 6) +* Collado, Manuel <2>: More CSV. (line 52) * collating elements: Bracket Expressions. (line 90) * collating symbols: Bracket Expressions. (line 97) * Colombo, Antonio: Acknowledgments. (line 60) @@ -35348,6 +35354,10 @@ Index * columns, aligning: Print Examples. (line 69) * columns, cutting: Cut Program. (line 6) * comma (,), in range patterns: Ranges. (line 6) +* Comma separated values (CSV) data, parsing with FPAT: Splitting By Content. + (line 19) +* Comma separated values (CSV) data, parsing with FPAT library: More CSV. + (line 52) * command completion, in debugger: Readline Support. (line 6) * command line, formats: Running gawk. (line 12) * command line, option -f: Long. (line 12) @@ -35463,6 +35473,11 @@ Index * csh utility: Statements/Lines. (line 45) * csh utility, POSIXLY_CORRECT environment variable: Options. (line 406) * csh utility, |& operator, comparison with: Two-way I/O. (line 27) +* CSV (comma separated values) data, parsing with FPAT: Splitting By Content. + (line 19) +* CSV (comma separated values) data, parsing with CSVMODE library: More CSV. + (line 52) +* CSVMODE library for gawk: More CSV. (line 52) * ctime() user-defined function: Function Example. (line 74) * Curreli, Marco: Contributors. (line 147) * currency symbols, localization: Explaining gettext. (line 104) @@ -38071,503 +38086,503 @@ Node: Fields with fixed data246170 Node: Splitting By Content247688 Ref: Splitting By Content-Footnote-1251471 Node: More CSV251634 -Node: Testing field creation252944 -Node: Multiple Line254569 -Node: Getline260846 -Node: Plain Getline263315 -Node: Getline/Variable265888 -Node: Getline/File267039 -Node: Getline/Variable/File268427 -Ref: Getline/Variable/File-Footnote-1270032 -Node: Getline/Pipe270120 -Node: Getline/Variable/Pipe272824 -Node: Getline/Coprocess273959 -Node: Getline/Variable/Coprocess275226 -Node: Getline Notes275968 -Node: Getline Summary278765 -Ref: table-getline-variants279189 -Node: Read Timeout279937 -Ref: Read Timeout-Footnote-1283843 -Node: Retrying Input283901 -Node: Command-line directories285100 -Node: Input Summary286006 -Node: Input Exercises289178 -Node: Printing289612 -Node: Print291446 -Node: Print Examples292903 -Node: Output Separators295683 -Node: OFMT297700 -Node: Printf299056 -Node: Basic Printf299841 -Node: Control Letters301415 -Node: Format Modifiers306579 -Node: Printf Examples312594 -Node: Redirection315080 -Node: Special FD321921 -Ref: Special FD-Footnote-1325089 -Node: Special Files325163 -Node: Other Inherited Files325780 -Node: Special Network326781 -Node: Special Caveats327641 -Node: Close Files And Pipes328590 -Ref: table-close-pipe-return-values335497 -Ref: Close Files And Pipes-Footnote-1336310 -Ref: Close Files And Pipes-Footnote-2336458 -Node: Nonfatal336610 -Node: Output Summary338948 -Node: Output Exercises340170 -Node: Expressions340849 -Node: Values342037 -Node: Constants342715 -Node: Scalar Constants343406 -Ref: Scalar Constants-Footnote-1345916 -Node: Nondecimal-numbers346166 -Node: Regexp Constants349167 -Node: Using Constant Regexps349693 -Node: Standard Regexp Constants350315 -Node: Strong Regexp Constants353503 -Node: Variables356515 -Node: Using Variables357172 -Node: Assignment Options359082 -Node: Conversion361553 -Node: Strings And Numbers362077 -Ref: Strings And Numbers-Footnote-1365140 -Node: Locale influences conversions365249 -Ref: table-locale-affects368007 -Node: All Operators368625 -Node: Arithmetic Ops369254 -Node: Concatenation371970 -Ref: Concatenation-Footnote-1374817 -Node: Assignment Ops374924 -Ref: table-assign-ops379915 -Node: Increment Ops381228 -Node: Truth Values and Conditions384688 -Node: Truth Values385762 -Node: Typing and Comparison386810 -Node: Variable Typing387630 -Ref: Variable Typing-Footnote-1394093 -Ref: Variable Typing-Footnote-2394165 -Node: Comparison Operators394242 -Ref: table-relational-ops394661 -Node: POSIX String Comparison398156 -Ref: POSIX String Comparison-Footnote-1399851 -Ref: POSIX String Comparison-Footnote-2399990 -Node: Boolean Ops400074 -Ref: Boolean Ops-Footnote-1404556 -Node: Conditional Exp404648 -Node: Function Calls406384 -Node: Precedence410261 -Node: Locales413920 -Node: Expressions Summary415552 -Node: Patterns and Actions418125 -Node: Pattern Overview419245 -Node: Regexp Patterns420922 -Node: Expression Patterns421464 -Node: Ranges425245 -Node: BEGIN/END428353 -Node: Using BEGIN/END429114 -Ref: Using BEGIN/END-Footnote-1431868 -Node: I/O And BEGIN/END431974 -Node: BEGINFILE/ENDFILE434287 -Node: Empty437518 -Node: Using Shell Variables437835 -Node: Action Overview440109 -Node: Statements442434 -Node: If Statement444282 -Node: While Statement445777 -Node: Do Statement447805 -Node: For Statement448953 -Node: Switch Statement452124 -Node: Break Statement454565 -Node: Continue Statement456657 -Node: Next Statement458484 -Node: Nextfile Statement460867 -Node: Exit Statement463556 -Node: Built-in Variables465959 -Node: User-modified467092 -Node: Auto-set474859 -Ref: Auto-set-Footnote-1491666 -Ref: Auto-set-Footnote-2491872 -Node: ARGC and ARGV491928 -Node: Pattern Action Summary496141 -Node: Arrays498571 -Node: Array Basics499900 -Node: Array Intro500744 -Ref: figure-array-elements502719 -Ref: Array Intro-Footnote-1505423 -Node: Reference to Elements505551 -Node: Assigning Elements508015 -Node: Array Example508506 -Node: Scanning an Array510265 -Node: Controlling Scanning513287 -Ref: Controlling Scanning-Footnote-1519743 -Node: Numeric Array Subscripts520059 -Node: Uninitialized Subscripts522243 -Node: Delete523862 -Ref: Delete-Footnote-1526614 -Node: Multidimensional526671 -Node: Multiscanning529766 -Node: Arrays of Arrays531357 -Node: Arrays Summary536125 -Node: Functions538218 -Node: Built-in539256 -Node: Calling Built-in540337 -Node: Numeric Functions542333 -Ref: Numeric Functions-Footnote-1546361 -Ref: Numeric Functions-Footnote-2547009 -Ref: Numeric Functions-Footnote-3547057 -Node: String Functions547329 -Ref: String Functions-Footnote-1571470 -Ref: String Functions-Footnote-2571598 -Ref: String Functions-Footnote-3571846 -Node: Gory Details571933 -Ref: table-sub-escapes573724 -Ref: table-sub-proposed575243 -Ref: table-posix-sub576606 -Ref: table-gensub-escapes578147 -Ref: Gory Details-Footnote-1578970 -Node: I/O Functions579124 -Ref: table-system-return-values585578 -Ref: I/O Functions-Footnote-1587658 -Ref: I/O Functions-Footnote-2587806 -Node: Time Functions587926 -Ref: Time Functions-Footnote-1598597 -Ref: Time Functions-Footnote-2598665 -Ref: Time Functions-Footnote-3598823 -Ref: Time Functions-Footnote-4598934 -Ref: Time Functions-Footnote-5599046 -Ref: Time Functions-Footnote-6599273 -Node: Bitwise Functions599539 -Ref: table-bitwise-ops600133 -Ref: Bitwise Functions-Footnote-1606196 -Ref: Bitwise Functions-Footnote-2606369 -Node: Type Functions606560 -Node: I18N Functions609423 -Node: User-defined611074 -Node: Definition Syntax611886 -Ref: Definition Syntax-Footnote-1617580 -Node: Function Example617651 -Ref: Function Example-Footnote-1620573 -Node: Function Calling620595 -Node: Calling A Function621183 -Node: Variable Scope622141 -Node: Pass By Value/Reference625135 -Node: Function Caveats627779 -Ref: Function Caveats-Footnote-1629826 -Node: Return Statement629946 -Node: Dynamic Typing632925 -Node: Indirect Calls633855 -Ref: Indirect Calls-Footnote-1644107 -Node: Functions Summary644235 -Node: Library Functions646940 -Ref: Library Functions-Footnote-1650547 -Ref: Library Functions-Footnote-2650690 -Node: Library Names650861 -Ref: Library Names-Footnote-1654528 -Ref: Library Names-Footnote-2654751 -Node: General Functions654837 -Node: Strtonum Function655940 -Node: Assert Function658962 -Node: Round Function662288 -Node: Cliff Random Function663828 -Node: Ordinal Functions664844 -Ref: Ordinal Functions-Footnote-1667907 -Ref: Ordinal Functions-Footnote-2668159 -Node: Join Function668369 -Ref: Join Function-Footnote-1670139 -Node: Getlocaltime Function670339 -Node: Readfile Function674081 -Node: Shell Quoting676058 -Node: Data File Management677459 -Node: Filetrans Function678091 -Node: Rewind Function682187 -Node: File Checking684096 -Ref: File Checking-Footnote-1685430 -Node: Empty Files685631 -Node: Ignoring Assigns687610 -Node: Getopt Function689160 -Ref: Getopt Function-Footnote-1704371 -Node: Passwd Functions704571 -Ref: Passwd Functions-Footnote-1713410 -Node: Group Functions713498 -Ref: Group Functions-Footnote-1721396 -Node: Walking Arrays721603 -Node: Library Functions Summary724611 -Node: Library Exercises726017 -Node: Sample Programs726482 -Node: Running Examples727252 -Node: Clones727980 -Node: Cut Program729204 -Node: Egrep Program739344 -Node: Id Program748355 -Node: Split Program758302 -Ref: Split Program-Footnote-1768192 -Node: Tee Program768365 -Node: Uniq Program771155 -Node: Wc Program778743 -Node: Bytes vs. Characters779140 -Node: Using extensions780688 -Node: wc program781442 -Node: Miscellaneous Programs786307 -Node: Dupword Program787520 -Node: Alarm Program789550 -Node: Translate Program794405 -Ref: Translate Program-Footnote-1798970 -Node: Labels Program799240 -Ref: Labels Program-Footnote-1802591 -Node: Word Sorting802675 -Node: History Sorting806747 -Node: Extract Program808972 -Node: Simple Sed817026 -Node: Igawk Program820100 -Ref: Igawk Program-Footnote-1834431 -Ref: Igawk Program-Footnote-2834633 -Ref: Igawk Program-Footnote-3834755 -Node: Anagram Program834870 -Node: Signature Program837932 -Node: Programs Summary839179 -Node: Programs Exercises840393 -Ref: Programs Exercises-Footnote-1844523 -Node: Advanced Features844609 -Node: Nondecimal Data846676 -Node: Array Sorting848267 -Node: Controlling Array Traversal848967 -Ref: Controlling Array Traversal-Footnote-1857335 -Node: Array Sorting Functions857453 -Ref: Array Sorting Functions-Footnote-1862544 -Node: Two-way I/O862740 -Ref: Two-way I/O-Footnote-1870461 -Ref: Two-way I/O-Footnote-2870648 -Node: TCP/IP Networking870730 -Node: Profiling873848 -Node: Extension Philosophy883157 -Node: Advanced Features Summary884608 -Node: Internationalization886607 -Node: I18N and L10N888087 -Node: Explaining gettext888774 -Ref: Explaining gettext-Footnote-1894666 -Ref: Explaining gettext-Footnote-2894851 -Node: Programmer i18n895016 -Ref: Programmer i18n-Footnote-1899965 -Node: Translator i18n900014 -Node: String Extraction900808 -Ref: String Extraction-Footnote-1901940 -Node: Printf Ordering902026 -Ref: Printf Ordering-Footnote-1904812 -Node: I18N Portability904876 -Ref: I18N Portability-Footnote-1907332 -Node: I18N Example907395 -Ref: I18N Example-Footnote-1910670 -Ref: I18N Example-Footnote-2910743 -Node: Gawk I18N910852 -Node: I18N Summary911501 -Node: Debugger912842 -Node: Debugging913842 -Node: Debugging Concepts914283 -Node: Debugging Terms916092 -Node: Awk Debugging918667 -Ref: Awk Debugging-Footnote-1919612 -Node: Sample Debugging Session919744 -Node: Debugger Invocation920278 -Node: Finding The Bug921664 -Node: List of Debugger Commands928138 -Node: Breakpoint Control929471 -Node: Debugger Execution Control933165 -Node: Viewing And Changing Data936527 -Node: Execution Stack940068 -Node: Debugger Info941705 -Node: Miscellaneous Debugger Commands945776 -Node: Readline Support950838 -Node: Limitations951734 -Node: Debugging Summary954288 -Node: Namespaces955567 -Node: Global Namespace956678 -Node: Qualified Names958076 -Node: Default Namespace959075 -Node: Changing The Namespace959816 -Node: Naming Rules961430 -Node: Internal Name Management963278 -Node: Namespace Example964320 -Node: Namespace And Features966882 -Node: Namespace Summary968317 -Node: Arbitrary Precision Arithmetic969794 -Node: Computer Arithmetic971281 -Ref: table-numeric-ranges975047 -Ref: table-floating-point-ranges975540 -Ref: Computer Arithmetic-Footnote-1976198 -Node: Math Definitions976255 -Ref: table-ieee-formats979571 -Ref: Math Definitions-Footnote-1980174 -Node: MPFR features980279 -Node: FP Math Caution981997 -Ref: FP Math Caution-Footnote-1983069 -Node: Inexactness of computations983438 -Node: Inexact representation984398 -Node: Comparing FP Values985758 -Node: Errors accumulate986999 -Node: Getting Accuracy988432 -Node: Try To Round991142 -Node: Setting precision992041 -Ref: table-predefined-precision-strings992738 -Node: Setting the rounding mode994568 -Ref: table-gawk-rounding-modes994942 -Ref: Setting the rounding mode-Footnote-1998873 -Node: Arbitrary Precision Integers999052 -Ref: Arbitrary Precision Integers-Footnote-11002227 -Node: Checking for MPFR1002376 -Node: POSIX Floating Point Problems1003850 -Ref: POSIX Floating Point Problems-Footnote-11008135 -Node: Floating point summary1008173 -Node: Dynamic Extensions1010363 -Node: Extension Intro1011916 -Node: Plugin License1013182 -Node: Extension Mechanism Outline1013979 -Ref: figure-load-extension1014418 -Ref: figure-register-new-function1015983 -Ref: figure-call-new-function1017075 -Node: Extension API Description1019137 -Node: Extension API Functions Introduction1020850 -Ref: table-api-std-headers1022686 -Node: General Data Types1026935 -Ref: General Data Types-Footnote-11035565 -Node: Memory Allocation Functions1035864 -Ref: Memory Allocation Functions-Footnote-11040365 -Node: Constructor Functions1040464 -Node: API Ownership of MPFR and GMP Values1043930 -Node: Registration Functions1045243 -Node: Extension Functions1045943 -Node: Exit Callback Functions1051265 -Node: Extension Version String1052515 -Node: Input Parsers1053178 -Node: Output Wrappers1065899 -Node: Two-way processors1070411 -Node: Printing Messages1072676 -Ref: Printing Messages-Footnote-11073847 -Node: Updating ERRNO1074000 -Node: Requesting Values1074739 -Ref: table-value-types-returned1075476 -Node: Accessing Parameters1076412 -Node: Symbol Table Access1077649 -Node: Symbol table by name1078161 -Ref: Symbol table by name-Footnote-11081185 -Node: Symbol table by cookie1081313 -Ref: Symbol table by cookie-Footnote-11085498 -Node: Cached values1085562 -Ref: Cached values-Footnote-11089098 -Node: Array Manipulation1089251 -Ref: Array Manipulation-Footnote-11090342 -Node: Array Data Types1090379 -Ref: Array Data Types-Footnote-11093037 -Node: Array Functions1093129 -Node: Flattening Arrays1097627 -Node: Creating Arrays1104603 -Node: Redirection API1109370 -Node: Extension API Variables1112203 -Node: Extension Versioning1112914 -Ref: gawk-api-version1113343 -Node: Extension GMP/MPFR Versioning1115074 -Node: Extension API Informational Variables1116702 -Node: Extension API Boilerplate1117775 -Node: Changes from API V11121749 -Node: Finding Extensions1123321 -Node: Extension Example1123880 -Node: Internal File Description1124678 -Node: Internal File Ops1128758 -Ref: Internal File Ops-Footnote-11140108 -Node: Using Internal File Ops1140248 -Ref: Using Internal File Ops-Footnote-11142631 -Node: Extension Samples1142905 -Node: Extension Sample File Functions1144434 -Node: Extension Sample Fnmatch1152083 -Node: Extension Sample Fork1153570 -Node: Extension Sample Inplace1154788 -Node: Extension Sample Ord1158414 -Node: Extension Sample Readdir1159250 -Ref: table-readdir-file-types1160139 -Node: Extension Sample Revout1161206 -Node: Extension Sample Rev2way1161795 -Node: Extension Sample Read write array1162535 -Node: Extension Sample Readfile1164477 -Node: Extension Sample Time1165572 -Node: Extension Sample API Tests1167324 -Node: gawkextlib1167816 -Node: Extension summary1170734 -Node: Extension Exercises1174436 -Node: Language History1175678 -Node: V7/SVR3.11177334 -Node: SVR41179486 -Node: POSIX1180920 -Node: BTL1182301 -Node: POSIX/GNU1183030 -Node: Feature History1188808 -Node: Common Extensions1205127 -Node: Ranges and Locales1206410 -Ref: Ranges and Locales-Footnote-11211026 -Ref: Ranges and Locales-Footnote-21211053 -Ref: Ranges and Locales-Footnote-31211288 -Node: Contributors1211511 -Node: History summary1217508 -Node: Installation1218888 -Node: Gawk Distribution1219832 -Node: Getting1220316 -Node: Extracting1221279 -Node: Distribution contents1222917 -Node: Unix Installation1229397 -Node: Quick Installation1230079 -Node: Shell Startup Files1232493 -Node: Additional Configuration Options1233582 -Node: Configuration Philosophy1235897 -Node: Non-Unix Installation1238266 -Node: PC Installation1238726 -Node: PC Binary Installation1239564 -Node: PC Compiling1239999 -Node: PC Using1241116 -Node: Cygwin1244669 -Node: MSYS1245893 -Node: VMS Installation1246495 -Node: VMS Compilation1247286 -Ref: VMS Compilation-Footnote-11248515 -Node: VMS Dynamic Extensions1248573 -Node: VMS Installation Details1250258 -Node: VMS Running1252511 -Node: VMS GNV1256790 -Node: VMS Old Gawk1257525 -Node: Bugs1257996 -Node: Bug address1258659 -Node: Usenet1261641 -Node: Maintainers1262645 -Node: Other Versions1263830 -Node: Installation summary1270918 -Node: Notes1272127 -Node: Compatibility Mode1272921 -Node: Additions1273703 -Node: Accessing The Source1274628 -Node: Adding Code1276065 -Node: New Ports1282284 -Node: Derived Files1286659 -Ref: Derived Files-Footnote-11292319 -Ref: Derived Files-Footnote-21292354 -Ref: Derived Files-Footnote-31292952 -Node: Future Extensions1293066 -Node: Implementation Limitations1293724 -Node: Extension Design1294934 -Node: Old Extension Problems1296078 -Ref: Old Extension Problems-Footnote-11297596 -Node: Extension New Mechanism Goals1297653 -Ref: Extension New Mechanism Goals-Footnote-11301017 -Node: Extension Other Design Decisions1301206 -Node: Extension Future Growth1303319 -Node: Notes summary1303925 -Node: Basic Concepts1305083 -Node: Basic High Level1305764 -Ref: figure-general-flow1306046 -Ref: figure-process-flow1306731 -Ref: Basic High Level-Footnote-11310032 -Node: Basic Data Typing1310217 -Node: Glossary1313545 -Node: Copying1345430 -Node: GNU Free Documentation License1382973 -Node: Index1408093 +Node: Testing field creation253226 +Node: Multiple Line254851 +Node: Getline261128 +Node: Plain Getline263597 +Node: Getline/Variable266170 +Node: Getline/File267321 +Node: Getline/Variable/File268709 +Ref: Getline/Variable/File-Footnote-1270314 +Node: Getline/Pipe270402 +Node: Getline/Variable/Pipe273106 +Node: Getline/Coprocess274241 +Node: Getline/Variable/Coprocess275508 +Node: Getline Notes276250 +Node: Getline Summary279047 +Ref: table-getline-variants279471 +Node: Read Timeout280219 +Ref: Read Timeout-Footnote-1284125 +Node: Retrying Input284183 +Node: Command-line directories285382 +Node: Input Summary286288 +Node: Input Exercises289460 +Node: Printing289894 +Node: Print291728 +Node: Print Examples293185 +Node: Output Separators295965 +Node: OFMT297982 +Node: Printf299338 +Node: Basic Printf300123 +Node: Control Letters301697 +Node: Format Modifiers306861 +Node: Printf Examples312876 +Node: Redirection315362 +Node: Special FD322203 +Ref: Special FD-Footnote-1325371 +Node: Special Files325445 +Node: Other Inherited Files326062 +Node: Special Network327063 +Node: Special Caveats327923 +Node: Close Files And Pipes328872 +Ref: table-close-pipe-return-values335779 +Ref: Close Files And Pipes-Footnote-1336592 +Ref: Close Files And Pipes-Footnote-2336740 +Node: Nonfatal336892 +Node: Output Summary339230 +Node: Output Exercises340452 +Node: Expressions341131 +Node: Values342319 +Node: Constants342997 +Node: Scalar Constants343688 +Ref: Scalar Constants-Footnote-1346198 +Node: Nondecimal-numbers346448 +Node: Regexp Constants349449 +Node: Using Constant Regexps349975 +Node: Standard Regexp Constants350597 +Node: Strong Regexp Constants353785 +Node: Variables356797 +Node: Using Variables357454 +Node: Assignment Options359364 +Node: Conversion361835 +Node: Strings And Numbers362359 +Ref: Strings And Numbers-Footnote-1365422 +Node: Locale influences conversions365531 +Ref: table-locale-affects368289 +Node: All Operators368907 +Node: Arithmetic Ops369536 +Node: Concatenation372252 +Ref: Concatenation-Footnote-1375099 +Node: Assignment Ops375206 +Ref: table-assign-ops380197 +Node: Increment Ops381510 +Node: Truth Values and Conditions384970 +Node: Truth Values386044 +Node: Typing and Comparison387092 +Node: Variable Typing387912 +Ref: Variable Typing-Footnote-1394375 +Ref: Variable Typing-Footnote-2394447 +Node: Comparison Operators394524 +Ref: table-relational-ops394943 +Node: POSIX String Comparison398438 +Ref: POSIX String Comparison-Footnote-1400133 +Ref: POSIX String Comparison-Footnote-2400272 +Node: Boolean Ops400356 +Ref: Boolean Ops-Footnote-1404838 +Node: Conditional Exp404930 +Node: Function Calls406666 +Node: Precedence410543 +Node: Locales414202 +Node: Expressions Summary415834 +Node: Patterns and Actions418407 +Node: Pattern Overview419527 +Node: Regexp Patterns421204 +Node: Expression Patterns421746 +Node: Ranges425527 +Node: BEGIN/END428635 +Node: Using BEGIN/END429396 +Ref: Using BEGIN/END-Footnote-1432150 +Node: I/O And BEGIN/END432256 +Node: BEGINFILE/ENDFILE434569 +Node: Empty437800 +Node: Using Shell Variables438117 +Node: Action Overview440391 +Node: Statements442716 +Node: If Statement444564 +Node: While Statement446059 +Node: Do Statement448087 +Node: For Statement449235 +Node: Switch Statement452406 +Node: Break Statement454847 +Node: Continue Statement456939 +Node: Next Statement458766 +Node: Nextfile Statement461149 +Node: Exit Statement463838 +Node: Built-in Variables466241 +Node: User-modified467374 +Node: Auto-set475141 +Ref: Auto-set-Footnote-1491948 +Ref: Auto-set-Footnote-2492154 +Node: ARGC and ARGV492210 +Node: Pattern Action Summary496423 +Node: Arrays498853 +Node: Array Basics500182 +Node: Array Intro501026 +Ref: figure-array-elements503001 +Ref: Array Intro-Footnote-1505705 +Node: Reference to Elements505833 +Node: Assigning Elements508297 +Node: Array Example508788 +Node: Scanning an Array510547 +Node: Controlling Scanning513569 +Ref: Controlling Scanning-Footnote-1520025 +Node: Numeric Array Subscripts520341 +Node: Uninitialized Subscripts522525 +Node: Delete524144 +Ref: Delete-Footnote-1526896 +Node: Multidimensional526953 +Node: Multiscanning530048 +Node: Arrays of Arrays531639 +Node: Arrays Summary536407 +Node: Functions538500 +Node: Built-in539538 +Node: Calling Built-in540619 +Node: Numeric Functions542615 +Ref: Numeric Functions-Footnote-1546643 +Ref: Numeric Functions-Footnote-2547291 +Ref: Numeric Functions-Footnote-3547339 +Node: String Functions547611 +Ref: String Functions-Footnote-1571752 +Ref: String Functions-Footnote-2571880 +Ref: String Functions-Footnote-3572128 +Node: Gory Details572215 +Ref: table-sub-escapes574006 +Ref: table-sub-proposed575525 +Ref: table-posix-sub576888 +Ref: table-gensub-escapes578429 +Ref: Gory Details-Footnote-1579252 +Node: I/O Functions579406 +Ref: table-system-return-values585860 +Ref: I/O Functions-Footnote-1587940 +Ref: I/O Functions-Footnote-2588088 +Node: Time Functions588208 +Ref: Time Functions-Footnote-1598879 +Ref: Time Functions-Footnote-2598947 +Ref: Time Functions-Footnote-3599105 +Ref: Time Functions-Footnote-4599216 +Ref: Time Functions-Footnote-5599328 +Ref: Time Functions-Footnote-6599555 +Node: Bitwise Functions599821 +Ref: table-bitwise-ops600415 +Ref: Bitwise Functions-Footnote-1606478 +Ref: Bitwise Functions-Footnote-2606651 +Node: Type Functions606842 +Node: I18N Functions609705 +Node: User-defined611356 +Node: Definition Syntax612168 +Ref: Definition Syntax-Footnote-1617862 +Node: Function Example617933 +Ref: Function Example-Footnote-1620855 +Node: Function Calling620877 +Node: Calling A Function621465 +Node: Variable Scope622423 +Node: Pass By Value/Reference625417 +Node: Function Caveats628061 +Ref: Function Caveats-Footnote-1630108 +Node: Return Statement630228 +Node: Dynamic Typing633207 +Node: Indirect Calls634137 +Ref: Indirect Calls-Footnote-1644389 +Node: Functions Summary644517 +Node: Library Functions647222 +Ref: Library Functions-Footnote-1650829 +Ref: Library Functions-Footnote-2650972 +Node: Library Names651143 +Ref: Library Names-Footnote-1654810 +Ref: Library Names-Footnote-2655033 +Node: General Functions655119 +Node: Strtonum Function656222 +Node: Assert Function659244 +Node: Round Function662570 +Node: Cliff Random Function664110 +Node: Ordinal Functions665126 +Ref: Ordinal Functions-Footnote-1668189 +Ref: Ordinal Functions-Footnote-2668441 +Node: Join Function668651 +Ref: Join Function-Footnote-1670421 +Node: Getlocaltime Function670621 +Node: Readfile Function674363 +Node: Shell Quoting676340 +Node: Data File Management677741 +Node: Filetrans Function678373 +Node: Rewind Function682469 +Node: File Checking684378 +Ref: File Checking-Footnote-1685712 +Node: Empty Files685913 +Node: Ignoring Assigns687892 +Node: Getopt Function689442 +Ref: Getopt Function-Footnote-1704653 +Node: Passwd Functions704853 +Ref: Passwd Functions-Footnote-1713692 +Node: Group Functions713780 +Ref: Group Functions-Footnote-1721678 +Node: Walking Arrays721885 +Node: Library Functions Summary724893 +Node: Library Exercises726299 +Node: Sample Programs726764 +Node: Running Examples727534 +Node: Clones728262 +Node: Cut Program729486 +Node: Egrep Program739626 +Node: Id Program748637 +Node: Split Program758584 +Ref: Split Program-Footnote-1768474 +Node: Tee Program768647 +Node: Uniq Program771437 +Node: Wc Program779025 +Node: Bytes vs. Characters779422 +Node: Using extensions780970 +Node: wc program781724 +Node: Miscellaneous Programs786589 +Node: Dupword Program787802 +Node: Alarm Program789832 +Node: Translate Program794687 +Ref: Translate Program-Footnote-1799252 +Node: Labels Program799522 +Ref: Labels Program-Footnote-1802873 +Node: Word Sorting802957 +Node: History Sorting807029 +Node: Extract Program809254 +Node: Simple Sed817308 +Node: Igawk Program820382 +Ref: Igawk Program-Footnote-1834713 +Ref: Igawk Program-Footnote-2834915 +Ref: Igawk Program-Footnote-3835037 +Node: Anagram Program835152 +Node: Signature Program838214 +Node: Programs Summary839461 +Node: Programs Exercises840675 +Ref: Programs Exercises-Footnote-1844805 +Node: Advanced Features844891 +Node: Nondecimal Data846958 +Node: Array Sorting848549 +Node: Controlling Array Traversal849249 +Ref: Controlling Array Traversal-Footnote-1857617 +Node: Array Sorting Functions857735 +Ref: Array Sorting Functions-Footnote-1862826 +Node: Two-way I/O863022 +Ref: Two-way I/O-Footnote-1870743 +Ref: Two-way I/O-Footnote-2870930 +Node: TCP/IP Networking871012 +Node: Profiling874130 +Node: Extension Philosophy883439 +Node: Advanced Features Summary884890 +Node: Internationalization886889 +Node: I18N and L10N888369 +Node: Explaining gettext889056 +Ref: Explaining gettext-Footnote-1894948 +Ref: Explaining gettext-Footnote-2895133 +Node: Programmer i18n895298 +Ref: Programmer i18n-Footnote-1900247 +Node: Translator i18n900296 +Node: String Extraction901090 +Ref: String Extraction-Footnote-1902222 +Node: Printf Ordering902308 +Ref: Printf Ordering-Footnote-1905094 +Node: I18N Portability905158 +Ref: I18N Portability-Footnote-1907614 +Node: I18N Example907677 +Ref: I18N Example-Footnote-1910952 +Ref: I18N Example-Footnote-2911025 +Node: Gawk I18N911134 +Node: I18N Summary911783 +Node: Debugger913124 +Node: Debugging914124 +Node: Debugging Concepts914565 +Node: Debugging Terms916374 +Node: Awk Debugging918949 +Ref: Awk Debugging-Footnote-1919894 +Node: Sample Debugging Session920026 +Node: Debugger Invocation920560 +Node: Finding The Bug921946 +Node: List of Debugger Commands928420 +Node: Breakpoint Control929753 +Node: Debugger Execution Control933447 +Node: Viewing And Changing Data936809 +Node: Execution Stack940350 +Node: Debugger Info941987 +Node: Miscellaneous Debugger Commands946058 +Node: Readline Support951120 +Node: Limitations952016 +Node: Debugging Summary954570 +Node: Namespaces955849 +Node: Global Namespace956960 +Node: Qualified Names958358 +Node: Default Namespace959357 +Node: Changing The Namespace960098 +Node: Naming Rules961712 +Node: Internal Name Management963560 +Node: Namespace Example964602 +Node: Namespace And Features967164 +Node: Namespace Summary968599 +Node: Arbitrary Precision Arithmetic970076 +Node: Computer Arithmetic971563 +Ref: table-numeric-ranges975329 +Ref: table-floating-point-ranges975822 +Ref: Computer Arithmetic-Footnote-1976480 +Node: Math Definitions976537 +Ref: table-ieee-formats979853 +Ref: Math Definitions-Footnote-1980456 +Node: MPFR features980561 +Node: FP Math Caution982279 +Ref: FP Math Caution-Footnote-1983351 +Node: Inexactness of computations983720 +Node: Inexact representation984680 +Node: Comparing FP Values986040 +Node: Errors accumulate987281 +Node: Getting Accuracy988714 +Node: Try To Round991424 +Node: Setting precision992323 +Ref: table-predefined-precision-strings993020 +Node: Setting the rounding mode994850 +Ref: table-gawk-rounding-modes995224 +Ref: Setting the rounding mode-Footnote-1999155 +Node: Arbitrary Precision Integers999334 +Ref: Arbitrary Precision Integers-Footnote-11002509 +Node: Checking for MPFR1002658 +Node: POSIX Floating Point Problems1004132 +Ref: POSIX Floating Point Problems-Footnote-11008417 +Node: Floating point summary1008455 +Node: Dynamic Extensions1010645 +Node: Extension Intro1012198 +Node: Plugin License1013464 +Node: Extension Mechanism Outline1014261 +Ref: figure-load-extension1014700 +Ref: figure-register-new-function1016265 +Ref: figure-call-new-function1017357 +Node: Extension API Description1019419 +Node: Extension API Functions Introduction1021132 +Ref: table-api-std-headers1022968 +Node: General Data Types1027217 +Ref: General Data Types-Footnote-11035847 +Node: Memory Allocation Functions1036146 +Ref: Memory Allocation Functions-Footnote-11040647 +Node: Constructor Functions1040746 +Node: API Ownership of MPFR and GMP Values1044212 +Node: Registration Functions1045525 +Node: Extension Functions1046225 +Node: Exit Callback Functions1051547 +Node: Extension Version String1052797 +Node: Input Parsers1053460 +Node: Output Wrappers1066181 +Node: Two-way processors1070693 +Node: Printing Messages1072958 +Ref: Printing Messages-Footnote-11074129 +Node: Updating ERRNO1074282 +Node: Requesting Values1075021 +Ref: table-value-types-returned1075758 +Node: Accessing Parameters1076694 +Node: Symbol Table Access1077931 +Node: Symbol table by name1078443 +Ref: Symbol table by name-Footnote-11081467 +Node: Symbol table by cookie1081595 +Ref: Symbol table by cookie-Footnote-11085780 +Node: Cached values1085844 +Ref: Cached values-Footnote-11089380 +Node: Array Manipulation1089533 +Ref: Array Manipulation-Footnote-11090624 +Node: Array Data Types1090661 +Ref: Array Data Types-Footnote-11093319 +Node: Array Functions1093411 +Node: Flattening Arrays1097909 +Node: Creating Arrays1104885 +Node: Redirection API1109652 +Node: Extension API Variables1112485 +Node: Extension Versioning1113196 +Ref: gawk-api-version1113625 +Node: Extension GMP/MPFR Versioning1115356 +Node: Extension API Informational Variables1116984 +Node: Extension API Boilerplate1118057 +Node: Changes from API V11122031 +Node: Finding Extensions1123603 +Node: Extension Example1124162 +Node: Internal File Description1124960 +Node: Internal File Ops1129040 +Ref: Internal File Ops-Footnote-11140390 +Node: Using Internal File Ops1140530 +Ref: Using Internal File Ops-Footnote-11142913 +Node: Extension Samples1143187 +Node: Extension Sample File Functions1144716 +Node: Extension Sample Fnmatch1152365 +Node: Extension Sample Fork1153852 +Node: Extension Sample Inplace1155070 +Node: Extension Sample Ord1158696 +Node: Extension Sample Readdir1159532 +Ref: table-readdir-file-types1160421 +Node: Extension Sample Revout1161488 +Node: Extension Sample Rev2way1162077 +Node: Extension Sample Read write array1162817 +Node: Extension Sample Readfile1164759 +Node: Extension Sample Time1165854 +Node: Extension Sample API Tests1167606 +Node: gawkextlib1168098 +Node: Extension summary1171016 +Node: Extension Exercises1174718 +Node: Language History1175960 +Node: V7/SVR3.11177616 +Node: SVR41179768 +Node: POSIX1181202 +Node: BTL1182583 +Node: POSIX/GNU1183312 +Node: Feature History1189090 +Node: Common Extensions1205409 +Node: Ranges and Locales1206692 +Ref: Ranges and Locales-Footnote-11211308 +Ref: Ranges and Locales-Footnote-21211335 +Ref: Ranges and Locales-Footnote-31211570 +Node: Contributors1211793 +Node: History summary1217790 +Node: Installation1219170 +Node: Gawk Distribution1220114 +Node: Getting1220598 +Node: Extracting1221561 +Node: Distribution contents1223199 +Node: Unix Installation1229679 +Node: Quick Installation1230361 +Node: Shell Startup Files1232775 +Node: Additional Configuration Options1233864 +Node: Configuration Philosophy1236179 +Node: Non-Unix Installation1238548 +Node: PC Installation1239008 +Node: PC Binary Installation1239846 +Node: PC Compiling1240281 +Node: PC Using1241398 +Node: Cygwin1244951 +Node: MSYS1246175 +Node: VMS Installation1246777 +Node: VMS Compilation1247568 +Ref: VMS Compilation-Footnote-11248797 +Node: VMS Dynamic Extensions1248855 +Node: VMS Installation Details1250540 +Node: VMS Running1252793 +Node: VMS GNV1257072 +Node: VMS Old Gawk1257807 +Node: Bugs1258278 +Node: Bug address1258941 +Node: Usenet1261923 +Node: Maintainers1262927 +Node: Other Versions1264112 +Node: Installation summary1271200 +Node: Notes1272409 +Node: Compatibility Mode1273203 +Node: Additions1273985 +Node: Accessing The Source1274910 +Node: Adding Code1276347 +Node: New Ports1282566 +Node: Derived Files1286941 +Ref: Derived Files-Footnote-11292601 +Ref: Derived Files-Footnote-21292636 +Ref: Derived Files-Footnote-31293234 +Node: Future Extensions1293348 +Node: Implementation Limitations1294006 +Node: Extension Design1295216 +Node: Old Extension Problems1296360 +Ref: Old Extension Problems-Footnote-11297878 +Node: Extension New Mechanism Goals1297935 +Ref: Extension New Mechanism Goals-Footnote-11301299 +Node: Extension Other Design Decisions1301488 +Node: Extension Future Growth1303601 +Node: Notes summary1304207 +Node: Basic Concepts1305365 +Node: Basic High Level1306046 +Ref: figure-general-flow1306328 +Ref: figure-process-flow1307013 +Ref: Basic High Level-Footnote-11310314 +Node: Basic Data Typing1310499 +Node: Glossary1313827 +Node: Copying1345712 +Node: GNU Free Documentation License1383255 +Node: Index1408375 End Tag Table diff --git a/doc/gawk.texi b/doc/gawk.texi index a6f49cb5..e4d02059 100644 --- a/doc/gawk.texi +++ b/doc/gawk.texi @@ -8291,6 +8291,8 @@ words, @code{FS} defines what a field @emph{is not}, instead of what a field However, there are times when you really want to define the fields by what they are, and not by what they are not. +@cindex CSV (comma separated values) data @subentry parsing with @code{FPAT} +@cindex Comma separated values (CSV) data @subentry parsing with @code{FPAT} The most notorious such case is so-called @dfn{comma-separated values} (CSV) data. Many spreadsheet programs, for example, can export their data into text files, where each record is @@ -8474,6 +8476,15 @@ $ @kbd{gawk -v fpat=2 -f test-csv.awk sample.csv} @print{} NF = 3 <p><><s> @end example +@cindex Collado, Manuel +@cindex @code{CSVMODE} library for @command{gawk} +@cindex CSV (comma separated values) data @subentry parsing with @code{CSVMODE} library +@cindex Comma separated values (CSV) data @subentry parsing with @code{FPAT} library +In general, using @code{FPAT} to do your own CSV parsing is like having +a bed with a blanket that's not quite big enough. There's always a corner +that isn't covered. We recommend, instead, that you use Manuel Collado's +@uref{http://mcollado.z15.es/xgawk/, @code{CSVMODE} library for @command{gawk}}. + @node Testing field creation @section Checking How @command{gawk} Is Splitting Records diff --git a/doc/gawktexi.in b/doc/gawktexi.in index 78a28be1..d784d386 100644 --- a/doc/gawktexi.in +++ b/doc/gawktexi.in @@ -7844,6 +7844,8 @@ words, @code{FS} defines what a field @emph{is not}, instead of what a field However, there are times when you really want to define the fields by what they are, and not by what they are not. +@cindex CSV (comma separated values) data @subentry parsing with @code{FPAT} +@cindex Comma separated values (CSV) data @subentry parsing with @code{FPAT} The most notorious such case is so-called @dfn{comma-separated values} (CSV) data. Many spreadsheet programs, for example, can export their data into text files, where each record is @@ -8027,6 +8029,15 @@ $ @kbd{gawk -v fpat=2 -f test-csv.awk sample.csv} @print{} NF = 3 <p><><s> @end example +@cindex Collado, Manuel +@cindex @code{CSVMODE} library for @command{gawk} +@cindex CSV (comma separated values) data @subentry parsing with @code{CSVMODE} library +@cindex Comma separated values (CSV) data @subentry parsing with @code{FPAT} library +In general, using @code{FPAT} to do your own CSV parsing is like having +a bed with a blanket that's not quite big enough. There's always a corner +that isn't covered. We recommend, instead, that you use Manuel Collado's +@uref{http://mcollado.z15.es/xgawk/, @code{CSVMODE} library for @command{gawk}}. + @node Testing field creation @section Checking How @command{gawk} Is Splitting Records |