diff options
Diffstat (limited to 'doc/gawk.info')
-rw-r--r-- | doc/gawk.info | 1065 |
1 files changed, 561 insertions, 504 deletions
diff --git a/doc/gawk.info b/doc/gawk.info index d7442017..6f84e273 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -4044,6 +4044,7 @@ have to be named on the `awk' command line (*note Getline::). * Command line directories:: What happens if you put a directory on the command line. * Input Summary:: Input summary. +* Input Exercises:: Exercises. File: gawk.info, Node: Records, Next: Fields, Up: Reading Files @@ -5854,7 +5855,7 @@ error. usable data from an `awk' program. -File: gawk.info, Node: Input Summary, Prev: Command line directories, Up: Reading Files +File: gawk.info, Node: Input Summary, Next: Input Exercises, Prev: Command line directories, Up: Reading Files 4.12 Summary ============ @@ -5923,6 +5924,25 @@ File: gawk.info, Node: Input Summary, Prev: Command line directories, Up: Rea +File: gawk.info, Node: Input Exercises, Prev: Input Summary, Up: Reading Files + +4.13 Exercises +============== + + 1. Using the `FIELDWIDTHS' variable (*note Constant Size::), write a + program to read election data, where each record represents one + voter's votes. Come up with a way to define which columns are + associated with each ballot item, and print the total votes, + including abstentions, for each item. + + 2. *note Plain Getline::, presented a program to remove C-style + comments (`/* ... */') from the input. That program does not work + if one comment ends on one line and another one starts later on + the same line. Write a program that does handle multiple comments + on the line. + + + File: gawk.info, Node: Printing, Next: Expressions, Prev: Reading Files, Up: Top 5 Printing Output @@ -5957,6 +5977,7 @@ function. descriptors. * Close Files And Pipes:: Closing Input and Output Files and Pipes. * Output Summary:: Output summary. +* Output exercises:: Exercises. File: gawk.info, Node: Print, Next: Print Examples, Up: Printing @@ -6548,11 +6569,6 @@ be emphasized by storing it in a variable, like this: printf format, "----", "------" } { printf format, $1, $2 }' mail-list - At this point, it would be a worthwhile exercise to use the `printf' -statement to line up the headings and table data for the -`inventory-shipped' example that was covered earlier in the minor node -on the `print' statement (*note Print::). - File: gawk.info, Node: Redirection, Next: Special Files, Prev: Printf, Up: Printing @@ -7017,7 +7033,7 @@ call. See the system manual pages for information on how to decode this value. -File: gawk.info, Node: Output Summary, Prev: Close Files And Pipes, Up: Printing +File: gawk.info, Node: Output Summary, Next: Output exercises, Prev: Close Files And Pipes, Up: Printing 5.9 Summary =========== @@ -7043,6 +7059,30 @@ File: gawk.info, Node: Output Summary, Prev: Close Files And Pipes, Up: Print +File: gawk.info, Node: Output exercises, Prev: Output Summary, Up: Printing + +5.10 Exercises +============== + + 1. Rewrite the program: + + awk 'BEGIN { print "Month Crates" + print "----- ------" } + { print $1, " ", $2 }' inventory-shipped + + from *note Output Separators::, by using a new value of `OFS'. + + 2. Use the `printf' statement to line up the headings and table data + for the `inventory-shipped' example that was covered in *note + Print::. + + 3. What happens if you forget the double quotes when redirecting + output, as follows: + + BEGIN { print "Serious error detected!" > /dev/stderr } + + + File: gawk.info, Node: Expressions, Next: Patterns and Actions, Prev: Printing, Up: Top 6 Expressions @@ -14127,6 +14167,7 @@ for different implementations of `awk' is pretty straightforward. * Group Functions:: Functions for getting group information. * Walking Arrays:: A function to walk arrays of arrays. * Library Functions Summary:: Summary of library functions. +* Library exercises:: Exercises. ---------- Footnotes ---------- @@ -15012,12 +15053,6 @@ normal case. end of the command-line arguments. Note that the test in the condition of the `for' loop uses the `<=' operator, not `<'. - As an exercise, you might consider whether this same problem can be -solved without relying on `gawk''s `ARGIND' variable. - - As a second exercise, revise this code to handle the case where an -intervening value in `ARGV' is a variable assignment. - File: gawk.info, Node: Ignoring Assigns, Prev: Empty Files, Up: Data File Management @@ -15886,20 +15921,8 @@ value. Here is a main program to demonstrate: -| a[2][2] = 22 -| a[3] = 3 - Walking an array and processing each element is a general-purpose -operation. You might want to consider generalizing the `walk_array()' -function by adding an additional parameter named `process'. - - Then, inside the loop, instead of simply printing the array element's -index and value, use the indirect function call syntax (*note Indirect -Calls::) on `process', passing it the index and the value. - - When calling `walk_array()', you would pass the name of a -user-defined function that expects to receive an index and a value, and -then processes the element. - -File: gawk.info, Node: Library Functions Summary, Prev: Walking Arrays, Up: Library Functions +File: gawk.info, Node: Library Functions Summary, Next: Library exercises, Prev: Walking Arrays, Up: Library Functions 10.8 Summary ============ @@ -15936,6 +15959,37 @@ File: gawk.info, Node: Library Functions Summary, Prev: Walking Arrays, Up: L +File: gawk.info, Node: Library exercises, Prev: Library Functions Summary, Up: Library Functions + +10.9 Exercises +============== + + 1. In *note Empty Files::, we presented the `zerofile.awk' program, + which made use of `gawk''s `ARGIND' variable. Can this problem be + solved without relying on `ARGIND'? If so, how? + + 2. As a related challenge, revise that code to handle the case where + an intervening value in `ARGV' is a variable assignment. + + 3. *note Walking Arrays::, presented a function that walked a + multidimensional array to print it out. However, walking an array + and processing each element is a general-purpose operation. + Generalize the `walk_array()' function by adding an additional + parameter named `process'. + + Then, inside the loop, instead of printing the array element's + index and value, use the indirect function call syntax (*note + Indirect Calls::) on `process', passing it the index and the value. + + When calling `walk_array()', you would pass the name of a + user-defined function that expects to receive an index and a value, + and then processes the element. + + Test your new version by printing the array; you should end up with + output identical to that of the original version. + + + File: gawk.info, Node: Sample Programs, Next: Advanced Features, Prev: Library Functions, Up: Top 11 Practical `awk' Programs @@ -34078,483 +34132,486 @@ Node: Leftmost Longest176321 Node: Computed Regexps177522 Node: Regexp Summary180894 Node: Reading Files182366 -Node: Records184415 -Node: awk split records185158 -Node: gawk split records190016 -Ref: gawk split records-Footnote-1194537 -Node: Fields194574 -Ref: Fields-Footnote-1197538 -Node: Nonconstant Fields197624 -Ref: Nonconstant Fields-Footnote-1199854 -Node: Changing Fields200056 -Node: Field Separators206010 -Node: Default Field Splitting208712 -Node: Regexp Field Splitting209829 -Node: Single Character Fields213170 -Node: Command Line Field Separator214229 -Node: Full Line Fields217571 -Ref: Full Line Fields-Footnote-1218079 -Node: Field Splitting Summary218125 -Ref: Field Splitting Summary-Footnote-1221224 -Node: Constant Size221325 -Node: Splitting By Content225932 -Ref: Splitting By Content-Footnote-1229682 -Node: Multiple Line229722 -Ref: Multiple Line-Footnote-1235578 -Node: Getline235757 -Node: Plain Getline237973 -Node: Getline/Variable240068 -Node: Getline/File241215 -Node: Getline/Variable/File242599 -Ref: Getline/Variable/File-Footnote-1244198 -Node: Getline/Pipe244285 -Node: Getline/Variable/Pipe246984 -Node: Getline/Coprocess248091 -Node: Getline/Variable/Coprocess249343 -Node: Getline Notes250080 -Node: Getline Summary252884 -Ref: table-getline-variants253292 -Node: Read Timeout254204 -Ref: Read Timeout-Footnote-1258031 -Node: Command line directories258089 -Node: Input Summary258993 -Node: Printing262107 -Node: Print263786 -Node: Print Examples265127 -Node: Output Separators267906 -Node: OFMT269922 -Node: Printf271280 -Node: Basic Printf272186 -Node: Control Letters273725 -Node: Format Modifiers277579 -Node: Printf Examples283606 -Node: Redirection286313 -Node: Special Files293285 -Node: Special FD293816 -Ref: Special FD-Footnote-1297440 -Node: Special Network297514 -Node: Special Caveats298364 -Node: Close Files And Pipes299160 -Ref: Close Files And Pipes-Footnote-1306323 -Ref: Close Files And Pipes-Footnote-2306471 -Node: Output Summary306621 -Node: Expressions307593 -Node: Values308778 -Node: Constants309454 -Node: Scalar Constants310134 -Ref: Scalar Constants-Footnote-1310993 -Node: Nondecimal-numbers311243 -Node: Regexp Constants314243 -Node: Using Constant Regexps314718 -Node: Variables317788 -Node: Using Variables318443 -Node: Assignment Options320167 -Node: Conversion322042 -Ref: table-locale-affects327478 -Ref: Conversion-Footnote-1328102 -Node: All Operators328211 -Node: Arithmetic Ops328841 -Node: Concatenation331346 -Ref: Concatenation-Footnote-1334142 -Node: Assignment Ops334262 -Ref: table-assign-ops339245 -Node: Increment Ops340562 -Node: Truth Values and Conditions344000 -Node: Truth Values345083 -Node: Typing and Comparison346132 -Node: Variable Typing346925 -Ref: Variable Typing-Footnote-1350825 -Node: Comparison Operators350947 -Ref: table-relational-ops351357 -Node: POSIX String Comparison354907 -Ref: POSIX String Comparison-Footnote-1355991 -Node: Boolean Ops356129 -Ref: Boolean Ops-Footnote-1360199 -Node: Conditional Exp360290 -Node: Function Calls362017 -Node: Precedence365775 -Node: Locales369444 -Node: Expressions Summary371075 -Node: Patterns and Actions373572 -Node: Pattern Overview374688 -Node: Regexp Patterns376365 -Node: Expression Patterns376908 -Node: Ranges380689 -Node: BEGIN/END383795 -Node: Using BEGIN/END384557 -Ref: Using BEGIN/END-Footnote-1387293 -Node: I/O And BEGIN/END387399 -Node: BEGINFILE/ENDFILE389684 -Node: Empty392615 -Node: Using Shell Variables392932 -Node: Action Overview395215 -Node: Statements397542 -Node: If Statement399390 -Node: While Statement400888 -Node: Do Statement402932 -Node: For Statement404088 -Node: Switch Statement407240 -Node: Break Statement409343 -Node: Continue Statement411398 -Node: Next Statement413191 -Node: Nextfile Statement415581 -Node: Exit Statement418236 -Node: Built-in Variables420640 -Node: User-modified421767 -Ref: User-modified-Footnote-1429452 -Node: Auto-set429514 -Ref: Auto-set-Footnote-1442079 -Ref: Auto-set-Footnote-2442284 -Node: ARGC and ARGV442340 -Node: Pattern Action Summary446194 -Node: Arrays448417 -Node: Array Basics449966 -Node: Array Intro450792 -Ref: figure-array-elements452765 -Node: Reference to Elements455172 -Node: Assigning Elements457445 -Node: Array Example457936 -Node: Scanning an Array459668 -Node: Controlling Scanning462683 -Ref: Controlling Scanning-Footnote-1467856 -Node: Delete468172 -Ref: Delete-Footnote-1470937 -Node: Numeric Array Subscripts470994 -Node: Uninitialized Subscripts473177 -Node: Multidimensional474802 -Node: Multiscanning477895 -Node: Arrays of Arrays479484 -Node: Arrays Summary484147 -Node: Functions486252 -Node: Built-in487125 -Node: Calling Built-in488203 -Node: Numeric Functions490191 -Ref: Numeric Functions-Footnote-1494025 -Ref: Numeric Functions-Footnote-2494382 -Ref: Numeric Functions-Footnote-3494430 -Node: String Functions494699 -Ref: String Functions-Footnote-1517710 -Ref: String Functions-Footnote-2517839 -Ref: String Functions-Footnote-3518087 -Node: Gory Details518174 -Ref: table-sub-escapes519843 -Ref: table-sub-posix-92521197 -Ref: table-sub-proposed522548 -Ref: table-posix-sub523902 -Ref: table-gensub-escapes525447 -Ref: Gory Details-Footnote-1526623 -Ref: Gory Details-Footnote-2526674 -Node: I/O Functions526825 -Ref: I/O Functions-Footnote-1533948 -Node: Time Functions534095 -Ref: Time Functions-Footnote-1544559 -Ref: Time Functions-Footnote-2544627 -Ref: Time Functions-Footnote-3544785 -Ref: Time Functions-Footnote-4544896 -Ref: Time Functions-Footnote-5545008 -Ref: Time Functions-Footnote-6545235 -Node: Bitwise Functions545501 -Ref: table-bitwise-ops546063 -Ref: Bitwise Functions-Footnote-1550308 -Node: Type Functions550492 -Node: I18N Functions551634 -Node: User-defined553279 -Node: Definition Syntax554083 -Ref: Definition Syntax-Footnote-1559008 -Node: Function Example559077 -Ref: Function Example-Footnote-1561721 -Node: Function Caveats561743 -Node: Calling A Function562261 -Node: Variable Scope563216 -Node: Pass By Value/Reference566204 -Node: Return Statement569712 -Node: Dynamic Typing572696 -Node: Indirect Calls573625 -Node: Functions Summary583338 -Node: Library Functions585877 -Ref: Library Functions-Footnote-1589452 -Ref: Library Functions-Footnote-2589595 -Node: Library Names589766 -Ref: Library Names-Footnote-1593239 -Ref: Library Names-Footnote-2593459 -Node: General Functions593545 -Node: Strtonum Function594573 -Node: Assert Function597353 -Node: Round Function600679 -Node: Cliff Random Function602220 -Node: Ordinal Functions603236 -Ref: Ordinal Functions-Footnote-1606313 -Ref: Ordinal Functions-Footnote-2606565 -Node: Join Function606776 -Ref: Join Function-Footnote-1608547 -Node: Getlocaltime Function608747 -Node: Readfile Function612483 -Node: Data File Management614322 -Node: Filetrans Function614954 -Node: Rewind Function619023 -Node: File Checking620410 -Ref: File Checking-Footnote-1621542 -Node: Empty Files621743 -Node: Ignoring Assigns623973 -Node: Getopt Function625527 -Ref: Getopt Function-Footnote-1636830 -Node: Passwd Functions637033 -Ref: Passwd Functions-Footnote-1646012 -Node: Group Functions646100 -Ref: Group Functions-Footnote-1654042 -Node: Walking Arrays654255 -Node: Library Functions Summary656425 -Node: Sample Programs657787 -Node: Running Examples658514 -Node: Clones659242 -Node: Cut Program660466 -Node: Egrep Program670334 -Ref: Egrep Program-Footnote-1678305 -Node: Id Program678415 -Node: Split Program682079 -Ref: Split Program-Footnote-1685617 -Node: Tee Program685745 -Node: Uniq Program688552 -Node: Wc Program695982 -Ref: Wc Program-Footnote-1700250 -Ref: Wc Program-Footnote-2700450 -Node: Miscellaneous Programs700542 -Node: Dupword Program701755 -Node: Alarm Program703786 -Node: Translate Program708600 -Ref: Translate Program-Footnote-1712991 -Ref: Translate Program-Footnote-2713261 -Node: Labels Program713395 -Ref: Labels Program-Footnote-1716766 -Node: Word Sorting716850 -Node: History Sorting720893 -Node: Extract Program722729 -Ref: Extract Program-Footnote-1730304 -Node: Simple Sed730433 -Node: Igawk Program733495 -Ref: Igawk Program-Footnote-1748671 -Ref: Igawk Program-Footnote-2748872 -Node: Anagram Program749010 -Node: Signature Program752078 -Node: Programs Summary753325 -Node: Advanced Features754513 -Node: Nondecimal Data756461 -Node: Array Sorting758038 -Node: Controlling Array Traversal758735 -Node: Array Sorting Functions767015 -Ref: Array Sorting Functions-Footnote-1770922 -Node: Two-way I/O771116 -Ref: Two-way I/O-Footnote-1776632 -Node: TCP/IP Networking776714 -Node: Profiling779558 -Node: Advanced Features Summary787100 -Node: Internationalization788964 -Node: I18N and L10N790444 -Node: Explaining gettext791130 -Ref: Explaining gettext-Footnote-1796270 -Ref: Explaining gettext-Footnote-2796454 -Node: Programmer i18n796619 -Node: Translator i18n800844 -Node: String Extraction801638 -Ref: String Extraction-Footnote-1802599 -Node: Printf Ordering802685 -Ref: Printf Ordering-Footnote-1805467 -Node: I18N Portability805531 -Ref: I18N Portability-Footnote-1807980 -Node: I18N Example808043 -Ref: I18N Example-Footnote-1810765 -Node: Gawk I18N810837 -Node: I18N Summary811475 -Node: Debugger812814 -Node: Debugging813836 -Node: Debugging Concepts814277 -Node: Debugging Terms816133 -Node: Awk Debugging818730 -Node: Sample Debugging Session819622 -Node: Debugger Invocation820142 -Node: Finding The Bug821475 -Node: List of Debugger Commands827957 -Node: Breakpoint Control829289 -Node: Debugger Execution Control832953 -Node: Viewing And Changing Data836313 -Node: Execution Stack839671 -Node: Debugger Info841184 -Node: Miscellaneous Debugger Commands845178 -Node: Readline Support850362 -Node: Limitations851254 -Node: Debugging Summary853528 -Node: Arbitrary Precision Arithmetic854692 -Ref: Arbitrary Precision Arithmetic-Footnote-1856341 -Node: General Arithmetic856489 -Node: Floating Point Issues858209 -Node: String Conversion Precision859090 -Ref: String Conversion Precision-Footnote-1860795 -Node: Unexpected Results860904 -Node: POSIX Floating Point Problems863057 -Ref: POSIX Floating Point Problems-Footnote-1866878 -Node: Integer Programming866916 -Node: Floating-point Programming868727 -Ref: Floating-point Programming-Footnote-1875055 -Ref: Floating-point Programming-Footnote-2875325 -Node: Floating-point Representation875589 -Node: Floating-point Context876754 -Ref: table-ieee-formats877593 -Node: Rounding Mode878977 -Ref: table-rounding-modes879456 -Ref: Rounding Mode-Footnote-1882471 -Node: Gawk and MPFR882650 -Node: Arbitrary Precision Floats884059 -Ref: Arbitrary Precision Floats-Footnote-1886502 -Node: Setting Precision886823 -Ref: table-predefined-precision-strings887507 -Node: Setting Rounding Mode889652 -Ref: table-gawk-rounding-modes890056 -Node: Floating-point Constants891243 -Node: Changing Precision892695 -Ref: Changing Precision-Footnote-1894087 -Node: Exact Arithmetic894261 -Node: Arbitrary Precision Integers897395 -Ref: Arbitrary Precision Integers-Footnote-1900410 -Node: Dynamic Extensions900557 -Node: Extension Intro902066 -Node: Plugin License903331 -Node: Extension Mechanism Outline904016 -Ref: figure-load-extension904440 -Ref: figure-load-new-function905925 -Ref: figure-call-new-function906927 -Node: Extension API Description908911 -Node: Extension API Functions Introduction910361 -Node: General Data Types915226 -Ref: General Data Types-Footnote-1920919 -Node: Requesting Values921218 -Ref: table-value-types-returned921955 -Node: Memory Allocation Functions922913 -Ref: Memory Allocation Functions-Footnote-1925660 -Node: Constructor Functions925756 -Node: Registration Functions927514 -Node: Extension Functions928199 -Node: Exit Callback Functions930501 -Node: Extension Version String931750 -Node: Input Parsers932400 -Node: Output Wrappers942203 -Node: Two-way processors946719 -Node: Printing Messages948923 -Ref: Printing Messages-Footnote-1950000 -Node: Updating `ERRNO'950152 -Node: Accessing Parameters950891 -Node: Symbol Table Access952121 -Node: Symbol table by name952635 -Node: Symbol table by cookie954611 -Ref: Symbol table by cookie-Footnote-1958744 -Node: Cached values958807 -Ref: Cached values-Footnote-1962311 -Node: Array Manipulation962402 -Ref: Array Manipulation-Footnote-1963500 -Node: Array Data Types963539 -Ref: Array Data Types-Footnote-1966242 -Node: Array Functions966334 -Node: Flattening Arrays970208 -Node: Creating Arrays977060 -Node: Extension API Variables981791 -Node: Extension Versioning982427 -Node: Extension API Informational Variables984328 -Node: Extension API Boilerplate985414 -Node: Finding Extensions989218 -Node: Extension Example989778 -Node: Internal File Description990508 -Node: Internal File Ops994599 -Ref: Internal File Ops-Footnote-11006145 -Node: Using Internal File Ops1006285 -Ref: Using Internal File Ops-Footnote-11008632 -Node: Extension Samples1008900 -Node: Extension Sample File Functions1010424 -Node: Extension Sample Fnmatch1017992 -Node: Extension Sample Fork1019473 -Node: Extension Sample Inplace1020686 -Node: Extension Sample Ord1022466 -Node: Extension Sample Readdir1023302 -Ref: table-readdir-file-types1024158 -Node: Extension Sample Revout1024957 -Node: Extension Sample Rev2way1025548 -Node: Extension Sample Read write array1026289 -Node: Extension Sample Readfile1028168 -Node: Extension Sample API Tests1029268 -Node: Extension Sample Time1029793 -Node: gawkextlib1031108 -Node: Extension summary1033921 -Node: Language History1037586 -Node: V7/SVR3.11039229 -Node: SVR41041549 -Node: POSIX1042991 -Node: BTL1044377 -Node: POSIX/GNU1045111 -Node: Feature History1050710 -Node: Common Extensions1063822 -Node: Ranges and Locales1065134 -Ref: Ranges and Locales-Footnote-11069751 -Ref: Ranges and Locales-Footnote-21069778 -Ref: Ranges and Locales-Footnote-31070012 -Node: Contributors1070233 -Node: History summary1075695 -Node: Installation1077064 -Node: Gawk Distribution1078015 -Node: Getting1078499 -Node: Extracting1079325 -Node: Distribution contents1080967 -Node: Unix Installation1086684 -Node: Quick Installation1087301 -Node: Additional Configuration Options1089743 -Node: Configuration Philosophy1091481 -Node: Non-Unix Installation1093832 -Node: PC Installation1094290 -Node: PC Binary Installation1095601 -Node: PC Compiling1097449 -Ref: PC Compiling-Footnote-11100448 -Node: PC Testing1100553 -Node: PC Using1101729 -Node: Cygwin1105887 -Node: MSYS1106696 -Node: VMS Installation1107210 -Node: VMS Compilation1108006 -Ref: VMS Compilation-Footnote-11109228 -Node: VMS Dynamic Extensions1109286 -Node: VMS Installation Details1110659 -Node: VMS Running1112911 -Node: VMS GNV1115745 -Node: VMS Old Gawk1116468 -Node: Bugs1116938 -Node: Other Versions1120942 -Node: Installation summary1127196 -Node: Notes1128251 -Node: Compatibility Mode1129116 -Node: Additions1129898 -Node: Accessing The Source1130823 -Node: Adding Code1132259 -Node: New Ports1138437 -Node: Derived Files1142918 -Ref: Derived Files-Footnote-11147999 -Ref: Derived Files-Footnote-21148033 -Ref: Derived Files-Footnote-31148629 -Node: Future Extensions1148743 -Node: Implementation Limitations1149349 -Node: Extension Design1150597 -Node: Old Extension Problems1151751 -Ref: Old Extension Problems-Footnote-11153268 -Node: Extension New Mechanism Goals1153325 -Ref: Extension New Mechanism Goals-Footnote-11156685 -Node: Extension Other Design Decisions1156874 -Node: Extension Future Growth1158980 -Node: Old Extension Mechanism1159816 -Node: Notes summary1161578 -Node: Basic Concepts1162763 -Node: Basic High Level1163444 -Ref: figure-general-flow1163716 -Ref: figure-process-flow1164315 -Ref: Basic High Level-Footnote-11167544 -Node: Basic Data Typing1167729 -Node: Glossary1171056 -Node: Copying1196208 -Node: GNU Free Documentation License1233764 -Node: Index1258900 +Node: Records184458 +Node: awk split records185201 +Node: gawk split records190059 +Ref: gawk split records-Footnote-1194580 +Node: Fields194617 +Ref: Fields-Footnote-1197581 +Node: Nonconstant Fields197667 +Ref: Nonconstant Fields-Footnote-1199897 +Node: Changing Fields200099 +Node: Field Separators206053 +Node: Default Field Splitting208755 +Node: Regexp Field Splitting209872 +Node: Single Character Fields213213 +Node: Command Line Field Separator214272 +Node: Full Line Fields217614 +Ref: Full Line Fields-Footnote-1218122 +Node: Field Splitting Summary218168 +Ref: Field Splitting Summary-Footnote-1221267 +Node: Constant Size221368 +Node: Splitting By Content225975 +Ref: Splitting By Content-Footnote-1229725 +Node: Multiple Line229765 +Ref: Multiple Line-Footnote-1235621 +Node: Getline235800 +Node: Plain Getline238016 +Node: Getline/Variable240111 +Node: Getline/File241258 +Node: Getline/Variable/File242642 +Ref: Getline/Variable/File-Footnote-1244241 +Node: Getline/Pipe244328 +Node: Getline/Variable/Pipe247027 +Node: Getline/Coprocess248134 +Node: Getline/Variable/Coprocess249386 +Node: Getline Notes250123 +Node: Getline Summary252927 +Ref: table-getline-variants253335 +Node: Read Timeout254247 +Ref: Read Timeout-Footnote-1258074 +Node: Command line directories258132 +Node: Input Summary259036 +Node: Input Exercises262174 +Node: Printing262907 +Node: Print264630 +Node: Print Examples265971 +Node: Output Separators268750 +Node: OFMT270766 +Node: Printf272124 +Node: Basic Printf273030 +Node: Control Letters274569 +Node: Format Modifiers278423 +Node: Printf Examples284450 +Node: Redirection286914 +Node: Special Files293886 +Node: Special FD294417 +Ref: Special FD-Footnote-1298041 +Node: Special Network298115 +Node: Special Caveats298965 +Node: Close Files And Pipes299761 +Ref: Close Files And Pipes-Footnote-1306924 +Ref: Close Files And Pipes-Footnote-2307072 +Node: Output Summary307222 +Node: Output exercises308219 +Node: Expressions308899 +Node: Values310084 +Node: Constants310760 +Node: Scalar Constants311440 +Ref: Scalar Constants-Footnote-1312299 +Node: Nondecimal-numbers312549 +Node: Regexp Constants315549 +Node: Using Constant Regexps316024 +Node: Variables319094 +Node: Using Variables319749 +Node: Assignment Options321473 +Node: Conversion323348 +Ref: table-locale-affects328784 +Ref: Conversion-Footnote-1329408 +Node: All Operators329517 +Node: Arithmetic Ops330147 +Node: Concatenation332652 +Ref: Concatenation-Footnote-1335448 +Node: Assignment Ops335568 +Ref: table-assign-ops340551 +Node: Increment Ops341868 +Node: Truth Values and Conditions345306 +Node: Truth Values346389 +Node: Typing and Comparison347438 +Node: Variable Typing348231 +Ref: Variable Typing-Footnote-1352131 +Node: Comparison Operators352253 +Ref: table-relational-ops352663 +Node: POSIX String Comparison356213 +Ref: POSIX String Comparison-Footnote-1357297 +Node: Boolean Ops357435 +Ref: Boolean Ops-Footnote-1361505 +Node: Conditional Exp361596 +Node: Function Calls363323 +Node: Precedence367081 +Node: Locales370750 +Node: Expressions Summary372381 +Node: Patterns and Actions374878 +Node: Pattern Overview375994 +Node: Regexp Patterns377671 +Node: Expression Patterns378214 +Node: Ranges381995 +Node: BEGIN/END385101 +Node: Using BEGIN/END385863 +Ref: Using BEGIN/END-Footnote-1388599 +Node: I/O And BEGIN/END388705 +Node: BEGINFILE/ENDFILE390990 +Node: Empty393921 +Node: Using Shell Variables394238 +Node: Action Overview396521 +Node: Statements398848 +Node: If Statement400696 +Node: While Statement402194 +Node: Do Statement404238 +Node: For Statement405394 +Node: Switch Statement408546 +Node: Break Statement410649 +Node: Continue Statement412704 +Node: Next Statement414497 +Node: Nextfile Statement416887 +Node: Exit Statement419542 +Node: Built-in Variables421946 +Node: User-modified423073 +Ref: User-modified-Footnote-1430758 +Node: Auto-set430820 +Ref: Auto-set-Footnote-1443385 +Ref: Auto-set-Footnote-2443590 +Node: ARGC and ARGV443646 +Node: Pattern Action Summary447500 +Node: Arrays449723 +Node: Array Basics451272 +Node: Array Intro452098 +Ref: figure-array-elements454071 +Node: Reference to Elements456478 +Node: Assigning Elements458751 +Node: Array Example459242 +Node: Scanning an Array460974 +Node: Controlling Scanning463989 +Ref: Controlling Scanning-Footnote-1469162 +Node: Delete469478 +Ref: Delete-Footnote-1472243 +Node: Numeric Array Subscripts472300 +Node: Uninitialized Subscripts474483 +Node: Multidimensional476108 +Node: Multiscanning479201 +Node: Arrays of Arrays480790 +Node: Arrays Summary485453 +Node: Functions487558 +Node: Built-in488431 +Node: Calling Built-in489509 +Node: Numeric Functions491497 +Ref: Numeric Functions-Footnote-1495331 +Ref: Numeric Functions-Footnote-2495688 +Ref: Numeric Functions-Footnote-3495736 +Node: String Functions496005 +Ref: String Functions-Footnote-1519016 +Ref: String Functions-Footnote-2519145 +Ref: String Functions-Footnote-3519393 +Node: Gory Details519480 +Ref: table-sub-escapes521149 +Ref: table-sub-posix-92522503 +Ref: table-sub-proposed523854 +Ref: table-posix-sub525208 +Ref: table-gensub-escapes526753 +Ref: Gory Details-Footnote-1527929 +Ref: Gory Details-Footnote-2527980 +Node: I/O Functions528131 +Ref: I/O Functions-Footnote-1535254 +Node: Time Functions535401 +Ref: Time Functions-Footnote-1545865 +Ref: Time Functions-Footnote-2545933 +Ref: Time Functions-Footnote-3546091 +Ref: Time Functions-Footnote-4546202 +Ref: Time Functions-Footnote-5546314 +Ref: Time Functions-Footnote-6546541 +Node: Bitwise Functions546807 +Ref: table-bitwise-ops547369 +Ref: Bitwise Functions-Footnote-1551614 +Node: Type Functions551798 +Node: I18N Functions552940 +Node: User-defined554585 +Node: Definition Syntax555389 +Ref: Definition Syntax-Footnote-1560314 +Node: Function Example560383 +Ref: Function Example-Footnote-1563027 +Node: Function Caveats563049 +Node: Calling A Function563567 +Node: Variable Scope564522 +Node: Pass By Value/Reference567510 +Node: Return Statement571018 +Node: Dynamic Typing574002 +Node: Indirect Calls574931 +Node: Functions Summary584644 +Node: Library Functions587183 +Ref: Library Functions-Footnote-1590801 +Ref: Library Functions-Footnote-2590944 +Node: Library Names591115 +Ref: Library Names-Footnote-1594588 +Ref: Library Names-Footnote-2594808 +Node: General Functions594894 +Node: Strtonum Function595922 +Node: Assert Function598702 +Node: Round Function602028 +Node: Cliff Random Function603569 +Node: Ordinal Functions604585 +Ref: Ordinal Functions-Footnote-1607662 +Ref: Ordinal Functions-Footnote-2607914 +Node: Join Function608125 +Ref: Join Function-Footnote-1609896 +Node: Getlocaltime Function610096 +Node: Readfile Function613832 +Node: Data File Management615671 +Node: Filetrans Function616303 +Node: Rewind Function620372 +Node: File Checking621759 +Ref: File Checking-Footnote-1622891 +Node: Empty Files623092 +Node: Ignoring Assigns625071 +Node: Getopt Function626625 +Ref: Getopt Function-Footnote-1637928 +Node: Passwd Functions638131 +Ref: Passwd Functions-Footnote-1647110 +Node: Group Functions647198 +Ref: Group Functions-Footnote-1655140 +Node: Walking Arrays655353 +Node: Library Functions Summary656956 +Node: Library exercises658344 +Node: Sample Programs659624 +Node: Running Examples660351 +Node: Clones661079 +Node: Cut Program662303 +Node: Egrep Program672171 +Ref: Egrep Program-Footnote-1680142 +Node: Id Program680252 +Node: Split Program683916 +Ref: Split Program-Footnote-1687454 +Node: Tee Program687582 +Node: Uniq Program690389 +Node: Wc Program697819 +Ref: Wc Program-Footnote-1702087 +Ref: Wc Program-Footnote-2702287 +Node: Miscellaneous Programs702379 +Node: Dupword Program703592 +Node: Alarm Program705623 +Node: Translate Program710437 +Ref: Translate Program-Footnote-1714828 +Ref: Translate Program-Footnote-2715098 +Node: Labels Program715232 +Ref: Labels Program-Footnote-1718603 +Node: Word Sorting718687 +Node: History Sorting722730 +Node: Extract Program724566 +Ref: Extract Program-Footnote-1732141 +Node: Simple Sed732270 +Node: Igawk Program735332 +Ref: Igawk Program-Footnote-1750508 +Ref: Igawk Program-Footnote-2750709 +Node: Anagram Program750847 +Node: Signature Program753915 +Node: Programs Summary755162 +Node: Advanced Features756350 +Node: Nondecimal Data758298 +Node: Array Sorting759875 +Node: Controlling Array Traversal760572 +Node: Array Sorting Functions768852 +Ref: Array Sorting Functions-Footnote-1772759 +Node: Two-way I/O772953 +Ref: Two-way I/O-Footnote-1778469 +Node: TCP/IP Networking778551 +Node: Profiling781395 +Node: Advanced Features Summary788937 +Node: Internationalization790801 +Node: I18N and L10N792281 +Node: Explaining gettext792967 +Ref: Explaining gettext-Footnote-1798107 +Ref: Explaining gettext-Footnote-2798291 +Node: Programmer i18n798456 +Node: Translator i18n802681 +Node: String Extraction803475 +Ref: String Extraction-Footnote-1804436 +Node: Printf Ordering804522 +Ref: Printf Ordering-Footnote-1807304 +Node: I18N Portability807368 +Ref: I18N Portability-Footnote-1809817 +Node: I18N Example809880 +Ref: I18N Example-Footnote-1812602 +Node: Gawk I18N812674 +Node: I18N Summary813312 +Node: Debugger814651 +Node: Debugging815673 +Node: Debugging Concepts816114 +Node: Debugging Terms817970 +Node: Awk Debugging820567 +Node: Sample Debugging Session821459 +Node: Debugger Invocation821979 +Node: Finding The Bug823312 +Node: List of Debugger Commands829794 +Node: Breakpoint Control831126 +Node: Debugger Execution Control834790 +Node: Viewing And Changing Data838150 +Node: Execution Stack841508 +Node: Debugger Info843021 +Node: Miscellaneous Debugger Commands847015 +Node: Readline Support852199 +Node: Limitations853091 +Node: Debugging Summary855365 +Node: Arbitrary Precision Arithmetic856529 +Ref: Arbitrary Precision Arithmetic-Footnote-1858178 +Node: General Arithmetic858326 +Node: Floating Point Issues860046 +Node: String Conversion Precision860927 +Ref: String Conversion Precision-Footnote-1862632 +Node: Unexpected Results862741 +Node: POSIX Floating Point Problems864894 +Ref: POSIX Floating Point Problems-Footnote-1868715 +Node: Integer Programming868753 +Node: Floating-point Programming870564 +Ref: Floating-point Programming-Footnote-1876892 +Ref: Floating-point Programming-Footnote-2877162 +Node: Floating-point Representation877426 +Node: Floating-point Context878591 +Ref: table-ieee-formats879430 +Node: Rounding Mode880814 +Ref: table-rounding-modes881293 +Ref: Rounding Mode-Footnote-1884308 +Node: Gawk and MPFR884487 +Node: Arbitrary Precision Floats885896 +Ref: Arbitrary Precision Floats-Footnote-1888339 +Node: Setting Precision888660 +Ref: table-predefined-precision-strings889344 +Node: Setting Rounding Mode891489 +Ref: table-gawk-rounding-modes891893 +Node: Floating-point Constants893080 +Node: Changing Precision894532 +Ref: Changing Precision-Footnote-1895924 +Node: Exact Arithmetic896098 +Node: Arbitrary Precision Integers899232 +Ref: Arbitrary Precision Integers-Footnote-1902247 +Node: Dynamic Extensions902394 +Node: Extension Intro903903 +Node: Plugin License905168 +Node: Extension Mechanism Outline905853 +Ref: figure-load-extension906277 +Ref: figure-load-new-function907762 +Ref: figure-call-new-function908764 +Node: Extension API Description910748 +Node: Extension API Functions Introduction912198 +Node: General Data Types917063 +Ref: General Data Types-Footnote-1922756 +Node: Requesting Values923055 +Ref: table-value-types-returned923792 +Node: Memory Allocation Functions924750 +Ref: Memory Allocation Functions-Footnote-1927497 +Node: Constructor Functions927593 +Node: Registration Functions929351 +Node: Extension Functions930036 +Node: Exit Callback Functions932338 +Node: Extension Version String933587 +Node: Input Parsers934237 +Node: Output Wrappers944040 +Node: Two-way processors948556 +Node: Printing Messages950760 +Ref: Printing Messages-Footnote-1951837 +Node: Updating `ERRNO'951989 +Node: Accessing Parameters952728 +Node: Symbol Table Access953958 +Node: Symbol table by name954472 +Node: Symbol table by cookie956448 +Ref: Symbol table by cookie-Footnote-1960581 +Node: Cached values960644 +Ref: Cached values-Footnote-1964148 +Node: Array Manipulation964239 +Ref: Array Manipulation-Footnote-1965337 +Node: Array Data Types965376 +Ref: Array Data Types-Footnote-1968079 +Node: Array Functions968171 +Node: Flattening Arrays972045 +Node: Creating Arrays978897 +Node: Extension API Variables983628 +Node: Extension Versioning984264 +Node: Extension API Informational Variables986165 +Node: Extension API Boilerplate987251 +Node: Finding Extensions991055 +Node: Extension Example991615 +Node: Internal File Description992345 +Node: Internal File Ops996436 +Ref: Internal File Ops-Footnote-11007982 +Node: Using Internal File Ops1008122 +Ref: Using Internal File Ops-Footnote-11010469 +Node: Extension Samples1010737 +Node: Extension Sample File Functions1012261 +Node: Extension Sample Fnmatch1019829 +Node: Extension Sample Fork1021310 +Node: Extension Sample Inplace1022523 +Node: Extension Sample Ord1024303 +Node: Extension Sample Readdir1025139 +Ref: table-readdir-file-types1025995 +Node: Extension Sample Revout1026794 +Node: Extension Sample Rev2way1027385 +Node: Extension Sample Read write array1028126 +Node: Extension Sample Readfile1030005 +Node: Extension Sample API Tests1031105 +Node: Extension Sample Time1031630 +Node: gawkextlib1032945 +Node: Extension summary1035758 +Node: Language History1039423 +Node: V7/SVR3.11041066 +Node: SVR41043386 +Node: POSIX1044828 +Node: BTL1046214 +Node: POSIX/GNU1046948 +Node: Feature History1052547 +Node: Common Extensions1065659 +Node: Ranges and Locales1066971 +Ref: Ranges and Locales-Footnote-11071588 +Ref: Ranges and Locales-Footnote-21071615 +Ref: Ranges and Locales-Footnote-31071849 +Node: Contributors1072070 +Node: History summary1077532 +Node: Installation1078901 +Node: Gawk Distribution1079852 +Node: Getting1080336 +Node: Extracting1081162 +Node: Distribution contents1082804 +Node: Unix Installation1088521 +Node: Quick Installation1089138 +Node: Additional Configuration Options1091580 +Node: Configuration Philosophy1093318 +Node: Non-Unix Installation1095669 +Node: PC Installation1096127 +Node: PC Binary Installation1097438 +Node: PC Compiling1099286 +Ref: PC Compiling-Footnote-11102285 +Node: PC Testing1102390 +Node: PC Using1103566 +Node: Cygwin1107724 +Node: MSYS1108533 +Node: VMS Installation1109047 +Node: VMS Compilation1109843 +Ref: VMS Compilation-Footnote-11111065 +Node: VMS Dynamic Extensions1111123 +Node: VMS Installation Details1112496 +Node: VMS Running1114748 +Node: VMS GNV1117582 +Node: VMS Old Gawk1118305 +Node: Bugs1118775 +Node: Other Versions1122779 +Node: Installation summary1129033 +Node: Notes1130088 +Node: Compatibility Mode1130953 +Node: Additions1131735 +Node: Accessing The Source1132660 +Node: Adding Code1134096 +Node: New Ports1140274 +Node: Derived Files1144755 +Ref: Derived Files-Footnote-11149836 +Ref: Derived Files-Footnote-21149870 +Ref: Derived Files-Footnote-31150466 +Node: Future Extensions1150580 +Node: Implementation Limitations1151186 +Node: Extension Design1152434 +Node: Old Extension Problems1153588 +Ref: Old Extension Problems-Footnote-11155105 +Node: Extension New Mechanism Goals1155162 +Ref: Extension New Mechanism Goals-Footnote-11158522 +Node: Extension Other Design Decisions1158711 +Node: Extension Future Growth1160817 +Node: Old Extension Mechanism1161653 +Node: Notes summary1163415 +Node: Basic Concepts1164600 +Node: Basic High Level1165281 +Ref: figure-general-flow1165553 +Ref: figure-process-flow1166152 +Ref: Basic High Level-Footnote-11169381 +Node: Basic Data Typing1169566 +Node: Glossary1172893 +Node: Copying1198045 +Node: GNU Free Documentation License1235601 +Node: Index1260737 End Tag Table |