summaryrefslogtreecommitdiff
path: root/doc/gawk.info
diff options
context:
space:
mode:
Diffstat (limited to 'doc/gawk.info')
-rw-r--r--doc/gawk.info1921
1 files changed, 1106 insertions, 815 deletions
diff --git a/doc/gawk.info b/doc/gawk.info
index 82af1e98..368f1ea9 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -4,8 +4,8 @@ Copyright © 1989, 1991, 1992, 1993, 1996–2005, 2007, 2009–2023
Free Software Foundation, Inc.
- This is Edition 5.2 of ‘GAWK: Effective AWK Programming: A User’s
-Guide for GNU Awk’, for the 5.2.2 (or later) version of the GNU
+ This is Edition 5.3 of ‘GAWK: Effective AWK Programming: A User’s
+Guide for GNU Awk’, for the 5.3.0 (or later) version of the GNU
implementation of AWK.
Permission is granted to copy, distribute and/or modify this document
@@ -41,8 +41,8 @@ particular records in a file and perform operations upon them.
Free Software Foundation, Inc.
- This is Edition 5.2 of ‘GAWK: Effective AWK Programming: A User’s
-Guide for GNU Awk’, for the 5.2.2 (or later) version of the GNU
+ This is Edition 5.3 of ‘GAWK: Effective AWK Programming: A User’s
+Guide for GNU Awk’, for the 5.3.0 (or later) version of the GNU
implementation of AWK.
Permission is granted to copy, distribute and/or modify this document
@@ -193,6 +193,7 @@ in (a) below. A copy of the license is included in the section entitled
* Regexp Field Splitting:: Using regexps as the field separator.
* Single Character Fields:: Making each character a separate
field.
+* Comma Separated Fields:: Working with CSV files.
* Command Line Field Separator:: Setting ‘FS’ from the command
line.
* Full Line Fields:: Making the full line be a single
@@ -260,6 +261,7 @@ in (a) below. A copy of the license is included in the section entitled
Pipes.
* Close Return Value:: Using the return value from
‘close()’.
+* Noflush:: Speeding Up Pipe Output.
* Nonfatal:: Enabling Nonfatal Output.
* Output Summary:: Output summary.
* Output Exercises:: Exercises.
@@ -442,6 +444,8 @@ in (a) below. A copy of the license is included in the section entitled
shell.
* Isnumeric Function:: A function to test whether a value is
numeric.
+* To CSV Function:: A function to convert output to CSV
+ format.
* Data File Management:: Functions for managing command-line
data files.
* Filetrans Function:: A function for handling data file
@@ -964,6 +968,10 @@ release.
After eight years, add another part ‘egrep’ and two more parts C.
Document very well and release.
+ After 35 more years, add Unicode and CSV support, sprinkle lightly
+with a few choice features from ‘gawk’, document very well again, and
+release.
+
The name ‘awk’ comes from the initials of its designers: Alfred V.
Aho, Peter J. Weinberger, and Brian W. Kernighan. The original version
of ‘awk’ was written in 1977 at AT&T Bell Laboratories. In 1985, a new
@@ -2715,6 +2723,12 @@ The following list describes options mandated by the POSIX standard:
running the program. The trace is printed to standard error. Each
“op code” is preceded by a ‘+’ sign in the output.
+‘-k’
+‘--csv’
+ Enable special processing for files with comma separated values
+ (CSV). *Note Comma Separated Fields::. This option cannot be used
+ with ‘--posix’. Attempting to do causes a fatal error.
+
‘-l’ EXT
‘--load’ EXT
Load a dynamic extension named EXT. Extensions are stored as
@@ -3719,6 +3733,20 @@ sequences apply to both string constants and regexp constants:
produced undefined results. As of version 4.2, only two
digits are processed.
+‘\uHH...’
+ The hexadecimal value HH, where HH stands for a sequence of
+ hexadecimal digits (‘0’–‘9’, and either ‘A’–‘F’ or ‘a’–‘f’). A
+ maximum of eight digits are allowed after the ‘\u’. Any further
+ hexadecimal digits are treated as simple letters or numbers.
+ (c.e.) (The ‘\u’ escape sequence is not allowed in POSIX awk.)
+
+ This escape sequence is intended for designating a character in the
+ Unicode character set. ‘gawk’ first converts the given digits into
+ an integer and then translates the given “wide character” value
+ into the current locale’s multibyte encoding (even if that is a not
+ a Unicode locale). If the given bytes do not represent a valid
+ character, the value becomes ‘"?"’.
+
‘\/’
A literal slash (should be used for regexp constants only). This
sequence is used when you want to write a regexp constant that
@@ -4553,6 +4581,10 @@ variable ‘RS’. If ‘RS’ is any single character, that character
separates records. Otherwise (in ‘gawk’), ‘RS’ is treated as a regular
expression. This mechanism is explained in greater detail shortly.
+ NOTE: When ‘gawk’ is invoked with the ‘--csv’ option, nothing in
+ this minor node applies. *Note Comma Separated Fields::, for the
+ details.
+
* Menu:
* awk split records:: How standard ‘awk’ splits records.
@@ -5064,6 +5096,7 @@ File: gawk.info, Node: Field Separators, Next: Constant Size, Prev: Changing
* Default Field Splitting:: How fields are normally separated.
* Regexp Field Splitting:: Using regexps as the field separator.
* Single Character Fields:: Making each character a separate field.
+* Comma Separated Fields:: Working with CSV files.
* Command Line Field Separator:: Setting ‘FS’ from the command line.
* Full Line Fields:: Making the full line be a single field.
* Field Splitting Summary:: Some final points and a summary table.
@@ -5093,13 +5126,13 @@ time to do this is at the beginning of execution before any input has
been processed, so that the very first record is read with the proper
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:
- John Q. Smith, 29 Oak St., Walamazoo, MI 42139
+ John Q. Smith: 29 Oak St.: Walamazoo: MI 42139
this ‘awk’ program extracts and prints the string ‘•29•Oak•St.’.
@@ -5108,7 +5141,7 @@ separate fields the way you thought they would. For instance, the
person’s name in the example we just used might have a title or suffix
attached, such as:
- John Q. Smith, LXIX, 29 Oak St., Walamazoo, MI 42139
+ John Q. Smith: LXIX: 29 Oak St.: Walamazoo: MI 42139
The same program would extract ‘•LXIX’ instead of ‘•29•Oak•St.’. If you
were expecting the program to print the address, you would be surprised.
@@ -5223,7 +5256,7 @@ string; field splitting does not. Thus, for example ‘FS = "()"’ does
_not_ split fields between characters.

-File: gawk.info, Node: Single Character Fields, Next: Command Line Field Separator, Prev: Regexp Field Splitting, Up: Field Separators
+File: gawk.info, Node: Single Character Fields, Next: Comma Separated Fields, Prev: Regexp Field Splitting, Up: Field Separators
4.5.3 Making Each Character a Separate Field
--------------------------------------------
@@ -5249,9 +5282,86 @@ Options::), if ‘FS’ is the null string, then ‘gawk’ also behaves this
way.

-File: gawk.info, Node: Command Line Field Separator, Next: Full Line Fields, Prev: Single Character Fields, Up: Field Separators
+File: gawk.info, Node: Comma Separated Fields, Next: Command Line Field Separator, Prev: Single Character Fields, Up: Field Separators
+
+4.5.4 Working With Comma Separated Value Files
+----------------------------------------------
+
+Many commonly-used tools use a comma to separate fields, instead of
+whitespace. This is particularly true of popular spreadsheet programs.
+There is no universally accepted standard for the format of these files,
+although RFC 4180 (http://www.ietf.org/rfc/rfc4180) lists the common
+practices.
+
+ For decades, anyone wishing to work with CSV files and ‘awk’ had to
+“roll their own” solution. (For an example, *note Splitting By
+Content::). In 2023, Brian Kernighan decided to add CSV support to his
+version of ‘awk’. In order to keep up, ‘gawk’ too provides the same
+support as his version. To use CSV data, invoke ‘gawk’ with either of
+the ‘-k’ or ‘--csv’ options.
+
+ Fields in CSV files are separated by commas. In order to allow a
+comma to appear inside a field (i.e., as data), the field may be quoted
+by beginning and ending it with double quotes. In order to allow a
+double quote inside a field, the field _must_ be quoted, and two double
+quotes represent an actual double quote. The double quote that starts a
+quoted field must be the first character after the comma. *note Table
+4.1: table-csv-examples. shows some examples.
+
+
+Input Field Contents
+----------------------------------------------
+‘abc def’ ‘abc def’
+‘"quoted data"’ ‘quoted data’
+‘"quoted, data"’ ‘quoted, data’
+‘"She said ‘She said "Stop!".’
+""Stop!""."’
+
+Table 4.1: Examples of CSV data
-4.5.4 Setting ‘FS’ from the Command Line
+ Additionally, and here’s where it gets messy, newlines are also
+allowed inside double-quoted fields! In order to deal with such things,
+when processing CSV files, ‘gawk’ scans the input data looking for
+newlines that are not enclosed in double quotes. Thus, use of the
+‘--csv’ option totally overrides normal record processing with ‘RS’
+(*note Records::), as well as field splitting with any of ‘FS’,
+‘FIELDWIDTHS’, or ‘FPAT’.
+
+ 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’ converts
+CR-LF pairs into a single newline. That is, the ‘\r’ is removed.
+
+ This occurs only when a CR is paired with an LF; a standalone CR is
+left alone. This behavior is consistent with with Windows systems which
+automatically convert CR-LF in files into a plain LF in memory, and also
+with the commonly available ‘unix2dos’ utility program.
+
+ The behavior of the ‘split()’ function (not formally discussed yet,
+see *note String Functions::) differs slightly when processing CSV
+files. When called with two arguments (‘split(STRING, ARRAY)’),
+‘split()’ does CSV-based splitting. Otherwise, it behaves normally.
+
+ If ‘--csv’ has been used, ‘PROCINFO["CSV"]’ will exist. Otherwise,
+it will not. *Note Auto-set::.
+
+ Finally, if ‘--csv’ has been used, assigning a value to any of ‘FS’,
+‘FIELDWIDTHS’, ‘FPAT’, or ‘RS’ generates a warning message.
+
+ To be clear, ‘gawk’ takes RFC 4180 (http://www.ietf.org/rfc/rfc4180)
+as its specification for CSV input data. There are no mechanisms for
+accepting nonstandard CSV data, such as files that use a semicolon
+instead of a comma as the separator.
+
+
+File: gawk.info, Node: Command Line Field Separator, Next: Full Line Fields, Prev: Comma Separated Fields, Up: Field Separators
+
+4.5.5 Setting ‘FS’ from the Command Line
----------------------------------------
‘FS’ can be set on the command line. Use the ‘-F’ option to do so. For
@@ -5329,7 +5439,7 @@ the entries for users whose full name is not indicated:

File: gawk.info, Node: Full Line Fields, Next: Field Splitting Summary, Prev: Command Line Field Separator, Up: Field Separators
-4.5.5 Making the Full Line Be a Single Field
+4.5.6 Making the Full Line Be a Single Field
--------------------------------------------
Occasionally, it’s useful to treat the whole input line as a single
@@ -5377,7 +5487,7 @@ defined by the POSIX standard.

File: gawk.info, Node: Field Splitting Summary, Prev: Full Line Fields, Up: Field Separators
-4.5.6 Field-Splitting Summary
+4.5.7 Field-Splitting Summary
-----------------------------
It is important to remember that when you assign a string constant as
@@ -5391,10 +5501,18 @@ period followed by any single character, use ‘FS = "\\.."’.
The following list summarizes how fields are split, based on the
value of ‘FS’ (‘==’ means “is equal to”):
+‘gawk was invoked with --csv’
+ Field splitting follows the rules given in *note Comma Separated
+ Fields::. The value of ‘FS’ is ignored.
+
‘FS == " "’
Fields are separated by runs of whitespace. Leading and trailing
whitespace are ignored. This is the default.
+‘FS == ","’
+ Fields are separated by commas, with quoting of fields and special
+ rules involved.
+
‘FS == ANY OTHER SINGLE CHARACTER’
Fields are separated by each occurrence of the character. Multiple
successive occurrences delimit empty fields, as do leading and
@@ -5621,13 +5739,16 @@ File: gawk.info, Node: Splitting By Content, Next: Testing field creation, Pr
4.7 Defining Fields by Content
==============================
+*FIXME*: This whole section needs rewriting now that ‘gawk’ has built-in
+CSV parsing. Sigh.
+
* Menu:
* More CSV:: More on CSV files.
* FS versus FPAT:: A subtle difference.
-This minor node discusses an advanced feature of ‘gawk’. If you are a
-novice ‘awk’ user, you might want to skip it on the first reading.
+ This minor node discusses an advanced feature of ‘gawk’. If you are
+a novice ‘awk’ user, you might want to skip it on the first reading.
Normally, when using ‘FS’, ‘gawk’ defines the fields as the parts of
the record that occur in between each field separator. In other words,
@@ -5635,13 +5756,13 @@ the record that occur in between each field separator. In other words,
However, there are times when you really want to define the fields by
what they are, and not by what they are not.
- The most notorious such case is so-called “comma-separated values”
-(CSV) data. Many spreadsheet programs, for example, can export their
-data into text files, where each record is terminated with a newline,
-and fields are separated by commas. If commas only separated the data,
-there wouldn’t be an issue. The problem comes when one of the fields
-contains an _embedded_ comma. In such cases, most programs embed the
-field in double quotes.(1) So, we might have data like this:
+ The most notorious such case is comma-separated values (CSV) data.
+Many spreadsheet programs, for example, can export their data into text
+files, where each record is terminated with a newline, and fields are
+separated by commas. If commas only separated the data, there wouldn’t
+be an issue. The problem comes when one of the fields contains an
+_embedded_ comma. In such cases, most programs embed the field in
+double quotes.(1) So, we might have data like this:
Robbins,Arnold,"1234 A Pretty Street, NE",MyTown,MyState,12345-6789,USA
@@ -5716,6 +5837,11 @@ with ‘FIELDWIDTHS’.
Finally, the ‘patsplit()’ function makes the same functionality
available for splitting regular strings (*note String Functions::).
+ NOTE: Given that ‘gawk’ now has built-in CSV parsing (*note Comma
+ Separated Fields::), the examples presented here are obsolete.
+ Nonetheless, it remains useful as an example of what ‘FPAT’-based
+ field parsing can do.
+
---------- Footnotes ----------
(1) The CSV format lacked a formal standard definition for many
@@ -5829,7 +5955,9 @@ field splitting is being used, ‘"FIELDWIDTHS"’ if fixed-width field
splitting is being used, or ‘"FPAT"’ if content-based field splitting is
being used:
- if (PROCINFO["FS"] == "FS")
+ if ("CSV" in PROCINFO)
+ CSV-BASED FIELD SPLITTING ...
+ else if (PROCINFO["FS"] == "FS")
REGULAR FIELD SPLITTING ...
else if (PROCINFO["FS"] == "FIELDWIDTHS")
FIXED-WIDTH FIELD SPLITTING ...
@@ -5839,9 +5967,9 @@ being used:
API INPUT PARSER FIELD SPLITTING ... (advanced feature)
This information is useful when writing a function that needs to
-temporarily change ‘FS’ or ‘FIELDWIDTHS’, read some records, and then
-restore the original settings (*note Passwd Functions:: for an example
-of such a function).
+temporarily change ‘FS’, ‘FIELDWIDTHS’, or ‘FPAT’, read some records,
+and then restore the original settings (*note Passwd Functions:: for an
+example of such a function).

File: gawk.info, Node: Multiple Line, Next: Getline, Prev: Testing field creation, Up: Reading Files
@@ -6436,7 +6564,7 @@ File: gawk.info, Node: Getline Summary, Prev: Getline Notes, Up: Getline
4.10.10 Summary of ‘getline’ Variants
-------------------------------------
-*note Table 4.1: table-getline-variants. summarizes the eight variants
+*note Table 4.2: table-getline-variants. summarizes the eight variants
of ‘getline’, listing which predefined variables are set by each one,
and whether the variant is standard or a ‘gawk’ extension. Note: for
each variant, ‘gawk’ sets the ‘RT’ predefined variable.
@@ -6457,7 +6585,7 @@ COMMAND ‘|& getline’ Sets ‘$0’, ‘NF’, and ‘RT’ ‘gawk’
COMMAND ‘|& getline’ Sets VAR and ‘RT’ ‘gawk’
VAR
-Table 4.1: ‘getline’ variants and what they set
+Table 4.2: ‘getline’ variants and what they set

File: gawk.info, Node: Read Timeout, Next: Retrying Input, Prev: Getline, Up: Reading Files
@@ -6723,6 +6851,7 @@ function.
‘gawk’ allows access to inherited file
descriptors.
* Close Files And Pipes:: Closing Input and Output Files and Pipes.
+* Noflush:: Speeding Up Pipe Output.
* Nonfatal:: Enabling Nonfatal Output.
* Output Summary:: Output summary.
* Output Exercises:: Exercises.
@@ -7655,7 +7784,7 @@ that ‘gawk’ provides:
behavior.

-File: gawk.info, Node: Close Files And Pipes, Next: Nonfatal, Prev: Special Files, Up: Printing
+File: gawk.info, Node: Close Files And Pipes, Next: Noflush, Prev: Special Files, Up: Printing
5.9 Closing Input and Output Redirections
=========================================
@@ -7847,9 +7976,46 @@ co-process was the full 16-bit exit value as defined by the ‘wait()’
system call.

-File: gawk.info, Node: Nonfatal, Next: Output Summary, Prev: Close Files And Pipes, Up: Printing
+File: gawk.info, Node: Noflush, Next: Nonfatal, Prev: Close Files And Pipes, Up: Printing
+
+5.10 Speeding Up Pipe Output
+============================
+
+This minor node describes a ‘gawk’-specific feature.
+
+ Normally, when you send data down a pipeline to a command with
+‘print’ or ‘printf’, ‘gawk’ “flushes” the output down the pipe. That
+is, output is not buffered, but written directly. This assures, that
+pipeline output intermixed with ‘gawk’’s output comes out in the
+expected order:
+
+ print "something" # goes to standard output
+ print "something else" | "some-command" # also to standard output
+ print "more stuff" # and this too
+
+ There can be a price to pay for this; flushing data down the pipeline
+uses more CPU time, and in certain environments this can become
+expensive.
+
+ You can tell ‘gawk’ not to flush buffered data in one of two ways:
+
+ • Set ‘PROCINFO["BUFFERPIPE"]’ to any value. When this is done,
+ ‘gawk’ will buffer data for all pipelines.
-5.10 Enabling Nonfatal Output
+ • Set ‘PROCINFO["COMMAND", "BUFFERPIPE"]’ to any value. In this
+ case, only COMMAND’s data will be fully buffered.
+
+ You _must_ create one or the other of these elements in ‘PROCINFO’
+before the first ‘print’ or ‘printf’ to the pipeline. Doing so after
+output has already been sent is too late.
+
+ Be aware that using this feature may change the output behavior of
+your programs, so exercise caution.
+
+
+File: gawk.info, Node: Nonfatal, Next: Output Summary, Prev: Noflush, Up: Printing
+
+5.11 Enabling Nonfatal Output
=============================
This minor node describes a ‘gawk’-specific feature.
@@ -7909,7 +8075,7 @@ is enabled for a given socket, ‘gawk’ only retries once, relying on

File: gawk.info, Node: Output Summary, Next: Output Exercises, Prev: Nonfatal, Up: Printing
-5.11 Summary
+5.12 Summary
============
• The ‘print’ statement prints comma-separated expressions. Each
@@ -7939,7 +8105,7 @@ File: gawk.info, Node: Output Summary, Next: Output Exercises, Prev: Nonfatal

File: gawk.info, Node: Output Exercises, Prev: Output Summary, Up: Printing
-5.12 Exercises
+5.13 Exercises
==============
1. Rewrite the program:
@@ -8091,7 +8257,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, \
@@ -8106,6 +8272,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
@@ -11541,6 +11709,13 @@ they are not special:
The following elements allow you to change ‘gawk’’s behavior:
+ ‘PROCINFO["BUFFERPIPE"]’
+ If this element exists, all output to pipelines becomes
+ buffered. *Note Noflush::.
+
+ ‘PROCINFO["COMMAND", "BUFFERPIPE"]’
+ Make output to COMMAND buffered. *Note Noflush::.
+
‘PROCINFO["NONFATAL"]’
If this element exists, then I/O errors for all redirections
become nonfatal. *Note Nonfatal::.
@@ -13472,6 +13647,13 @@ Options::):
The value returned by this call to ‘split()’ is three.
+ If ‘gawk’ is invoked with ‘--csv’, then a two-argument call to
+ ‘split()’ splits the string using the CSV parsing rules as
+ described in *note Comma Separated Fields::. With three and four
+ arguments, ‘split()’ works as just described. The four-argument
+ call makes no sense, since each element of SEPS would simply
+ consist of a string containing a comma.
+
As with input field-splitting, when the value of FIELDSEP is ‘" "’,
leading and trailing whitespace is ignored in values assigned to
the elements of ARRAY but not in SEPS, and the elements are
@@ -15378,9 +15560,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
⊣ <>
@@ -15956,6 +16138,7 @@ programming use.
* Readfile Function:: A function to read an entire file at once.
* Shell Quoting:: A function to quote strings for the shell.
* Isnumeric Function:: A function to test whether a value is numeric.
+* To CSV Function:: A function to convert output to CSV format.

File: gawk.info, Node: Strtonum Function, Next: Assert Function, Up: General Functions
@@ -16543,7 +16726,7 @@ three-character string ‘"\"'\""’:
}

-File: gawk.info, Node: Isnumeric Function, Prev: Shell Quoting, Up: General Functions
+File: gawk.info, Node: Isnumeric Function, Next: To CSV Function, Prev: Shell Quoting, Up: General Functions
10.2.10 Checking Whether A Value Is Numeric
-------------------------------------------
@@ -16580,6 +16763,69 @@ yield the original string. On the other hand, it uses the ‘typeof()’
function (*note Type Functions::), which is specific to ‘gawk’.

+File: gawk.info, Node: To CSV Function, Prev: Isnumeric Function, Up: General Functions
+
+10.2.11 Producing CSV Data
+--------------------------
+
+‘gawk’’s ‘--csv’ option causes ‘gawk’ to process CSV data (*note Comma
+Separated Fields::).
+
+ But what if you have regular data that you want to output in CSV
+format? This minor node provides functions for doing that.
+
+ The first function, ‘tocsv()’, takes an array of data fields as
+input. The array should be indexed starting from one. The optional
+second parameter is the separator to use. If none is supplied, the
+default is a comma.
+
+ The function takes care to quote fields that contain double quotes,
+newlines, or the separator character. It then builds up the final CSV
+record and returns it.
+
+ # tocsv.awk --- convert data to CSV format
+
+ function tocsv(fields, sep, i, j, nfields, result)
+ {
+ if (length(fields) == 0)
+ return ""
+
+ if (sep == "")
+ sep = ","
+ delete nfields
+ for (i = 1; i in fields; i++) {
+ nfields[i] = fields[i]
+ if (nfields[i] ~ /["\n]/ || index(nfields[i], sep) != 0) {
+ gsub(/"/, "\"\"", nfields[i]) # double up quotes
+ nfields[i] = "\"" nfields[i] "\"" # wrap in quotes
+ }
+ }
+
+ result = nfields[1]
+ j = length(nfields)
+ for (i = 2; i <= j; i++)
+ result = result sep nfields[i]
+
+ return result
+ }
+
+ The next function, ‘tocsv_rec()’ is a wrapper around ‘tocsv()’. Its
+intended use is for when you want to convert the current input record to
+CSV format. The function itself simply copies the fields into an array
+to pass to ‘tocsv()’ which does the work. It accepts an optional
+separator character as its first parameter, which it simply passes on to
+‘tocsv()’.
+
+ function tocsv_rec(sep, i, fields)
+ {
+ delete fields
+ for (i = 1; i <= NF; i++)
+ fields[i] = $i
+
+ return tocsv(fields, sep)
+ }
+
+
File: gawk.info, Node: Data File Management, Next: Getopt Function, Prev: General Functions, Up: Library Functions
10.3 Data file Management
@@ -30767,6 +31013,20 @@ unfortunately. It added the following features:
• ‘PROCINFO["pma"]’ exists if the PMA allocator is compiled in (*note
Auto-set::).
+ Version 5.3 added the following features:
+
+ • Comma separated value (CSV) field splitting (*note Comma Separated
+ Fields::).
+
+ • The ability to make ‘gawk’ buffer output to pipes (*note
+ Noflush::).
+
+ • 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
+ environments.
+

File: gawk.info, Node: Common Extensions, Next: Ranges and Locales, Prev: Feature History, Up: Language History
@@ -30781,10 +31041,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
@@ -31142,7 +31404,7 @@ There are two ways to get GNU software:
supported. If you have the ‘wget’ program, you can use a command
like the following:
- wget https://ftp.gnu.org/gnu/gawk/gawk-5.2.2.tar.gz
+ wget https://ftp.gnu.org/gnu/gawk/gawk-5.3.0.tar.gz
The GNU software archive is mirrored around the world. The
up-to-date list of mirror sites is available from the main FSF website
@@ -31164,25 +31426,25 @@ compression programs: ‘gzip’, ‘bzip2’, and ‘xz’. For simplicity, th
rest of these instructions assume you are using the one compressed with
the GNU Gzip program (‘gzip’).
- Once you have the distribution (e.g., ‘gawk-5.2.2.tar.gz’), use
+ Once you have the distribution (e.g., ‘gawk-5.3.0.tar.gz’), use
‘gzip’ to expand the file and then use ‘tar’ to extract it. You can use
the following pipeline to produce the ‘gawk’ distribution:
- gzip -d -c gawk-5.2.2.tar.gz | tar -xvpf -
+ gzip -d -c gawk-5.3.0.tar.gz | tar -xvpf -
On a system with GNU ‘tar’, you can let ‘tar’ do the decompression
for you:
- tar -xvpzf gawk-5.2.2.tar.gz
+ tar -xvpzf gawk-5.3.0.tar.gz
-Extracting the archive creates a directory named ‘gawk-5.2.2’ in the
+Extracting the archive creates a directory named ‘gawk-5.3.0’ in the
current directory.
The distribution file name is of the form ‘gawk-V.R.P.tar.gz’. The V
represents the major version of ‘gawk’, the R represents the current
release of version V, and the P represents a “patch level”, meaning that
minor bugs have been fixed in the release. The current patch level is
-2, but when retrieving distributions, you should get the version with
+0, but when retrieving distributions, you should get the version with
the highest version, release, and patch level. (Note, however, that
patch levels greater than or equal to 60 denote “beta” or nonproduction
software; you might not want to retrieve such a version unless you don’t
@@ -31439,7 +31701,7 @@ Unix-derived systems, GNU/Linux, BSD-based systems, and the Cygwin
environment for MS-Windows.
After you have extracted the ‘gawk’ distribution, ‘cd’ to
-‘gawk-5.2.2’. As with most GNU software, you configure ‘gawk’ for your
+‘gawk-5.3.0’. As with most GNU software, you configure ‘gawk’ for your
system by running the ‘configure’ program. This program is a Bourne
shell script that is generated automatically using GNU Autoconf. (The
Autoconf software is described fully starting with *note Autoconf:
@@ -31859,8 +32121,8 @@ environment provides an excellent simulation of GNU/Linux, using Bash,
GCC, GNU Make, and other GNU programs. Compilation and installation for
Cygwin is the same as for a Unix system:
- tar -xvpzf gawk-5.2.2.tar.gz
- cd gawk-5.2.2
+ tar -xvpzf gawk-5.3.0.tar.gz
+ cd gawk-5.3.0
./configure
make && make check
@@ -32749,9 +33011,9 @@ B.6 Summary
• The ‘gawk’ distribution is available from the GNU Project’s main
distribution site, ‘ftp.gnu.org’. The canonical build recipe is:
- wget https://ftp.gnu.org/gnu/gawk/gawk-5.2.2.tar.gz
- tar -xvpzf gawk-5.2.2.tar.gz
- cd gawk-5.2.2
+ wget https://ftp.gnu.org/gnu/gawk/gawk-5.3.0.tar.gz
+ tar -xvpzf gawk-5.3.0.tar.gz
+ cd gawk-5.3.0
./configure && make && make check
NOTE: Because of the ‘https://’ URL, you may have to supply
@@ -35768,7 +36030,7 @@ Index
* * (asterisk), *= operator <1>: Precedence. (line 94)
* * (asterisk), **= operator <1>: Precedence. (line 94)
* * (asterisk), * operator, null strings, matching: String Functions.
- (line 563)
+ (line 570)
* + (plus sign), regexp operator: Regexp Operator Details.
(line 107)
* + (plus sign), += operator: Assignment Ops. (line 81)
@@ -35780,7 +36042,7 @@ Index
* + (plus sign), += operator <1>: Precedence. (line 94)
* , (comma), in range patterns: Ranges. (line 6)
* - (hyphen), file names beginning with: Options. (line 63)
-* - (hyphen), -- end of options marker: Options. (line 354)
+* - (hyphen), -- end of options marker: Options. (line 360)
* - (hyphen), in bracket expressions: Bracket Expressions. (line 25)
* - (hyphen), -= operator: Assignment Ops. (line 129)
* - (hyphen), -- operator: Increment Ops. (line 48)
@@ -35789,9 +36051,10 @@ Index
* - (hyphen), - operator <1>: Precedence. (line 57)
* - (hyphen), -= operator <1>: Precedence. (line 94)
* --assign option: Options. (line 36)
-* --bignum option: Options. (line 242)
+* --bignum option: Options. (line 248)
* --characters-as-bytes option: Options. (line 72)
* --copyright option: Options. (line 92)
+* --csv option: Options. (line 203)
* --debug option: Options. (line 111)
* --disable-extensions configuration option: Additional Configuration Options.
(line 9)
@@ -35815,22 +36078,22 @@ Index
* --help option: Options. (line 175)
* --include option: Options. (line 180)
* --lint option: Command Line. (line 20)
-* --lint option <1>: Options. (line 215)
-* --lint-old option: Options. (line 344)
-* --load option: Options. (line 203)
-* --no-optimize option: Options. (line 329)
-* --non-decimal-data option: Options. (line 255)
+* --lint option <1>: Options. (line 221)
+* --lint-old option: Options. (line 350)
+* --load option: Options. (line 209)
+* --no-optimize option: Options. (line 335)
+* --non-decimal-data option: Options. (line 261)
* --non-decimal-data option <1>: Nondecimal Data. (line 6)
* --non-decimal-data option, strtonum() function and: Nondecimal Data.
(line 35)
-* --optimize option: Options. (line 280)
-* --posix option: Options. (line 302)
-* --posix option, --traditional option and: Options. (line 317)
-* --pretty-print option: Options. (line 269)
-* --profile option: Options. (line 290)
+* --optimize option: Options. (line 286)
+* --posix option: Options. (line 308)
+* --posix option, --traditional option and: Options. (line 323)
+* --pretty-print option: Options. (line 275)
+* --profile option: Options. (line 296)
* --profile option <1>: Profiling. (line 12)
-* --re-interval option: Options. (line 323)
-* --sandbox option: Options. (line 334)
+* --re-interval option: Options. (line 329)
+* --sandbox option: Options. (line 340)
* --sandbox option, input redirection with getline: Getline. (line 19)
* --sandbox option, output redirection with print, printf: Redirection.
(line 6)
@@ -35839,9 +36102,9 @@ Index
* --source option: Options. (line 120)
* --trace option: Options. (line 197)
* --traditional option: Options. (line 85)
-* --traditional option, --posix option and: Options. (line 317)
-* --use-lc-numeric option: Options. (line 264)
-* --version option: Options. (line 349)
+* --traditional option, --posix option and: Options. (line 323)
+* --use-lc-numeric option: Options. (line 270)
+* --version option: Options. (line 355)
* -b option: Options. (line 72)
* -c option: Options. (line 85)
* -C option: Options. (line 92)
@@ -35849,33 +36112,34 @@ Index
* -D option: Options. (line 111)
* -e option: Options. (line 120)
* -E option: Options. (line 146)
-* -e option <1>: Options. (line 390)
+* -e option <1>: Options. (line 396)
* -f option: Long. (line 12)
* -F option: Options. (line 21)
* -f option <1>: Options. (line 25)
-* -F option, -Ft sets FS to TAB: Options. (line 362)
-* -f option, multiple uses: Options. (line 367)
+* -F option, -Ft sets FS to TAB: Options. (line 368)
+* -f option, multiple uses: Options. (line 373)
* -F option, command-line: Command Line Field Separator.
(line 6)
* -g option: Options. (line 168)
* -h option: Options. (line 175)
* -i option: Options. (line 180)
* -I option: Options. (line 197)
-* -l option: Options. (line 203)
-* -l option <1>: Options. (line 215)
-* -L option: Options. (line 344)
-* -M option: Options. (line 242)
-* -n option: Options. (line 255)
-* -N option: Options. (line 264)
-* -o option: Options. (line 269)
-* -O option: Options. (line 280)
-* -p option: Options. (line 290)
-* -P option: Options. (line 302)
-* -r option: Options. (line 323)
-* -s option: Options. (line 329)
-* -S option: Options. (line 334)
+* -k option: Options. (line 203)
+* -l option: Options. (line 209)
+* -l option <1>: Options. (line 221)
+* -L option: Options. (line 350)
+* -M option: Options. (line 248)
+* -n option: Options. (line 261)
+* -N option: Options. (line 270)
+* -o option: Options. (line 275)
+* -O option: Options. (line 286)
+* -p option: Options. (line 296)
+* -P option: Options. (line 308)
+* -r option: Options. (line 329)
+* -s option: Options. (line 335)
+* -S option: Options. (line 340)
* -v option: Options. (line 36)
-* -V option: Options. (line 349)
+* -V option: Options. (line 355)
* -v option <1>: Assignment Options. (line 12)
* -W option: Options. (line 50)
* . (period), regexp operator: Regexp Operator Details.
@@ -35964,11 +36228,12 @@ Index
* \ (backslash), \v escape sequence: Escape Sequences. (line 53)
* \ (backslash), \NNN escape sequence: Escape Sequences. (line 56)
* \ (backslash), \x escape sequence: Escape Sequences. (line 61)
-* \ (backslash), \/ escape sequence: Escape Sequences. (line 76)
-* \ (backslash), \" escape sequence: Escape Sequences. (line 85)
-* \ (backslash), in escape sequences <1>: Escape Sequences. (line 103)
+* \ (backslash), \u escape sequence: Escape Sequences. (line 76)
+* \ (backslash), \/ escape sequence: Escape Sequences. (line 90)
+* \ (backslash), \" escape sequence: Escape Sequences. (line 99)
+* \ (backslash), in escape sequences <1>: Escape Sequences. (line 117)
* \ (backslash), in escape sequences, POSIX and: Escape Sequences.
- (line 108)
+ (line 122)
* \ (backslash), regexp operator: Regexp Operator Details.
(line 14)
* \ (backslash), in bracket expressions: Bracket Expressions. (line 25)
@@ -36057,13 +36322,13 @@ Index
* adding, features to gawk: Adding Code. (line 6)
* advanced features, fixed-width data: Constant Size. (line 6)
* advanced features, specifying field content: Splitting By Content.
- (line 14)
+ (line 17)
* advanced features, gawk: Advanced Features. (line 6)
* advanced features, nondecimal input data: Nondecimal Data. (line 6)
* advanced features, processes, communicating with: Two-way I/O.
(line 6)
* advanced features, network programming: TCP/IP Networking. (line 6)
-* Aho, Alfred: History. (line 17)
+* Aho, Alfred: History. (line 21)
* Aho, Alfred <1>: Contributors. (line 12)
* alarm clock example program: Alarm Program. (line 11)
* alarm.awk program: Alarm Program. (line 31)
@@ -36111,7 +36376,7 @@ Index
* arguments, command-line <1>: Auto-set. (line 15)
* arguments, command-line <2>: ARGC and ARGV. (line 6)
* arguments, processing: Getopt Function. (line 6)
-* ARGV array: Options. (line 334)
+* ARGV array: Options. (line 340)
* ARGV array, indexing into: Other Arguments. (line 21)
* arithmetic operators: Arithmetic Ops. (line 6)
* array manipulation in extensions: Array Manipulation. (line 6)
@@ -36209,7 +36474,7 @@ Index
* asterisk (*), *= operator <1>: Precedence. (line 94)
* asterisk (*), **= operator <1>: Precedence. (line 94)
* asterisk (*), * operator, null strings, matching: String Functions.
- (line 563)
+ (line 570)
* at-sign (@), @include directive: Include Files. (line 8)
* at-sign (@), @load directive: Loading Shared Libraries.
(line 8)
@@ -36227,7 +36492,7 @@ Index
* awk, POSIX and <1>: Preface. (line 21)
* awk, gawk and: Preface. (line 21)
* awk, uses for: Preface. (line 21)
-* awk, history of: History. (line 17)
+* awk, history of: History. (line 21)
* awk, new vs. old: Names. (line 6)
* awk, terms describing: This Manual. (line 6)
* awk, gawk and <1>: This Manual. (line 14)
@@ -36235,7 +36500,7 @@ Index
* awk, uses for <1>: Getting Started. (line 12)
* awk, uses for <2>: When. (line 6)
* awk, invoking: Command Line. (line 6)
-* awk, profiling, enabling: Options. (line 290)
+* awk, profiling, enabling: Options. (line 296)
* awk, implementations, limits: Getline Notes. (line 14)
* awk, implementation issues, pipes: Redirection. (line 129)
* awk, new vs. old, OFMT variable: Strings And Numbers. (line 56)
@@ -36287,7 +36552,7 @@ Index
(line 41)
* awkcc, awk to C translator: Other Versions. (line 167)
* AWKgo: Other Versions. (line 133)
-* AWKLIBPATH environment variable: Options. (line 203)
+* AWKLIBPATH environment variable: Options. (line 209)
* AWKLIBPATH environment variable <1>: AWKLIBPATH Variable. (line 6)
* AWKLIBPATH environment variable <2>: Loading Shared Libraries.
(line 8)
@@ -36337,11 +36602,12 @@ Index
* backslash (\), \v escape sequence: Escape Sequences. (line 53)
* backslash (\), \NNN escape sequence: Escape Sequences. (line 56)
* backslash (\), \x escape sequence: Escape Sequences. (line 61)
-* backslash (\), \/ escape sequence: Escape Sequences. (line 76)
-* backslash (\), \" escape sequence: Escape Sequences. (line 85)
-* backslash (\), in escape sequences <1>: Escape Sequences. (line 103)
+* backslash (\), \u escape sequence: Escape Sequences. (line 76)
+* backslash (\), \/ escape sequence: Escape Sequences. (line 90)
+* backslash (\), \" escape sequence: Escape Sequences. (line 99)
+* backslash (\), in escape sequences <1>: Escape Sequences. (line 117)
* backslash (\), in escape sequences, POSIX and: Escape Sequences.
- (line 108)
+ (line 122)
* backslash (\), regexp operator: Regexp Operator Details.
(line 14)
* backslash (\), in bracket expressions: Bracket Expressions. (line 25)
@@ -36374,7 +36640,7 @@ Index
* Beebe, Nelson H.F.: Acknowledgments. (line 60)
* Beebe, Nelson H.F. <1>: Numeric Functions. (line 32)
* Beebe, Nelson H.F. <2>: Other Versions. (line 82)
-* BEGIN pattern: Field Separators. (line 44)
+* BEGIN pattern: Field Separators. (line 45)
* BEGIN pattern, getline and: Getline Notes. (line 19)
* BEGIN pattern, headings, adding: Print Examples. (line 42)
* BEGIN pattern, OFS/ORS variables, assigning values to: Output Separators.
@@ -36472,7 +36738,7 @@ Index
* Brennan, Michael <5>: Other Versions. (line 6)
* Brennan, Michael <6>: Other Versions. (line 39)
* Brian Kernighan’s awk: When. (line 21)
-* Brian Kernighan’s awk <1>: Escape Sequences. (line 112)
+* Brian Kernighan’s awk <1>: Escape Sequences. (line 126)
* Brian Kernighan’s awk <2>: GNU Regexp Operators.
(line 84)
* Brian Kernighan’s awk <3>: gawk split records. (line 71)
@@ -36485,7 +36751,7 @@ Index
* Brian Kernighan’s awk <9>: Continue Statement. (line 44)
* Brian Kernighan’s awk <10>: Nextfile Statement. (line 47)
* Brian Kernighan’s awk <11>: Delete. (line 51)
-* Brian Kernighan’s awk <12>: String Functions. (line 510)
+* Brian Kernighan’s awk <12>: String Functions. (line 517)
* Brian Kernighan’s awk <13>: Gory Details. (line 19)
* Brian Kernighan’s awk <14>: I/O Functions. (line 43)
* Brian Kernighan’s awk, extensions: BTL. (line 6)
@@ -36552,7 +36818,7 @@ Index
* case sensitivity, string comparisons and: User-modified. (line 79)
* case sensitivity, regexps and <1>: User-modified. (line 79)
* case sensitivity, array indices and: Array Intro. (line 100)
-* case sensitivity, converting case: String Functions. (line 540)
+* case sensitivity, converting case: String Functions. (line 547)
* case sensitivity, example programs: Library Functions. (line 50)
* CGI, awk scripts for: Options. (line 146)
* character sets (machine character encodings): Ordinal Functions.
@@ -36596,10 +36862,16 @@ 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, -k option: Options. (line 203)
+* comma separated values (CSV) data, --csv option: Options. (line 203)
+* comma separated values (CSV) data, records and fields: Comma Separated Fields.
+ (line 6)
* Comma separated values (CSV) data, parsing with FPAT: Splitting By Content.
- (line 20)
+ (line 23)
* Comma separated values (CSV) data, parsing with FPAT library: More CSV.
(line 52)
+* comma separated values (CSV) data, generating CSV data: To CSV Function.
+ (line 6)
* command completion, in debugger: Readline Support. (line 6)
* command line, formats: Running gawk. (line 12)
* command line, option -f: Long. (line 12)
@@ -36625,6 +36897,7 @@ Index
* commenting: Comments. (line 6)
* commenting, backslash continuation and: Statements/Lines. (line 77)
* common extensions, \x escape sequence: Escape Sequences. (line 61)
+* common extensions, \u escape sequence: Escape Sequences. (line 76)
* common extensions, RS as a regexp: gawk split records. (line 6)
* common extensions, single character fields: Single Character Fields.
(line 6)
@@ -36693,9 +36966,9 @@ Index
* converting, numbers to strings: Strings And Numbers. (line 6)
* converting, integer array subscripts to strings: Numeric Array Subscripts.
(line 31)
-* converting, string to numbers <1>: String Functions. (line 408)
-* converting, string to lower case: String Functions. (line 541)
-* converting, string to upper case: String Functions. (line 547)
+* converting, string to numbers <1>: String Functions. (line 415)
+* converting, string to lower case: String Functions. (line 548)
+* converting, string to upper case: String Functions. (line 554)
* converting, dates to timestamps: Time Functions. (line 77)
* converting, string to numbers <2>: Bitwise Functions. (line 110)
* converting, numbers to strings <1>: Bitwise Functions. (line 110)
@@ -36713,12 +36986,18 @@ Index
* cosine: Numeric Functions. (line 15)
* counting words, lines, characters, and bytes: Wc Program. (line 6)
* csh utility: Statements/Lines. (line 45)
-* csh utility, POSIXLY_CORRECT environment variable: Options. (line 411)
+* csh utility, POSIXLY_CORRECT environment variable: Options. (line 417)
* csh utility, |& operator, comparison with: Two-way I/O. (line 27)
+* CSV (comma separated values) data, -k option: Options. (line 203)
+* CSV (comma separated values) data, --csv option: Options. (line 203)
+* CSV (comma separated values) data, records and fields: Comma Separated Fields.
+ (line 6)
* CSV (comma separated values) data, parsing with FPAT: Splitting By Content.
- (line 20)
+ (line 23)
* CSV (comma separated values) data, parsing with CSVMODE library: More CSV.
(line 52)
+* CSV (comma separated values) data, generating CSV data: To CSV Function.
+ (line 6)
* CSVMODE library for gawk: More CSV. (line 52)
* ctime() user-defined function: Function Example. (line 74)
* Curreli, Marco: Contributors. (line 147)
@@ -36742,7 +37021,7 @@ Index
* dark corner, empty programs: Command Line. (line 20)
* dark corner, escape sequences: Other Arguments. (line 46)
* dark corner, escape sequences, for metacharacters: Escape Sequences.
- (line 143)
+ (line 157)
* dark corner, input files: awk split records. (line 104)
* dark corner, strings, storing: gawk split records. (line 94)
* dark corner, NF variable, decrementing: Changing Fields. (line 107)
@@ -36778,13 +37057,13 @@ Index
* dark corner, exit statement: Exit Statement. (line 30)
* dark corner, value of ARGV[0]: Auto-set. (line 39)
* dark corner, FILENAME variable <1>: Auto-set. (line 108)
-* dark corner, FNR/NR variables: Auto-set. (line 409)
+* dark corner, FNR/NR variables: Auto-set. (line 416)
* dark corner, array subscripts: Uninitialized Subscripts.
(line 43)
* dark corner, regexp as second argument to index(): String Functions.
(line 178)
* dark corner, length() function: String Functions. (line 200)
-* dark corner, split() function: String Functions. (line 379)
+* dark corner, split() function: String Functions. (line 386)
* dark corner, parameter name restrictions: Definition Syntax.
(line 44)
* dark corner <1>: Glossary. (line 266)
@@ -36944,7 +37223,7 @@ Index
* debugging, example session: Sample Debugging Session.
(line 6)
* debugging gawk, bug reports: Bugs. (line 9)
-* decimal point character, locale specific: Options. (line 314)
+* decimal point character, locale specific: Options. (line 320)
* decrement operators: Increment Ops. (line 35)
* default keyword: Switch Statement. (line 6)
* Deifik, Scott: Acknowledgments. (line 60)
@@ -37025,8 +37304,8 @@ Index
* differences in awk and gawk, ERRNO variable: Auto-set. (line 87)
* differences in awk and gawk, FUNCTAB variable: Auto-set. (line 134)
* differences in awk and gawk, PROCINFO array: Auto-set. (line 148)
-* differences in awk and gawk, RS/RT variables <3>: Auto-set. (line 348)
-* differences in awk and gawk, SYMTAB variable: Auto-set. (line 352)
+* differences in awk and gawk, RS/RT variables <3>: Auto-set. (line 355)
+* differences in awk and gawk, SYMTAB variable: Auto-set. (line 359)
* differences in awk and gawk, ARGC/ARGV variables: ARGC and ARGV.
(line 89)
* differences in awk and gawk, array elements, deleting: Delete.
@@ -37038,7 +37317,7 @@ Index
* differences in awk and gawk, match() function: String Functions.
(line 276)
* differences in awk and gawk, split() function: String Functions.
- (line 364)
+ (line 371)
* differences in awk and gawk, indirect function calls: Indirect Calls.
(line 6)
* differences in awk and gawk, BINMODE variable <1>: PC Using.
@@ -37141,8 +37420,8 @@ Index
* endpwent() user-defined function: Passwd Functions. (line 210)
* English, Steve: Advanced Features. (line 6)
* ENVIRON array: Auto-set. (line 59)
-* environment variables, AWKLIBPATH: Options. (line 203)
-* environment variables, POSIXLY_CORRECT: Options. (line 396)
+* environment variables, AWKLIBPATH: Options. (line 209)
+* environment variables, POSIXLY_CORRECT: Options. (line 402)
* environment variables, used by gawk: Environment Variables.
(line 6)
* environment variables, AWKPATH: AWKPATH Variable. (line 6)
@@ -37306,6 +37585,7 @@ Index
* extensions, loadable, loading, @load directive: Loading Shared Libraries.
(line 8)
* extensions, common, \x escape sequence: Escape Sequences. (line 61)
+* extensions, common, \u escape sequence: Escape Sequences. (line 76)
* extensions, common, RS as a regexp: gawk split records. (line 6)
* extensions, common, single character fields: Single Character Fields.
(line 6)
@@ -37345,15 +37625,15 @@ Index
* features, deprecated: Obsolete. (line 6)
* features, undocumented: Undocumented. (line 6)
* features, adding to gawk: Adding Code. (line 6)
-* Fenlason, Jay: History. (line 30)
+* Fenlason, Jay: History. (line 34)
* Fenlason, Jay <1>: Contributors. (line 19)
* fflush: I/O Functions. (line 28)
* field numbers: Nonconstant Fields. (line 6)
* field operator $: Fields. (line 19)
* field operators, dollar sign as: Fields. (line 19)
-* field separator: Field Separators. (line 15)
-* field separator, choice of: Field Separators. (line 50)
-* field separator, regular expression as: Field Separators. (line 50)
+* field separator: Field Separators. (line 16)
+* field separator, choice of: Field Separators. (line 51)
+* field separator, regular expression as: Field Separators. (line 51)
* field separator, whitespace as: Default Field Splitting.
(line 6)
* field separator, FS variable and: Default Field Splitting.
@@ -37378,8 +37658,8 @@ Index
* fields, numbers: Nonconstant Fields. (line 6)
* fields, changing contents of: Changing Fields. (line 6)
* fields, adding: Changing Fields. (line 53)
-* fields, separating: Field Separators. (line 15)
-* fields, separating <1>: Field Separators. (line 15)
+* fields, separating: Field Separators. (line 16)
+* fields, separating <1>: Field Separators. (line 16)
* fields, single-character: Single Character Fields.
(line 6)
* fields, printing: Print Examples. (line 20)
@@ -37469,7 +37749,7 @@ Index
(line 12)
* FNR variable: Records. (line 6)
* FNR variable <1>: Auto-set. (line 118)
-* FNR variable, changing: Auto-set. (line 409)
+* FNR variable, changing: Auto-set. (line 416)
* for statement: For Statement. (line 6)
* for statement, looping over arrays: Scanning an Array. (line 20)
* fork() extension function: Extension Sample Fork.
@@ -37483,7 +37763,7 @@ Index
* format time string: Time Functions. (line 50)
* formats, numeric output: OFMT. (line 6)
* formatting, output: Printf. (line 6)
-* formatting, strings: String Functions. (line 401)
+* formatting, strings: String Functions. (line 408)
* forward slash (/), to enclose regular expressions: Regexp. (line 10)
* forward slash (/), /= operator: Assignment Ops. (line 129)
* forward slash (/), /= operator, vs. /=.../ regexp constant: Assignment Ops.
@@ -37492,7 +37772,7 @@ Index
* forward slash (/), /= operator <1>: Precedence. (line 94)
* forward slash (/), patterns and: Expression Patterns. (line 24)
* FPAT variable: Splitting By Content.
- (line 30)
+ (line 33)
* FPAT variable <1>: User-modified. (line 46)
* frame debugger command: Execution Stack. (line 27)
* frawk: Other Versions. (line 117)
@@ -37504,9 +37784,9 @@ Index
* Free Software Foundation (FSF) <3>: Glossary. (line 403)
* FreeBSD: Glossary. (line 747)
* FS variable, --field-separator option and: Options. (line 21)
-* FS variable, TAB character as: Options. (line 311)
-* FS variable: Field Separators. (line 15)
-* FS variable, changing value of: Field Separators. (line 34)
+* FS variable, TAB character as: Options. (line 317)
+* FS variable: Field Separators. (line 16)
+* FS variable, changing value of: Field Separators. (line 35)
* FS variable, containing ^: Regexp Field Splitting.
(line 58)
* FS variable, null string as: Single Character Fields.
@@ -37579,12 +37859,12 @@ Index
* gawk, uses for: Preface. (line 34)
* gawk, awk and <1>: This Manual. (line 14)
* gawk, newlines in: Statements/Lines. (line 12)
-* gawk, extensions, disabling: Options. (line 302)
-* gawk, version of, printing information about: Options. (line 349)
+* gawk, extensions, disabling: Options. (line 308)
+* gawk, version of, printing information about: Options. (line 355)
* gawk, ARGIND variable in: Other Arguments. (line 21)
* gawk, PROCINFO array in: Other Arguments. (line 21)
-* gawk, escape sequences: Escape Sequences. (line 120)
-* gawk, escape sequences <1>: Escape Sequences. (line 120)
+* gawk, escape sequences: Escape Sequences. (line 134)
+* gawk, escape sequences <1>: Escape Sequences. (line 134)
* gawk, regular expressions, precedence: Regexp Operator Details.
(line 142)
* gawk, interval expressions and: Interval Expressions.
@@ -37603,7 +37883,7 @@ Index
* gawk, RT variable in <1>: gawk split records. (line 66)
* gawk, FIELDWIDTHS variable in: Fixed width data. (line 17)
* gawk, FPAT variable in: Splitting By Content.
- (line 30)
+ (line 33)
* gawk, splitting fields and: Testing field creation.
(line 6)
* gawk, RT variable in <2>: Multiple Line. (line 138)
@@ -37633,8 +37913,8 @@ Index
* gawk, FUNCTAB array in: Auto-set. (line 134)
* gawk, PROCINFO array in <1>: Auto-set. (line 148)
* gawk, version of: Auto-set. (line 262)
-* gawk, RT variable in <3>: Auto-set. (line 348)
-* gawk, SYMTAB array in: Auto-set. (line 352)
+* gawk, RT variable in <3>: Auto-set. (line 355)
+* gawk, SYMTAB array in: Auto-set. (line 359)
* gawk, IGNORECASE variable in <2>: Array Intro. (line 100)
* gawk, function arguments and: Calling Built-in. (line 16)
* gawk, IGNORECASE variable in <3>: String Functions. (line 57)
@@ -37788,7 +38068,7 @@ Index
* gsub: Standard Regexp Constants.
(line 43)
* gsub <1>: String Functions. (line 153)
-* gsub() function, arguments of: String Functions. (line 480)
+* gsub() function, arguments of: String Functions. (line 487)
* gsub() function, escape processing: Gory Details. (line 6)
* Guerrero, Juan Manuel: Acknowledgments. (line 60)
* Guerrero, Juan Manuel <1>: Contributors. (line 150)
@@ -37803,13 +38083,13 @@ Index
* help debugger command: Miscellaneous Debugger Commands.
(line 67)
* hexadecimal numbers: Nondecimal-numbers. (line 6)
-* hexadecimal values, enabling interpretation of: Options. (line 255)
+* hexadecimal values, enabling interpretation of: Options. (line 261)
* history expansion, in debugger: Readline Support. (line 6)
* histsort.awk program: History Sorting. (line 25)
* Hughes, Phil: Acknowledgments. (line 43)
* HUP signal, for dynamic profiling: Profiling. (line 217)
* hyphen (-), file names beginning with: Options. (line 63)
-* hyphen (-), -- end of options marker: Options. (line 354)
+* hyphen (-), -- end of options marker: Options. (line 360)
* hyphen (-), in bracket expressions: Bracket Expressions. (line 25)
* hyphen (-), -= operator: Assignment Ops. (line 129)
* hyphen (-), -- operator: Increment Ops. (line 48)
@@ -37955,13 +38235,15 @@ Index
* Kelly, Terence <1>: Persistent Memory. (line 138)
* Kelly, Terence <2>: Feature History. (line 510)
* Kenobi, Obi-Wan: Undocumented. (line 6)
-* Kernighan, Brian: History. (line 17)
+* Kernighan, Brian: History. (line 21)
* Kernighan, Brian, quotes: Conventions. (line 38)
* Kernighan, Brian <1>: Acknowledgments. (line 79)
-* Kernighan, Brian, quotes <1>: Getline/Pipe. (line 6)
-* Kernighan, Brian, quotes <2>: Concatenation. (line 6)
-* Kernighan, Brian, quotes <3>: Library Functions. (line 12)
-* Kernighan, Brian, quotes <4>: Programs Exercises. (line 26)
+* Kernighan, Brian, quotes <1>: Comma Separated Fields.
+ (line 46)
+* Kernighan, Brian, quotes <2>: Getline/Pipe. (line 6)
+* Kernighan, Brian, quotes <3>: Concatenation. (line 6)
+* Kernighan, Brian, quotes <4>: Library Functions. (line 12)
+* Kernighan, Brian, quotes <5>: Programs Exercises. (line 26)
* Kernighan, Brian <2>: BTL. (line 6)
* Kernighan, Brian <3>: Contributors. (line 12)
* Kernighan, Brian <4>: Other Versions. (line 13)
@@ -38039,9 +38321,9 @@ Index
* lines, counting: Wc Program. (line 6)
* lines, duplicate, removing: History Sorting. (line 6)
* lint checking, empty programs: Command Line. (line 16)
-* lint checking, issuing warnings: Options. (line 215)
+* lint checking, issuing warnings: Options. (line 221)
* lint checking, POSIXLY_CORRECT environment variable: Options.
- (line 396)
+ (line 402)
* lint checking: User-modified. (line 90)
* lint checking, array subscripts: Uninitialized Subscripts.
(line 43)
@@ -38054,13 +38336,13 @@ Index
* list function definitions, in debugger: Debugger Info. (line 30)
* @load directive: Loading Shared Libraries.
(line 8)
-* loading extensions: Options. (line 203)
+* loading extensions: Options. (line 209)
* loading extensions, @load directive: Loading Shared Libraries.
(line 8)
* local variables, in a function: Variable Scope. (line 6)
* local variables, show in debugger: Debugger Info. (line 34)
* locale categories: Explaining gettext. (line 81)
-* locale decimal point character: Options. (line 314)
+* locale decimal point character: Options. (line 320)
* locale, definition of: Locales. (line 6)
* log: Numeric Functions. (line 28)
* log files, timestamps in: Time Functions. (line 6)
@@ -38099,8 +38381,8 @@ Index
* matching, leftmost longest: Multiple Line. (line 26)
* matching, expressions: Typing and Comparison.
(line 9)
-* matching, null strings: String Functions. (line 563)
-* mawk utility: Escape Sequences. (line 120)
+* matching, null strings: String Functions. (line 570)
+* mawk utility: Escape Sequences. (line 134)
* mawk utility <1>: Getline/Pipe. (line 62)
* mawk utility <2>: Concatenation. (line 36)
* mawk utility <3>: Nextfile Statement. (line 47)
@@ -38118,7 +38400,7 @@ Index
* message object files, converting from portable object files: I18N Example.
(line 80)
* messages from extensions: Printing Messages. (line 6)
-* metacharacters, escape sequences for: Escape Sequences. (line 139)
+* metacharacters, escape sequences for: Escape Sequences. (line 153)
* metacharacters, in regular expressions: Regexp Operators. (line 6)
* minimum precision required by MPFR library: Auto-set. (line 279)
* Minshall, Greg: Getopt Function. (line 105)
@@ -38179,7 +38461,7 @@ Index
* networks, support for: Special Network. (line 6)
* networks, programming: TCP/IP Networking. (line 6)
* newlines: Statements/Lines. (line 6)
-* newlines <1>: Options. (line 308)
+* newlines <1>: Options. (line 314)
* newlines, in dynamic regexps: Computed Regexps. (line 60)
* newlines, in regexp constants: Computed Regexps. (line 70)
* newlines, as record separators: awk split records. (line 12)
@@ -38217,7 +38499,7 @@ Index
* not Boolean-logic operator: Boolean Ops. (line 6)
* NR variable: Records. (line 6)
* NR variable <1>: Auto-set. (line 143)
-* NR variable, changing: Auto-set. (line 409)
+* NR variable, changing: Auto-set. (line 416)
* null strings, in gawk arguments, quoting and: Quoting. (line 82)
* null strings, in gawk arguments, quoting and <1>: Other Arguments.
(line 73)
@@ -38230,7 +38512,7 @@ Index
* null strings, as array subscripts: Uninitialized Subscripts.
(line 43)
* null strings, deleting array elements and: Delete. (line 27)
-* null strings, matching: String Functions. (line 563)
+* null strings, matching: String Functions. (line 570)
* null strings <3>: Basic Data Typing. (line 26)
* number of array elements: String Functions. (line 214)
* number sign (#), #! (executable scripts): Executable Scripts.
@@ -38256,7 +38538,7 @@ Index
* o debugger command (alias for option): Debugger Info. (line 57)
* obsolete features: Obsolete. (line 6)
* octal numbers: Nondecimal-numbers. (line 6)
-* octal values, enabling interpretation of: Options. (line 255)
+* octal values, enabling interpretation of: Options. (line 261)
* OFMT variable: OFMT. (line 15)
* OFMT variable, POSIX awk and: OFMT. (line 27)
* OFMT variable <1>: Strings And Numbers. (line 56)
@@ -38397,10 +38679,10 @@ Index
* portability, #! (executable scripts): Executable Scripts. (line 29)
* portability, ARGV variable: Executable Scripts. (line 55)
* portability, backslash continuation and: Statements/Lines. (line 30)
-* portability, POSIXLY_CORRECT environment variable: Options. (line 416)
-* portability: Escape Sequences. (line 103)
+* portability, POSIXLY_CORRECT environment variable: Options. (line 422)
+* portability: Escape Sequences. (line 117)
* portability, backslash in escape sequences: Escape Sequences.
- (line 108)
+ (line 122)
* portability, data files as single record: gawk split records.
(line 77)
* portability, NF variable, decrementing: Changing Fields. (line 115)
@@ -38413,7 +38695,7 @@ Index
* portability, operators, not in POSIX awk: Precedence. (line 97)
* portability, deleting array elements: Delete. (line 56)
* portability, length() function: String Functions. (line 193)
-* portability, substr() function: String Functions. (line 530)
+* portability, substr() function: String Functions. (line 537)
* portability, functions, defining: Definition Syntax. (line 114)
* portability, next statement in user-defined functions: Function Caveats.
(line 26)
@@ -38439,7 +38721,7 @@ Index
* POSIX awk: This Manual. (line 14)
* POSIX awk, GNU long options and: Options. (line 15)
* POSIX awk, backslashes in string constants: Escape Sequences.
- (line 108)
+ (line 122)
* POSIX awk, period (.), using: Regexp Operator Details.
(line 47)
* POSIX awk, regular expressions and: Regexp Operator Details.
@@ -38473,8 +38755,8 @@ Index
* POSIX awk, date utility and: Time Functions. (line 254)
* POSIX awk, function keyword in: Definition Syntax. (line 99)
* POSIX awk, changes in awk versions: POSIX. (line 6)
-* POSIX mode: Options. (line 302)
-* POSIX mode <1>: Options. (line 396)
+* POSIX mode: Options. (line 308)
+* POSIX mode <1>: Options. (line 402)
* POSIX mode <2>: Regexp Operator Details.
(line 47)
* POSIX mode <3>: Input Summary. (line 69)
@@ -38487,13 +38769,13 @@ Index
(line 12)
* POSIX mode <9>: POSIX String Comparison.
(line 34)
-* POSIX mode <10>: String Functions. (line 397)
+* POSIX mode <10>: String Functions. (line 404)
* POSIX mode <11>: Controlling Array Traversal.
(line 226)
* POSIX mode <12>: POSIX Floating Point Problems.
(line 83)
* POSIX mode <13>: Feature History. (line 315)
-* POSIXLY_CORRECT environment variable: Options. (line 396)
+* POSIXLY_CORRECT environment variable: Options. (line 402)
* POSIXLY_CORRECT environment variable <1>: Other Environment Variables.
(line 33)
* POSIXLY_CORRECT environment variable <2>: Invoking Summary. (line 49)
@@ -38510,7 +38792,7 @@ Index
* predefined variables, conveying information: Auto-set. (line 6)
* pretty printer, interaction with namespaces: Namespace And Features.
(line 9)
-* pretty printing: Options. (line 267)
+* pretty printing: Options. (line 273)
* pretty printing <1>: Profiling. (line 228)
* pretty printing, profiling, difference with: Profiling. (line 235)
* print debugger command: Viewing And Changing Data.
@@ -38685,7 +38967,7 @@ Index
(line 149)
* register loadable extension: Registration Functions.
(line 6)
-* regular expressions, interval expressions and: Options. (line 323)
+* regular expressions, interval expressions and: Options. (line 329)
* regular expressions: Regexp. (line 6)
* regular expressions, as patterns: Regexp Usage. (line 6)
* regular expressions, operators: Regexp Usage. (line 19)
@@ -38711,13 +38993,13 @@ Index
* regular expressions, case sensitivity: Case-sensitivity. (line 6)
* regular expressions, as record separators: awk split records.
(line 118)
-* regular expressions, as field separators: Field Separators. (line 50)
+* regular expressions, as field separators: Field Separators. (line 51)
* regular expressions, as field separators <1>: Regexp Field Splitting.
(line 6)
* regular expressions, as patterns <1>: Regexp Patterns. (line 6)
* regular expressions, case sensitivity <1>: User-modified. (line 79)
* regular expressions, searching for: Egrep Program. (line 6)
-* replace in string: String Functions. (line 426)
+* replace in string: String Functions. (line 433)
* retrying input: Retrying Input. (line 6)
* return debugger command: Debugger Execution Control.
(line 54)
@@ -38740,7 +39022,7 @@ Index
* right angle bracket (>), >> operator (I/O) <1>: Precedence. (line 64)
* right shift, bitwise: Bitwise Functions. (line 33)
* Ritchie, Dennis: Basic Data Typing. (line 54)
-* RLENGTH variable: Auto-set. (line 335)
+* RLENGTH variable: Auto-set. (line 342)
* RLENGTH variable, match() function and: String Functions. (line 241)
* Robbins, Miriam: Acknowledgments. (line 94)
* Robbins, Jean: Acknowledgments. (line 94)
@@ -38770,13 +39052,13 @@ Index
* RS variable, multiline records and: Multiple Line. (line 17)
* RS variable <1>: User-modified. (line 135)
* rshift: Bitwise Functions. (line 55)
-* RSTART variable: Auto-set. (line 341)
+* RSTART variable: Auto-set. (line 348)
* RSTART variable, match() function and: String Functions. (line 241)
* RT variable: awk split records. (line 118)
* RT variable <1>: gawk split records. (line 66)
* RT variable <2>: Multiple Line. (line 138)
-* RT variable <3>: Auto-set. (line 348)
-* Rubin, Paul: History. (line 30)
+* RT variable <3>: Auto-set. (line 355)
+* Rubin, Paul: History. (line 34)
* Rubin, Paul <1>: Contributors. (line 16)
* rule, definition of: Getting Started. (line 21)
* run debugger command: Debugger Execution Control.
@@ -38786,7 +39068,7 @@ Index
(line 68)
* sample debugging session: Sample Debugging Session.
(line 6)
-* sandbox mode: Options. (line 334)
+* sandbox mode: Options. (line 340)
* Saturday Night Live: Dynamic Typing. (line 6)
* save debugger options: Debugger Info. (line 85)
* scalar or array: Type Functions. (line 11)
@@ -38794,7 +39076,7 @@ Index
* scanning arrays: Scanning an Array. (line 6)
* scanning multidimensional arrays: Multiscanning. (line 11)
* Schorr, Andrew: Acknowledgments. (line 60)
-* Schorr, Andrew <1>: Auto-set. (line 379)
+* Schorr, Andrew <1>: Auto-set. (line 386)
* Schorr, Andrew <2>: Contributors. (line 136)
* Schreiber, Bert: Acknowledgments. (line 38)
* Schreiber, Rita: Acknowledgments. (line 38)
@@ -38882,8 +39164,8 @@ Index
* side effects, array indexing: Reference to Elements.
(line 43)
* side effects, match() function: String Functions. (line 241)
-* side effects, sub() function: String Functions. (line 480)
-* side effects, gsub() function: String Functions. (line 480)
+* side effects, sub() function: String Functions. (line 487)
+* side effects, gsub() function: String Functions. (line 487)
* side effects, asort() function: Array Sorting Functions.
(line 24)
* side effects, asorti() function: Array Sorting Functions.
@@ -38893,9 +39175,9 @@ Index
* sidebar, Quoting Shell Variables On The awk Command Line: Other Arguments.
(line 71)
* sidebar, Backslash Before Regular Characters: Escape Sequences.
- (line 106)
+ (line 120)
* sidebar, Escape Sequences for Metacharacters: Escape Sequences.
- (line 137)
+ (line 151)
* sidebar, What About The Empty Regexp?: Regexp Operator Details.
(line 147)
* sidebar, Using \n in Bracket Expressions of Dynamic Regexps: Computed Regexps.
@@ -38904,10 +39186,12 @@ 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 46)
* sidebar, Changing FS Does Not Affect the Fields: Full Line Fields.
(line 14)
* sidebar, FS and IGNORECASE: Field Splitting Summary.
- (line 37)
+ (line 45)
* sidebar, Piping into sh: Redirection. (line 134)
* sidebar, A Constant’s Base Does Not Affect Its Value: Nondecimal-numbers.
(line 63)
@@ -38916,8 +39200,8 @@ Index
* sidebar, Syntactic Ambiguities Between /= and Regular Expressions: Assignment Ops.
(line 148)
* sidebar, Operator Evaluation Order: Increment Ops. (line 58)
-* sidebar, Changing NR and FNR: Auto-set. (line 407)
-* sidebar, Matching the Null String: String Functions. (line 561)
+* sidebar, Changing NR and FNR: Auto-set. (line 414)
+* sidebar, Matching the Null String: String Functions. (line 568)
* sidebar, Interactive Versus Noninteractive Buffering: I/O Functions.
(line 73)
* sidebar, Controlling Output Buffering with system(): I/O Functions.
@@ -38996,7 +39280,7 @@ Index
* split() function, array elements, deleting: Delete. (line 61)
* split.awk program: Split Program. (line 51)
* sprintf: OFMT. (line 15)
-* sprintf <1>: String Functions. (line 401)
+* sprintf <1>: String Functions. (line 408)
* sprintf() function, print/printf statements and: Round Function.
(line 6)
* sqrt: Numeric Functions. (line 77)
@@ -39048,22 +39332,22 @@ Index
* strings, converting, numbers to: User-modified. (line 30)
* strings, converting, numbers to <1>: User-modified. (line 107)
* strings, splitting, example: String Functions. (line 350)
-* strings, converting letter case: String Functions. (line 540)
+* strings, converting letter case: String Functions. (line 547)
* strings, converting <1>: Bitwise Functions. (line 110)
* strings, merging arrays into: Join Function. (line 6)
* strings, for localization: Programmer i18n. (line 13)
* strings, extracting: String Extraction. (line 6)
* strptime() extension function: Extension Sample Time.
(line 31)
-* strtonum: String Functions. (line 408)
+* strtonum: String Functions. (line 415)
* strtonum() function (gawk), --non-decimal-data option and: Nondecimal Data.
(line 35)
* STR_CHAIN_MAX environment variable: Other Environment Variables.
(line 91)
* sub: Standard Regexp Constants.
(line 43)
-* sub <1>: String Functions. (line 426)
-* sub() function, arguments of: String Functions. (line 480)
+* sub <1>: String Functions. (line 433)
+* sub() function, arguments of: String Functions. (line 487)
* sub() function, escape processing: Gory Details. (line 6)
* subscript separators: User-modified. (line 148)
* subscripts in arrays, numbers as: Numeric Array Subscripts.
@@ -39077,12 +39361,12 @@ Index
* SUBSEP variable, multidimensional arrays and: Multidimensional.
(line 16)
* substitute in string: String Functions. (line 98)
-* substr: String Functions. (line 499)
-* substring: String Functions. (line 499)
+* substr: String Functions. (line 506)
+* substring: String Functions. (line 506)
* Sumner, Andrew: Other Versions. (line 64)
* supplementary groups of gawk process: Auto-set. (line 292)
* switch statement: Switch Statement. (line 6)
-* SYMTAB array: Auto-set. (line 352)
+* SYMTAB array: Auto-set. (line 359)
* syntactic ambiguity: /= operator vs. /=.../ regexp constant: Assignment Ops.
(line 150)
* system: I/O Functions. (line 105)
@@ -39141,8 +39425,10 @@ Index
* timestamps, converting dates to: Time Functions. (line 77)
* timestamps, formatted: Getlocaltime Function.
(line 6)
-* tolower: String Functions. (line 541)
-* toupper: String Functions. (line 547)
+* tocsv() user-defined function: To CSV Function. (line 21)
+* tocsv_rec() user-defined function: To CSV Function. (line 54)
+* tolower: String Functions. (line 548)
+* toupper: String Functions. (line 554)
* tr utility: Translate Program. (line 6)
* trace debugger command: Miscellaneous Debugger Commands.
(line 108)
@@ -39153,12 +39439,12 @@ Index
* treating files, as single records: gawk split records. (line 104)
* troubleshooting, typographical errors, global variables: Options.
(line 102)
-* troubleshooting, --non-decimal-data option: Options. (line 255)
+* troubleshooting, --non-decimal-data option: Options. (line 261)
* troubleshooting, backslash before nonspecial character: Escape Sequences.
- (line 108)
+ (line 122)
* troubleshooting, regexp constants vs. string constants: Computed Regexps.
(line 40)
-* troubleshooting, awk uses FS not IFS: Field Separators. (line 29)
+* troubleshooting, awk uses FS not IFS: Field Separators. (line 30)
* troubleshooting, fatal errors, field widths, specifying: Fixed width data.
(line 17)
* troubleshooting, print statement, omitting commas: Print Examples.
@@ -39175,8 +39461,8 @@ Index
* troubleshooting, gawk, fatal errors, function arguments: Calling Built-in.
(line 16)
* troubleshooting, match() function: String Functions. (line 305)
-* troubleshooting, gsub()/sub() functions: String Functions. (line 490)
-* troubleshooting, substr() function: String Functions. (line 517)
+* troubleshooting, gsub()/sub() functions: String Functions. (line 497)
+* troubleshooting, substr() function: String Functions. (line 524)
* troubleshooting, fflush() function: I/O Functions. (line 62)
* troubleshooting, system() function: I/O Functions. (line 127)
* troubleshooting, readable data files: File Checking. (line 6)
@@ -39184,7 +39470,7 @@ Index
* troubleshooting, gawk, bug reports: Bugs. (line 9)
* troubleshooting, gawk: Compatibility Mode. (line 6)
* true, logical: Truth Values. (line 6)
-* Trueman, David: History. (line 30)
+* Trueman, David: History. (line 34)
* Trueman, David <1>: Acknowledgments. (line 47)
* Trueman, David <2>: Contributors. (line 31)
* trunc-mod operation: Arithmetic Ops. (line 66)
@@ -39216,7 +39502,7 @@ Index
* Unix, awk scripts and: Executable Scripts. (line 6)
* Unix: Glossary. (line 747)
* Unix awk, backslashes in escape sequences: Escape Sequences.
- (line 120)
+ (line 134)
* Unix awk, password files, field separators and: Command Line Field Separator.
(line 62)
* Unix awk, close() function and: Close Return Value. (line 6)
@@ -39328,20 +39614,20 @@ Index
* Wall, Larry: Array Intro. (line 6)
* Wall, Larry <1>: Future Extensions. (line 6)
* Wallin, Anders: Contributors. (line 106)
-* warnings, issuing: Options. (line 215)
+* warnings, issuing: Options. (line 221)
* watch debugger command: Viewing And Changing Data.
(line 70)
* watchpoint (debugger): Debugging Terms. (line 42)
* watchpoints, show in debugger: Debugger Info. (line 51)
* wc utility: Wc Program. (line 6)
* wc.awk program: wc program. (line 51)
-* Weinberger, Peter: History. (line 17)
+* Weinberger, Peter: History. (line 21)
* Weinberger, Peter <1>: Contributors. (line 12)
* where debugger command (alias for backtrace): Execution Stack.
(line 13)
* while statement, use of regexps in: Regexp Usage. (line 19)
* while statement: While Statement. (line 6)
-* whitespace, newlines as: Options. (line 308)
+* whitespace, newlines as: Options. (line 314)
* whitespace, definition of: Fields. (line 6)
* whitespace, as field separators: Default Field Splitting.
(line 6)
@@ -39377,618 +39663,623 @@ Index

Tag Table:
Node: Top1229
-Node: Foreword346679
-Node: Foreword451279
-Node: Preface52828
-Ref: Preface-Footnote-155820
-Ref: Preface-Footnote-255929
-Ref: Preface-Footnote-356163
-Node: History56309
-Node: Names58773
-Ref: Names-Footnote-159936
-Node: This Manual60099
-Ref: This Manual-Footnote-167049
-Node: Conventions67161
-Node: Manual History69639
-Ref: Manual History-Footnote-172676
-Ref: Manual History-Footnote-272723
-Node: How To Contribute72801
-Node: Acknowledgments73751
-Node: Getting Started78749
-Node: Running gawk81276
-Node: One-shot82494
-Node: Read Terminal83797
-Node: Long85857
-Node: Executable Scripts87438
-Ref: Executable Scripts-Footnote-190213
-Node: Comments90320
-Node: Quoting92858
-Node: DOS Quoting98507
-Node: Sample Data Files100593
-Node: Very Simple103230
-Node: Two Rules109509
-Node: More Complex111463
-Node: Statements/Lines113903
-Ref: Statements/Lines-Footnote-1118783
-Node: Other Features119072
-Node: When120040
-Ref: When-Footnote-1121846
-Node: Intro Summary121911
-Node: Invoking Gawk122867
-Node: Command Line124437
-Node: Options125288
-Ref: Options-Footnote-1144437
-Ref: Options-Footnote-2144672
-Node: Other Arguments144697
-Node: Naming Standard Input148874
-Node: Environment Variables150144
-Node: AWKPATH Variable150718
-Ref: AWKPATH Variable-Footnote-1154308
-Ref: AWKPATH Variable-Footnote-2154342
-Node: AWKLIBPATH Variable154735
-Ref: AWKLIBPATH Variable-Footnote-1156510
-Node: Other Environment Variables156907
-Node: Exit Status161403
-Node: Include Files162118
-Node: Loading Shared Libraries166178
-Node: Obsolete167670
-Node: Undocumented168306
-Node: Invoking Summary168605
-Node: Regexp171632
-Node: Regexp Usage173126
-Node: Escape Sequences175227
-Node: Regexp Operators181758
-Node: Regexp Operator Details182251
-Ref: Regexp Operator Details-Footnote-1190117
-Node: Interval Expressions190276
-Ref: Interval Expressions-Footnote-1192545
-Node: Bracket Expressions192645
-Ref: table-char-classes195205
-Node: Leftmost Longest198727
-Node: Computed Regexps200087
-Node: GNU Regexp Operators203610
-Node: Case-sensitivity207633
-Ref: Case-sensitivity-Footnote-1210590
-Ref: Case-sensitivity-Footnote-2210835
-Node: Regexp Summary210951
-Node: Reading Files212475
-Node: Records214792
-Node: awk split records215903
-Node: gawk split records220793
-Ref: gawk split records-Footnote-1226087
-Node: Fields226124
-Node: Nonconstant Fields229011
-Ref: Nonconstant Fields-Footnote-1231322
-Node: Changing Fields231538
-Node: Field Separators237846
-Node: Default Field Splitting240662
-Node: Regexp Field Splitting241805
-Node: Single Character Fields245634
-Node: Command Line Field Separator246729
-Node: Full Line Fields250116
-Ref: Full Line Fields-Footnote-1251696
-Ref: Full Line Fields-Footnote-2251742
-Node: Field Splitting Summary251850
-Node: Constant Size254019
-Node: Fixed width data254763
-Node: Skipping intervening258282
-Node: Allowing trailing data259084
-Node: Fields with fixed data260149
-Node: Splitting By Content261775
-Ref: Splitting By Content-Footnote-1265714
-Node: More CSV265877
-Node: FS versus FPAT267530
-Node: Testing field creation268739
-Node: Multiple Line270432
-Node: Getline276914
-Node: Plain Getline279500
-Node: Getline/Variable282150
-Node: Getline/File283347
-Node: Getline/Variable/File284795
-Ref: Getline/Variable/File-Footnote-1286440
-Node: Getline/Pipe286536
-Node: Getline/Variable/Pipe289349
-Node: Getline/Coprocess290532
-Node: Getline/Variable/Coprocess291855
-Node: Getline Notes292621
-Node: Getline Summary295582
-Ref: table-getline-variants296026
-Node: Read Timeout296931
-Ref: Read Timeout-Footnote-1300895
-Node: Retrying Input300953
-Node: Command-line directories302220
-Node: Input Summary303158
-Node: Input Exercises306538
-Node: Printing306978
-Node: Print308864
-Node: Print Examples310370
-Node: Output Separators313223
-Node: OFMT315334
-Node: Printf316757
-Node: Basic Printf317562
-Node: Control Letters319198
-Node: Format Modifiers324667
-Node: Printf Examples330953
-Node: Redirection333498
-Node: Special FD340572
-Ref: Special FD-Footnote-1343862
-Node: Special Files343948
-Node: Other Inherited Files344577
-Node: Special Network345642
-Node: Special Caveats346530
-Node: Close Files And Pipes347513
-Ref: Close Files And Pipes-Footnote-1353650
-Node: Close Return Value353806
-Ref: table-close-pipe-return-values355081
-Ref: Close Return Value-Footnote-1355915
-Node: Nonfatal356071
-Node: Output Summary358502
-Node: Output Exercises359788
-Node: Expressions360479
-Node: Values361681
-Node: Constants362359
-Node: Scalar Constants363056
-Ref: Scalar Constants-Footnote-1365631
-Node: Nondecimal-numbers365881
-Node: Regexp Constants369002
-Node: Using Constant Regexps369548
-Node: Standard Regexp Constants370194
-Node: Strong Regexp Constants373494
-Node: Variables377345
-Node: Using Variables378010
-Node: Assignment Options379990
-Node: Conversion382552
-Node: Strings And Numbers383084
-Ref: Strings And Numbers-Footnote-1386303
-Node: Locale influences conversions386412
-Ref: table-locale-affects389262
-Node: All Operators389905
-Node: Arithmetic Ops390546
-Node: Concatenation393376
-Ref: Concatenation-Footnote-1396326
-Node: Assignment Ops396449
-Ref: table-assign-ops401588
-Node: Increment Ops402970
-Node: Truth Values and Conditions406569
-Node: Truth Values407695
-Node: Typing and Comparison408786
-Node: Variable Typing409622
-Ref: Variable Typing-Footnote-1416284
-Ref: Variable Typing-Footnote-2416364
-Node: Comparison Operators416447
-Ref: table-relational-ops416874
-Node: POSIX String Comparison420560
-Ref: POSIX String Comparison-Footnote-1422319
-Ref: POSIX String Comparison-Footnote-2422462
-Node: Boolean Ops422546
-Ref: Boolean Ops-Footnote-1427239
-Node: Conditional Exp427335
-Node: Function Calls429121
-Node: Precedence433071
-Node: Locales436948
-Node: Expressions Summary438630
-Node: Patterns and Actions441293
-Node: Pattern Overview442435
-Node: Regexp Patterns444161
-Node: Expression Patterns444707
-Node: Ranges448616
-Node: BEGIN/END451794
-Node: Using BEGIN/END452607
-Ref: Using BEGIN/END-Footnote-1455517
-Node: I/O And BEGIN/END455627
-Node: BEGINFILE/ENDFILE458108
-Node: Empty461549
-Node: Using Shell Variables461866
-Node: Action Overview464204
-Node: Statements466639
-Node: If Statement468537
-Node: While Statement470106
-Node: Do Statement472194
-Node: For Statement473380
-Node: Switch Statement476737
-Node: Break Statement479288
-Node: Continue Statement481480
-Node: Next Statement483412
-Node: Nextfile Statement485909
-Node: Exit Statement488770
-Node: Built-in Variables491303
-Node: User-modified492482
-Node: Auto-set500693
-Ref: Auto-set-Footnote-1518546
-Ref: Auto-set-Footnote-2518764
-Node: ARGC and ARGV518820
-Node: Pattern Action Summary523259
-Node: Arrays525875
-Node: Array Basics527252
-Node: Array Intro528102
-Ref: figure-array-elements530118
-Ref: Array Intro-Footnote-1532987
-Node: Reference to Elements533119
-Node: Assigning Elements535641
-Node: Array Example536136
-Node: Scanning an Array538105
-Node: Controlling Scanning541202
-Ref: Controlling Scanning-Footnote-1547848
-Node: Numeric Array Subscripts548172
-Node: Uninitialized Subscripts550446
-Node: Delete552125
-Ref: Delete-Footnote-1554939
-Node: Multidimensional554996
-Node: Multiscanning558201
-Node: Arrays of Arrays559873
-Node: Arrays Summary564773
-Node: Functions566962
-Node: Built-in568022
-Node: Calling Built-in569211
-Node: Boolean Functions571258
-Node: Numeric Functions571828
-Ref: Numeric Functions-Footnote-1576021
-Ref: Numeric Functions-Footnote-2576705
-Ref: Numeric Functions-Footnote-3576757
-Node: String Functions577033
-Ref: String Functions-Footnote-1602863
-Ref: String Functions-Footnote-2602997
-Ref: String Functions-Footnote-3603257
-Node: Gory Details603344
-Ref: table-sub-escapes605251
-Ref: table-sub-proposed606897
-Ref: table-posix-sub608407
-Ref: table-gensub-escapes610095
-Ref: Gory Details-Footnote-1611029
-Node: I/O Functions611183
-Ref: table-system-return-values617870
-Ref: I/O Functions-Footnote-1620041
-Ref: I/O Functions-Footnote-2620189
-Node: Time Functions620309
-Ref: Time Functions-Footnote-1631465
-Ref: Time Functions-Footnote-2631541
-Ref: Time Functions-Footnote-3631703
-Ref: Time Functions-Footnote-4631814
-Ref: Time Functions-Footnote-5631932
-Ref: Time Functions-Footnote-6632167
-Node: Bitwise Functions632449
-Ref: table-bitwise-ops633051
-Ref: Bitwise Functions-Footnote-1639305
-Ref: Bitwise Functions-Footnote-2639484
-Node: Type Functions639681
-Node: I18N Functions643274
-Node: User-defined645017
-Node: Definition Syntax645837
-Ref: Definition Syntax-Footnote-1651665
-Node: Function Example651742
-Ref: Function Example-Footnote-1654721
-Node: Function Calling654743
-Node: Calling A Function655337
-Node: Variable Scope656307
-Node: Pass By Value/Reference659361
-Node: Function Caveats662093
-Ref: Function Caveats-Footnote-1664188
-Node: Return Statement664312
-Node: Dynamic Typing667367
-Node: Indirect Calls669768
-Node: Functions Summary680927
-Node: Library Functions683704
-Ref: Library Functions-Footnote-1687252
-Ref: Library Functions-Footnote-2687395
-Node: Library Names687570
-Ref: Library Names-Footnote-1691364
-Ref: Library Names-Footnote-2691591
-Node: General Functions691687
-Node: Strtonum Function692881
-Node: Assert Function695963
-Node: Round Function699415
-Node: Cliff Random Function700993
-Node: Ordinal Functions702026
-Ref: Ordinal Functions-Footnote-1705135
-Ref: Ordinal Functions-Footnote-2705387
-Node: Join Function705601
-Ref: Join Function-Footnote-1707404
-Node: Getlocaltime Function707608
-Node: Readfile Function711382
-Node: Shell Quoting713411
-Node: Isnumeric Function714867
-Node: Data File Management716279
-Node: Filetrans Function716911
-Node: Rewind Function721205
-Node: File Checking723184
-Ref: File Checking-Footnote-1724556
-Node: Empty Files724763
-Node: Ignoring Assigns726830
-Node: Getopt Function728404
-Ref: Getopt Function-Footnote-1744238
-Node: Passwd Functions744450
-Ref: Passwd Functions-Footnote-1753632
-Node: Group Functions753720
-Ref: Group Functions-Footnote-1761858
-Node: Walking Arrays762071
-Node: Library Functions Summary765119
-Node: Library Exercises766543
-Node: Sample Programs767030
-Node: Running Examples767812
-Node: Clones768564
-Node: Cut Program769836
-Node: Egrep Program780277
-Node: Id Program789594
-Node: Split Program799708
-Ref: Split Program-Footnote-1809943
-Node: Tee Program810130
-Node: Uniq Program813039
-Node: Wc Program820904
-Node: Bytes vs. Characters821299
-Node: Using extensions822901
-Node: wc program823681
-Node: Miscellaneous Programs828687
-Node: Dupword Program829916
-Node: Alarm Program831979
-Node: Translate Program836892
-Ref: Translate Program-Footnote-1841633
-Node: Labels Program841911
-Ref: Labels Program-Footnote-1845352
-Node: Word Sorting845444
-Node: History Sorting849638
-Node: Extract Program851913
-Node: Simple Sed860182
-Node: Igawk Program863398
-Ref: Igawk Program-Footnote-1878645
-Ref: Igawk Program-Footnote-2878851
-Ref: Igawk Program-Footnote-3878981
-Node: Anagram Program879108
-Node: Signature Program882204
-Node: Programs Summary883456
-Node: Programs Exercises884714
-Ref: Programs Exercises-Footnote-1889030
-Node: Advanced Features889116
-Node: Nondecimal Data891610
-Node: Boolean Typed Values893240
-Node: Array Sorting895215
-Node: Controlling Array Traversal895944
-Ref: Controlling Array Traversal-Footnote-1904451
-Node: Array Sorting Functions904573
-Ref: Array Sorting Functions-Footnote-1910692
-Node: Two-way I/O910900
-Ref: Two-way I/O-Footnote-1918895
-Ref: Two-way I/O-Footnote-2919086
-Node: TCP/IP Networking919168
-Node: Profiling922348
-Node: Persistent Memory932058
-Ref: Persistent Memory-Footnote-1941668
-Node: Extension Philosophy941799
-Node: Advanced Features Summary943334
-Node: Internationalization945604
-Node: I18N and L10N947310
-Node: Explaining gettext948005
-Ref: Explaining gettext-Footnote-1954158
-Ref: Explaining gettext-Footnote-2954353
-Node: Programmer i18n954518
-Ref: Programmer i18n-Footnote-1959631
-Node: Translator i18n959680
-Node: String Extraction960516
-Ref: String Extraction-Footnote-1961694
-Node: Printf Ordering961792
-Ref: Printf Ordering-Footnote-1964654
-Node: I18N Portability964722
-Ref: I18N Portability-Footnote-1967296
-Node: I18N Example967367
-Ref: I18N Example-Footnote-1970767
-Ref: I18N Example-Footnote-2970843
-Node: Gawk I18N970960
-Node: I18N Summary971616
-Node: Debugger973017
-Node: Debugging974041
-Node: Debugging Concepts974490
-Node: Debugging Terms976316
-Node: Awk Debugging978929
-Ref: Awk Debugging-Footnote-1979906
-Node: Sample Debugging Session980046
-Node: Debugger Invocation980598
-Node: Finding The Bug982227
-Node: List of Debugger Commands988913
-Node: Breakpoint Control990290
-Node: Debugger Execution Control994122
-Node: Viewing And Changing Data997602
-Node: Execution Stack1001340
-Node: Debugger Info1003021
-Node: Miscellaneous Debugger Commands1007320
-Node: Readline Support1012573
-Node: Limitations1013519
-Node: Debugging Summary1016163
-Node: Namespaces1017466
-Node: Global Namespace1018593
-Node: Qualified Names1020038
-Node: Default Namespace1021073
-Node: Changing The Namespace1021848
-Node: Naming Rules1023542
-Node: Internal Name Management1025457
-Node: Namespace Example1026527
-Node: Namespace And Features1029110
-Node: Namespace Summary1030567
-Node: Arbitrary Precision Arithmetic1032080
-Node: Computer Arithmetic1033599
-Ref: table-numeric-ranges1037416
-Ref: table-floating-point-ranges1037914
-Ref: Computer Arithmetic-Footnote-11038573
-Node: Math Definitions1038632
-Ref: table-ieee-formats1041677
-Node: MPFR features1042251
-Node: MPFR On Parole1042704
-Ref: MPFR On Parole-Footnote-11043548
-Node: MPFR Intro1043707
-Node: FP Math Caution1045397
-Ref: FP Math Caution-Footnote-11046471
-Node: Inexactness of computations1046848
-Node: Inexact representation1047879
-Node: Comparing FP Values1049262
-Node: Errors accumulate1050520
-Node: Strange values1051987
-Ref: Strange values-Footnote-11054653
-Node: Getting Accuracy1054758
-Node: Try To Round1057495
-Node: Setting precision1058402
-Ref: table-predefined-precision-strings1059107
-Node: Setting the rounding mode1060992
-Ref: table-gawk-rounding-modes1061374
-Ref: Setting the rounding mode-Footnote-11065432
-Node: Arbitrary Precision Integers1065615
-Ref: Arbitrary Precision Integers-Footnote-11068827
-Node: Checking for MPFR1068983
-Node: POSIX Floating Point Problems1070473
-Ref: POSIX Floating Point Problems-Footnote-11075337
-Node: Floating point summary1075375
-Node: Dynamic Extensions1077639
-Node: Extension Intro1079238
-Node: Plugin License1080546
-Node: Extension Mechanism Outline1081359
-Ref: figure-load-extension1081810
-Ref: figure-register-new-function1083395
-Ref: figure-call-new-function1084505
-Node: Extension API Description1086629
-Node: Extension API Functions Introduction1088358
-Ref: table-api-std-headers1090256
-Node: General Data Types1094720
-Ref: General Data Types-Footnote-11103888
-Node: Memory Allocation Functions1104203
-Ref: Memory Allocation Functions-Footnote-11108928
-Node: Constructor Functions1109027
-Node: API Ownership of MPFR and GMP Values1112932
-Node: Registration Functions1114493
-Node: Extension Functions1115197
-Node: Exit Callback Functions1120773
-Node: Extension Version String1122092
-Node: Input Parsers1122787
-Node: Output Wrappers1137431
-Node: Two-way processors1142279
-Node: Printing Messages1144640
-Ref: Printing Messages-Footnote-11145854
-Node: Updating ERRNO1146009
-Node: Requesting Values1146808
-Ref: table-value-types-returned1147561
-Node: Accessing Parameters1148670
-Node: Symbol Table Access1149954
-Node: Symbol table by name1150470
-Ref: Symbol table by name-Footnote-11153681
-Node: Symbol table by cookie1153813
-Ref: Symbol table by cookie-Footnote-11158094
-Node: Cached values1158158
-Ref: Cached values-Footnote-11161802
-Node: Array Manipulation1161959
-Ref: Array Manipulation-Footnote-11163062
-Node: Array Data Types1163099
-Ref: Array Data Types-Footnote-11165921
-Node: Array Functions1166021
-Node: Flattening Arrays1171050
-Node: Creating Arrays1178102
-Node: Redirection API1182952
-Node: Extension API Variables1185973
-Node: Extension Versioning1186698
-Ref: gawk-api-version1187135
-Node: Extension GMP/MPFR Versioning1188923
-Node: Extension API Informational Variables1190629
-Node: Extension API Boilerplate1191790
-Node: Changes from API V11195926
-Node: Finding Extensions1197560
-Node: Extension Example1198135
-Node: Internal File Description1198959
-Node: Internal File Ops1203283
-Ref: Internal File Ops-Footnote-11214841
-Node: Using Internal File Ops1214989
-Ref: Using Internal File Ops-Footnote-11217420
-Node: Extension Samples1217698
-Node: Extension Sample File Functions1219267
-Node: Extension Sample Fnmatch1227405
-Node: Extension Sample Fork1229000
-Node: Extension Sample Inplace1230276
-Node: Extension Sample Ord1233948
-Node: Extension Sample Readdir1234824
-Ref: table-readdir-file-types1235721
-Node: Extension Sample Revout1236859
-Node: Extension Sample Rev2way1237456
-Node: Extension Sample Read write array1238208
-Node: Extension Sample Readfile1241482
-Node: Extension Sample Time1242613
-Node: Extension Sample API Tests1244903
-Node: gawkextlib1245411
-Node: Extension summary1248447
-Node: Extension Exercises1252305
-Node: Language History1253583
-Node: V7/SVR3.11255297
-Node: SVR41257647
-Node: POSIX1259179
-Node: BTL1260604
-Node: POSIX/GNU1261373
-Node: Feature History1267904
-Node: Common Extensions1287022
-Node: Ranges and Locales1288391
-Ref: Ranges and Locales-Footnote-11293192
-Ref: Ranges and Locales-Footnote-21293219
-Ref: Ranges and Locales-Footnote-31293458
-Node: Contributors1293681
-Node: History summary1299886
-Node: Installation1301332
-Node: Gawk Distribution1302296
-Node: Getting1302788
-Node: Extracting1303787
-Node: Distribution contents1305499
-Node: Unix Installation1313579
-Node: Quick Installation1314401
-Node: Compiling with MPFR1316947
-Node: Shell Startup Files1317653
-Node: Additional Configuration Options1318810
-Node: Configuration Philosophy1321197
-Node: Compiling from Git1323699
-Node: Building the Documentation1324258
-Node: Non-Unix Installation1325670
-Node: PC Installation1326146
-Node: PC Binary Installation1327019
-Node: PC Compiling1327924
-Node: PC Using1329102
-Node: Cygwin1332830
-Node: MSYS1334086
-Node: OpenVMS Installation1334718
-Node: OpenVMS Compilation1335399
-Ref: OpenVMS Compilation-Footnote-11336882
-Node: OpenVMS Dynamic Extensions1336944
-Node: OpenVMS Installation Details1338580
-Node: OpenVMS Running1341015
-Node: OpenVMS GNV1345152
-Node: Bugs1345907
-Node: Bug definition1346831
-Node: Bug address1350482
-Node: Usenet1354073
-Node: Performance bugs1355304
-Node: Asking for help1358322
-Node: Maintainers1360313
-Node: Other Versions1361340
-Node: Installation summary1370272
-Node: Notes1371656
-Node: Compatibility Mode1372466
-Node: Additions1373288
-Node: Accessing The Source1374233
-Node: Adding Code1375768
-Node: New Ports1382904
-Node: Derived Files1387414
-Ref: Derived Files-Footnote-11393261
-Ref: Derived Files-Footnote-21393296
-Ref: Derived Files-Footnote-31393913
-Node: Future Extensions1394027
-Node: Implementation Limitations1394699
-Node: Extension Design1395941
-Node: Old Extension Problems1397105
-Ref: Old Extension Problems-Footnote-11398681
-Node: Extension New Mechanism Goals1398742
-Ref: Extension New Mechanism Goals-Footnote-11402238
-Node: Extension Other Design Decisions1402439
-Node: Extension Future Growth1404638
-Node: Notes summary1405262
-Node: Basic Concepts1406475
-Node: Basic High Level1407160
-Ref: figure-general-flow1407442
-Ref: figure-process-flow1408149
-Ref: Basic High Level-Footnote-11411550
-Node: Basic Data Typing1411739
-Node: Glossary1415157
-Node: Copying1448279
-Node: GNU Free Documentation License1486040
-Node: Index1511363
+Node: Foreword346932
+Node: Foreword451532
+Node: Preface53081
+Ref: Preface-Footnote-156073
+Ref: Preface-Footnote-256182
+Ref: Preface-Footnote-356416
+Node: History56562
+Node: Names59180
+Ref: Names-Footnote-160343
+Node: This Manual60506
+Ref: This Manual-Footnote-167456
+Node: Conventions67568
+Node: Manual History70046
+Ref: Manual History-Footnote-173083
+Ref: Manual History-Footnote-273130
+Node: How To Contribute73208
+Node: Acknowledgments74158
+Node: Getting Started79156
+Node: Running gawk81683
+Node: One-shot82901
+Node: Read Terminal84204
+Node: Long86264
+Node: Executable Scripts87845
+Ref: Executable Scripts-Footnote-190620
+Node: Comments90727
+Node: Quoting93265
+Node: DOS Quoting98914
+Node: Sample Data Files101000
+Node: Very Simple103637
+Node: Two Rules109916
+Node: More Complex111870
+Node: Statements/Lines114310
+Ref: Statements/Lines-Footnote-1119190
+Node: Other Features119479
+Node: When120447
+Ref: When-Footnote-1122253
+Node: Intro Summary122318
+Node: Invoking Gawk123274
+Node: Command Line124844
+Node: Options125695
+Ref: Options-Footnote-1145072
+Ref: Options-Footnote-2145307
+Node: Other Arguments145332
+Node: Naming Standard Input149509
+Node: Environment Variables150779
+Node: AWKPATH Variable151353
+Ref: AWKPATH Variable-Footnote-1154943
+Ref: AWKPATH Variable-Footnote-2154977
+Node: AWKLIBPATH Variable155370
+Ref: AWKLIBPATH Variable-Footnote-1157145
+Node: Other Environment Variables157542
+Node: Exit Status162038
+Node: Include Files162753
+Node: Loading Shared Libraries166813
+Node: Obsolete168305
+Node: Undocumented168941
+Node: Invoking Summary169240
+Node: Regexp172267
+Node: Regexp Usage173761
+Node: Escape Sequences175862
+Node: Regexp Operators183198
+Node: Regexp Operator Details183691
+Ref: Regexp Operator Details-Footnote-1191557
+Node: Interval Expressions191716
+Ref: Interval Expressions-Footnote-1193985
+Node: Bracket Expressions194085
+Ref: table-char-classes196645
+Node: Leftmost Longest200167
+Node: Computed Regexps201527
+Node: GNU Regexp Operators205050
+Node: Case-sensitivity209073
+Ref: Case-sensitivity-Footnote-1212030
+Ref: Case-sensitivity-Footnote-2212275
+Node: Regexp Summary212391
+Node: Reading Files213915
+Node: Records216232
+Node: awk split records217507
+Node: gawk split records222397
+Ref: gawk split records-Footnote-1227691
+Node: Fields227728
+Node: Nonconstant Fields230615
+Ref: Nonconstant Fields-Footnote-1232926
+Node: Changing Fields233142
+Node: Field Separators239450
+Node: Default Field Splitting242323
+Node: Regexp Field Splitting243466
+Node: Single Character Fields247295
+Node: Comma Separated Fields248384
+Ref: table-csv-examples249792
+Node: Command Line Field Separator252106
+Node: Full Line Fields255492
+Ref: Full Line Fields-Footnote-1257072
+Ref: Full Line Fields-Footnote-2257118
+Node: Field Splitting Summary257226
+Node: Constant Size259660
+Node: Fixed width data260404
+Node: Skipping intervening263923
+Node: Allowing trailing data264725
+Node: Fields with fixed data265790
+Node: Splitting By Content267416
+Ref: Splitting By Content-Footnote-1271685
+Node: More CSV271848
+Node: FS versus FPAT273501
+Node: Testing field creation274710
+Node: Multiple Line276488
+Node: Getline282970
+Node: Plain Getline285556
+Node: Getline/Variable288206
+Node: Getline/File289403
+Node: Getline/Variable/File290851
+Ref: Getline/Variable/File-Footnote-1292496
+Node: Getline/Pipe292592
+Node: Getline/Variable/Pipe295405
+Node: Getline/Coprocess296588
+Node: Getline/Variable/Coprocess297911
+Node: Getline Notes298677
+Node: Getline Summary301638
+Ref: table-getline-variants302082
+Node: Read Timeout302987
+Ref: Read Timeout-Footnote-1306951
+Node: Retrying Input307009
+Node: Command-line directories308276
+Node: Input Summary309214
+Node: Input Exercises312594
+Node: Printing313034
+Node: Print314977
+Node: Print Examples316483
+Node: Output Separators319336
+Node: OFMT321447
+Node: Printf322870
+Node: Basic Printf323675
+Node: Control Letters325311
+Node: Format Modifiers330780
+Node: Printf Examples337066
+Node: Redirection339611
+Node: Special FD346685
+Ref: Special FD-Footnote-1349975
+Node: Special Files350061
+Node: Other Inherited Files350690
+Node: Special Network351755
+Node: Special Caveats352643
+Node: Close Files And Pipes353626
+Ref: Close Files And Pipes-Footnote-1359762
+Node: Close Return Value359918
+Ref: table-close-pipe-return-values361193
+Ref: Close Return Value-Footnote-1362027
+Node: Noflush362183
+Node: Nonfatal363695
+Node: Output Summary366112
+Node: Output Exercises367398
+Node: Expressions368089
+Node: Values369291
+Node: Constants369969
+Node: Scalar Constants370666
+Ref: Scalar Constants-Footnote-1373244
+Ref: Scalar Constants-Footnote-2373494
+Node: Nondecimal-numbers373574
+Node: Regexp Constants376695
+Node: Using Constant Regexps377241
+Node: Standard Regexp Constants377887
+Node: Strong Regexp Constants381187
+Node: Variables385038
+Node: Using Variables385703
+Node: Assignment Options387683
+Node: Conversion390245
+Node: Strings And Numbers390777
+Ref: Strings And Numbers-Footnote-1393996
+Node: Locale influences conversions394105
+Ref: table-locale-affects396955
+Node: All Operators397598
+Node: Arithmetic Ops398239
+Node: Concatenation401069
+Ref: Concatenation-Footnote-1404019
+Node: Assignment Ops404142
+Ref: table-assign-ops409281
+Node: Increment Ops410663
+Node: Truth Values and Conditions414262
+Node: Truth Values415388
+Node: Typing and Comparison416479
+Node: Variable Typing417315
+Ref: Variable Typing-Footnote-1423977
+Ref: Variable Typing-Footnote-2424057
+Node: Comparison Operators424140
+Ref: table-relational-ops424567
+Node: POSIX String Comparison428253
+Ref: POSIX String Comparison-Footnote-1430012
+Ref: POSIX String Comparison-Footnote-2430155
+Node: Boolean Ops430239
+Ref: Boolean Ops-Footnote-1434932
+Node: Conditional Exp435028
+Node: Function Calls436814
+Node: Precedence440764
+Node: Locales444641
+Node: Expressions Summary446323
+Node: Patterns and Actions448986
+Node: Pattern Overview450128
+Node: Regexp Patterns451854
+Node: Expression Patterns452400
+Node: Ranges456309
+Node: BEGIN/END459487
+Node: Using BEGIN/END460300
+Ref: Using BEGIN/END-Footnote-1463210
+Node: I/O And BEGIN/END463320
+Node: BEGINFILE/ENDFILE465801
+Node: Empty469242
+Node: Using Shell Variables469559
+Node: Action Overview471897
+Node: Statements474332
+Node: If Statement476230
+Node: While Statement477799
+Node: Do Statement479887
+Node: For Statement481073
+Node: Switch Statement484430
+Node: Break Statement486981
+Node: Continue Statement489173
+Node: Next Statement491105
+Node: Nextfile Statement493602
+Node: Exit Statement496463
+Node: Built-in Variables498996
+Node: User-modified500175
+Node: Auto-set508386
+Ref: Auto-set-Footnote-1526485
+Ref: Auto-set-Footnote-2526703
+Node: ARGC and ARGV526759
+Node: Pattern Action Summary531198
+Node: Arrays533814
+Node: Array Basics535191
+Node: Array Intro536041
+Ref: figure-array-elements538057
+Ref: Array Intro-Footnote-1540926
+Node: Reference to Elements541058
+Node: Assigning Elements543580
+Node: Array Example544075
+Node: Scanning an Array546044
+Node: Controlling Scanning549141
+Ref: Controlling Scanning-Footnote-1555787
+Node: Numeric Array Subscripts556111
+Node: Uninitialized Subscripts558385
+Node: Delete560064
+Ref: Delete-Footnote-1562878
+Node: Multidimensional562935
+Node: Multiscanning566140
+Node: Arrays of Arrays567812
+Node: Arrays Summary572712
+Node: Functions574901
+Node: Built-in575961
+Node: Calling Built-in577150
+Node: Boolean Functions579197
+Node: Numeric Functions579767
+Ref: Numeric Functions-Footnote-1583960
+Ref: Numeric Functions-Footnote-2584644
+Ref: Numeric Functions-Footnote-3584696
+Node: String Functions584972
+Ref: String Functions-Footnote-1611203
+Ref: String Functions-Footnote-2611337
+Ref: String Functions-Footnote-3611597
+Node: Gory Details611684
+Ref: table-sub-escapes613591
+Ref: table-sub-proposed615237
+Ref: table-posix-sub616747
+Ref: table-gensub-escapes618435
+Ref: Gory Details-Footnote-1619369
+Node: I/O Functions619523
+Ref: table-system-return-values626210
+Ref: I/O Functions-Footnote-1628381
+Ref: I/O Functions-Footnote-2628529
+Node: Time Functions628649
+Ref: Time Functions-Footnote-1639805
+Ref: Time Functions-Footnote-2639881
+Ref: Time Functions-Footnote-3640043
+Ref: Time Functions-Footnote-4640154
+Ref: Time Functions-Footnote-5640272
+Ref: Time Functions-Footnote-6640507
+Node: Bitwise Functions640789
+Ref: table-bitwise-ops641391
+Ref: Bitwise Functions-Footnote-1647645
+Ref: Bitwise Functions-Footnote-2647824
+Node: Type Functions648021
+Node: I18N Functions651614
+Node: User-defined653357
+Node: Definition Syntax654177
+Ref: Definition Syntax-Footnote-1660005
+Node: Function Example660082
+Ref: Function Example-Footnote-1663061
+Node: Function Calling663083
+Node: Calling A Function663677
+Node: Variable Scope664647
+Node: Pass By Value/Reference667701
+Node: Function Caveats670433
+Ref: Function Caveats-Footnote-1672528
+Node: Return Statement672652
+Node: Dynamic Typing675707
+Node: Indirect Calls678099
+Node: Functions Summary689258
+Node: Library Functions692035
+Ref: Library Functions-Footnote-1695583
+Ref: Library Functions-Footnote-2695726
+Node: Library Names695901
+Ref: Library Names-Footnote-1699695
+Ref: Library Names-Footnote-2699922
+Node: General Functions700018
+Node: Strtonum Function701288
+Node: Assert Function704370
+Node: Round Function707822
+Node: Cliff Random Function709400
+Node: Ordinal Functions710433
+Ref: Ordinal Functions-Footnote-1713542
+Ref: Ordinal Functions-Footnote-2713794
+Node: Join Function714008
+Ref: Join Function-Footnote-1715811
+Node: Getlocaltime Function716015
+Node: Readfile Function719789
+Node: Shell Quoting721818
+Node: Isnumeric Function723274
+Node: To CSV Function724710
+Node: Data File Management726786
+Node: Filetrans Function727418
+Node: Rewind Function731712
+Node: File Checking733691
+Ref: File Checking-Footnote-1735063
+Node: Empty Files735270
+Node: Ignoring Assigns737337
+Node: Getopt Function738911
+Ref: Getopt Function-Footnote-1754745
+Node: Passwd Functions754957
+Ref: Passwd Functions-Footnote-1764139
+Node: Group Functions764227
+Ref: Group Functions-Footnote-1772365
+Node: Walking Arrays772578
+Node: Library Functions Summary775626
+Node: Library Exercises777050
+Node: Sample Programs777537
+Node: Running Examples778319
+Node: Clones779071
+Node: Cut Program780343
+Node: Egrep Program790784
+Node: Id Program800101
+Node: Split Program810215
+Ref: Split Program-Footnote-1820450
+Node: Tee Program820637
+Node: Uniq Program823546
+Node: Wc Program831411
+Node: Bytes vs. Characters831806
+Node: Using extensions833408
+Node: wc program834188
+Node: Miscellaneous Programs839194
+Node: Dupword Program840423
+Node: Alarm Program842486
+Node: Translate Program847399
+Ref: Translate Program-Footnote-1852140
+Node: Labels Program852418
+Ref: Labels Program-Footnote-1855859
+Node: Word Sorting855951
+Node: History Sorting860145
+Node: Extract Program862420
+Node: Simple Sed870689
+Node: Igawk Program873905
+Ref: Igawk Program-Footnote-1889152
+Ref: Igawk Program-Footnote-2889358
+Ref: Igawk Program-Footnote-3889488
+Node: Anagram Program889615
+Node: Signature Program892711
+Node: Programs Summary893963
+Node: Programs Exercises895221
+Ref: Programs Exercises-Footnote-1899537
+Node: Advanced Features899623
+Node: Nondecimal Data902117
+Node: Boolean Typed Values903747
+Node: Array Sorting905722
+Node: Controlling Array Traversal906451
+Ref: Controlling Array Traversal-Footnote-1914958
+Node: Array Sorting Functions915080
+Ref: Array Sorting Functions-Footnote-1921199
+Node: Two-way I/O921407
+Ref: Two-way I/O-Footnote-1929402
+Ref: Two-way I/O-Footnote-2929593
+Node: TCP/IP Networking929675
+Node: Profiling932855
+Node: Persistent Memory942565
+Ref: Persistent Memory-Footnote-1952175
+Node: Extension Philosophy952306
+Node: Advanced Features Summary953841
+Node: Internationalization956111
+Node: I18N and L10N957817
+Node: Explaining gettext958512
+Ref: Explaining gettext-Footnote-1964665
+Ref: Explaining gettext-Footnote-2964860
+Node: Programmer i18n965025
+Ref: Programmer i18n-Footnote-1970138
+Node: Translator i18n970187
+Node: String Extraction971023
+Ref: String Extraction-Footnote-1972201
+Node: Printf Ordering972299
+Ref: Printf Ordering-Footnote-1975161
+Node: I18N Portability975229
+Ref: I18N Portability-Footnote-1977803
+Node: I18N Example977874
+Ref: I18N Example-Footnote-1981274
+Ref: I18N Example-Footnote-2981350
+Node: Gawk I18N981467
+Node: I18N Summary982123
+Node: Debugger983524
+Node: Debugging984548
+Node: Debugging Concepts984997
+Node: Debugging Terms986823
+Node: Awk Debugging989436
+Ref: Awk Debugging-Footnote-1990413
+Node: Sample Debugging Session990553
+Node: Debugger Invocation991105
+Node: Finding The Bug992734
+Node: List of Debugger Commands999420
+Node: Breakpoint Control1000797
+Node: Debugger Execution Control1004629
+Node: Viewing And Changing Data1008109
+Node: Execution Stack1011847
+Node: Debugger Info1013528
+Node: Miscellaneous Debugger Commands1017827
+Node: Readline Support1023080
+Node: Limitations1024026
+Node: Debugging Summary1026670
+Node: Namespaces1027973
+Node: Global Namespace1029100
+Node: Qualified Names1030545
+Node: Default Namespace1031580
+Node: Changing The Namespace1032355
+Node: Naming Rules1034049
+Node: Internal Name Management1035964
+Node: Namespace Example1037034
+Node: Namespace And Features1039617
+Node: Namespace Summary1041074
+Node: Arbitrary Precision Arithmetic1042587
+Node: Computer Arithmetic1044106
+Ref: table-numeric-ranges1047923
+Ref: table-floating-point-ranges1048421
+Ref: Computer Arithmetic-Footnote-11049080
+Node: Math Definitions1049139
+Ref: table-ieee-formats1052184
+Node: MPFR features1052758
+Node: MPFR On Parole1053211
+Ref: MPFR On Parole-Footnote-11054055
+Node: MPFR Intro1054214
+Node: FP Math Caution1055904
+Ref: FP Math Caution-Footnote-11056978
+Node: Inexactness of computations1057355
+Node: Inexact representation1058386
+Node: Comparing FP Values1059769
+Node: Errors accumulate1061027
+Node: Strange values1062494
+Ref: Strange values-Footnote-11065160
+Node: Getting Accuracy1065265
+Node: Try To Round1068002
+Node: Setting precision1068909
+Ref: table-predefined-precision-strings1069614
+Node: Setting the rounding mode1071499
+Ref: table-gawk-rounding-modes1071881
+Ref: Setting the rounding mode-Footnote-11075939
+Node: Arbitrary Precision Integers1076122
+Ref: Arbitrary Precision Integers-Footnote-11079334
+Node: Checking for MPFR1079490
+Node: POSIX Floating Point Problems1080980
+Ref: POSIX Floating Point Problems-Footnote-11085844
+Node: Floating point summary1085882
+Node: Dynamic Extensions1088146
+Node: Extension Intro1089745
+Node: Plugin License1091053
+Node: Extension Mechanism Outline1091866
+Ref: figure-load-extension1092317
+Ref: figure-register-new-function1093902
+Ref: figure-call-new-function1095012
+Node: Extension API Description1097136
+Node: Extension API Functions Introduction1098865
+Ref: table-api-std-headers1100763
+Node: General Data Types1105227
+Ref: General Data Types-Footnote-11114395
+Node: Memory Allocation Functions1114710
+Ref: Memory Allocation Functions-Footnote-11119435
+Node: Constructor Functions1119534
+Node: API Ownership of MPFR and GMP Values1123439
+Node: Registration Functions1125000
+Node: Extension Functions1125704
+Node: Exit Callback Functions1131280
+Node: Extension Version String1132599
+Node: Input Parsers1133294
+Node: Output Wrappers1147938
+Node: Two-way processors1152786
+Node: Printing Messages1155147
+Ref: Printing Messages-Footnote-11156361
+Node: Updating ERRNO1156516
+Node: Requesting Values1157315
+Ref: table-value-types-returned1158068
+Node: Accessing Parameters1159177
+Node: Symbol Table Access1160461
+Node: Symbol table by name1160977
+Ref: Symbol table by name-Footnote-11164188
+Node: Symbol table by cookie1164320
+Ref: Symbol table by cookie-Footnote-11168601
+Node: Cached values1168665
+Ref: Cached values-Footnote-11172309
+Node: Array Manipulation1172466
+Ref: Array Manipulation-Footnote-11173569
+Node: Array Data Types1173606
+Ref: Array Data Types-Footnote-11176428
+Node: Array Functions1176528
+Node: Flattening Arrays1181557
+Node: Creating Arrays1188609
+Node: Redirection API1193459
+Node: Extension API Variables1196480
+Node: Extension Versioning1197205
+Ref: gawk-api-version1197642
+Node: Extension GMP/MPFR Versioning1199430
+Node: Extension API Informational Variables1201136
+Node: Extension API Boilerplate1202297
+Node: Changes from API V11206433
+Node: Finding Extensions1208067
+Node: Extension Example1208642
+Node: Internal File Description1209466
+Node: Internal File Ops1213790
+Ref: Internal File Ops-Footnote-11225348
+Node: Using Internal File Ops1225496
+Ref: Using Internal File Ops-Footnote-11227927
+Node: Extension Samples1228205
+Node: Extension Sample File Functions1229774
+Node: Extension Sample Fnmatch1237912
+Node: Extension Sample Fork1239507
+Node: Extension Sample Inplace1240783
+Node: Extension Sample Ord1244455
+Node: Extension Sample Readdir1245331
+Ref: table-readdir-file-types1246228
+Node: Extension Sample Revout1247366
+Node: Extension Sample Rev2way1247963
+Node: Extension Sample Read write array1248715
+Node: Extension Sample Readfile1251989
+Node: Extension Sample Time1253120
+Node: Extension Sample API Tests1255410
+Node: gawkextlib1255918
+Node: Extension summary1258954
+Node: Extension Exercises1262812
+Node: Language History1264090
+Node: V7/SVR3.11265804
+Node: SVR41268154
+Node: POSIX1269686
+Node: BTL1271111
+Node: POSIX/GNU1271880
+Node: Feature History1278411
+Node: Common Extensions1297978
+Node: Ranges and Locales1299455
+Ref: Ranges and Locales-Footnote-11304256
+Ref: Ranges and Locales-Footnote-21304283
+Ref: Ranges and Locales-Footnote-31304522
+Node: Contributors1304745
+Node: History summary1310950
+Node: Installation1312396
+Node: Gawk Distribution1313360
+Node: Getting1313852
+Node: Extracting1314851
+Node: Distribution contents1316563
+Node: Unix Installation1324643
+Node: Quick Installation1325465
+Node: Compiling with MPFR1328011
+Node: Shell Startup Files1328717
+Node: Additional Configuration Options1329874
+Node: Configuration Philosophy1332261
+Node: Compiling from Git1334763
+Node: Building the Documentation1335322
+Node: Non-Unix Installation1336734
+Node: PC Installation1337210
+Node: PC Binary Installation1338083
+Node: PC Compiling1338988
+Node: PC Using1340166
+Node: Cygwin1343894
+Node: MSYS1345150
+Node: OpenVMS Installation1345782
+Node: OpenVMS Compilation1346463
+Ref: OpenVMS Compilation-Footnote-11347946
+Node: OpenVMS Dynamic Extensions1348008
+Node: OpenVMS Installation Details1349644
+Node: OpenVMS Running1352079
+Node: OpenVMS GNV1356216
+Node: Bugs1356971
+Node: Bug definition1357895
+Node: Bug address1361546
+Node: Usenet1365137
+Node: Performance bugs1366368
+Node: Asking for help1369386
+Node: Maintainers1371377
+Node: Other Versions1372404
+Node: Installation summary1381336
+Node: Notes1382720
+Node: Compatibility Mode1383530
+Node: Additions1384352
+Node: Accessing The Source1385297
+Node: Adding Code1386832
+Node: New Ports1393968
+Node: Derived Files1398478
+Ref: Derived Files-Footnote-11404325
+Ref: Derived Files-Footnote-21404360
+Ref: Derived Files-Footnote-31404977
+Node: Future Extensions1405091
+Node: Implementation Limitations1405763
+Node: Extension Design1407005
+Node: Old Extension Problems1408169
+Ref: Old Extension Problems-Footnote-11409745
+Node: Extension New Mechanism Goals1409806
+Ref: Extension New Mechanism Goals-Footnote-11413302
+Node: Extension Other Design Decisions1413503
+Node: Extension Future Growth1415702
+Node: Notes summary1416326
+Node: Basic Concepts1417539
+Node: Basic High Level1418224
+Ref: figure-general-flow1418506
+Ref: figure-process-flow1419213
+Ref: Basic High Level-Footnote-11422614
+Node: Basic Data Typing1422803
+Node: Glossary1426221
+Node: Copying1459343
+Node: GNU Free Documentation License1497104
+Node: Index1522427

End Tag Table