aboutsummaryrefslogtreecommitdiffstats
path: root/doc/gawk.info
diff options
context:
space:
mode:
Diffstat (limited to 'doc/gawk.info')
-rw-r--r--doc/gawk.info3205
1 files changed, 1781 insertions, 1424 deletions
diff --git a/doc/gawk.info b/doc/gawk.info
index 5deb6482..aad73f7a 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -9,13 +9,12 @@ START-INFO-DIR-ENTRY
* awk: (gawk)Invoking gawk. Text scanning and processing.
END-INFO-DIR-ENTRY
- Copyright (C) 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012, 2013, 2014
+ Copyright (C) 1989, 1991, 1992, 1993, 1996-2005, 2007, 2009-2014
Free Software Foundation, Inc.
This is Edition 4.1 of `GAWK: Effective AWK Programming: A User's
-Guide for GNU Awk', for the 4.1.0 (or later) version of the GNU
+Guide for GNU Awk', for the 4.1.1 (or later) version of the GNU
implementation of AWK.
Permission is granted to copy, distribute and/or modify this document
@@ -41,13 +40,12 @@ General Introduction
This file documents `awk', a program that you can use to select
particular records in a file and perform operations upon them.
- Copyright (C) 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012, 2013, 2014
+ Copyright (C) 1989, 1991, 1992, 1993, 1996-2005, 2007, 2009-2014
Free Software Foundation, Inc.
This is Edition 4.1 of `GAWK: Effective AWK Programming: A User's
-Guide for GNU Awk', for the 4.1.0 (or later) version of the GNU
+Guide for GNU Awk', for the 4.1.1 (or later) version of the GNU
implementation of AWK.
Permission is granted to copy, distribute and/or modify this document
@@ -522,6 +520,7 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
* Extension API Functions Introduction:: Introduction to the API functions.
* General Data Types:: The data types.
* Requesting Values:: How to get a value.
+* Memory Allocation Functions:: Functions for allocating memory.
* Constructor Functions:: Functions for creating values.
* Registration Functions:: Functions to register things with
`gawk'.
@@ -584,7 +583,8 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
version of `awk'.
* POSIX/GNU:: The extensions in `gawk' not
in POSIX `awk'.
-* Feature History:: The history of the features in `gawk'.
+* Feature History:: The history of the features in
+ `gawk'.
* Common Extensions:: Common Extensions Summary.
* Ranges and Locales:: How locales used to affect regexp
ranges.
@@ -1766,30 +1766,30 @@ File: gawk.info, Node: Sample Data Files, Next: Very Simple, Prev: Running ga
===============================
Many of the examples in this Info file take their input from two sample
-data files. The first, `BBS-list', represents a list of computer
-bulletin board systems together with information about those systems.
+data files. The first, `mail-list', represents a list of peoples' names
+together with their email addresses and information about those people.
The second data file, called `inventory-shipped', contains information
about monthly shipments. In both files, each line is considered to be
one "record".
- In the data file `BBS-list', each record contains the name of a
-computer bulletin board, its phone number, the board's baud rate(s),
-and a code for the number of hours it is operational. An `A' in the
-last column means the board operates 24 hours a day. A `B' in the last
-column means the board only operates on evening and weekend hours. A
-`C' means the board operates only on weekends:
-
- aardvark 555-5553 1200/300 B
- alpo-net 555-3412 2400/1200/300 A
- barfly 555-7685 1200/300 A
- bites 555-1675 2400/1200/300 A
- camelot 555-0542 300 C
- core 555-2912 1200/300 C
- fooey 555-1234 2400/1200/300 B
- foot 555-6699 1200/300 B
- macfoo 555-6480 1200/300 A
- sdace 555-3430 2400/1200/300 A
- sabafoo 555-2127 1200/300 C
+ In the data file `mail-list', each record contains the name of a
+person, his/her phone number, his/her email-address, and a code for
+their relationship with the author of the list. An `A' in the last
+column means that the person is an acquaintance. An `F' in the last
+column means that the person is a friend. An `R' means that the person
+is a relative:
+
+ Amelia 555-5553 amelia.zodiacusque@gmail.com F
+ Anthony 555-3412 anthony.asserturo@hotmail.com A
+ Becky 555-7685 becky.algebrarum@gmail.com A
+ Bill 555-1675 bill.drowning@hotmail.com A
+ Broderick 555-0542 broderick.aliquotiens@yahoo.com R
+ Camilla 555-2912 camilla.infusarum@skynet.be R
+ Fabius 555-1234 fabius.undevicesimus@ucb.edu F
+ Julie 555-6699 julie.perscrutabor@skeeve.com F
+ Martin 555-6480 martin.codicibus@hotmail.com A
+ Samuel 555-3430 samuel.lanceolis@shu.edu A
+ Jean-Paul 555-2127 jeanpaul.campanorum@nyu.edu R
The data file `inventory-shipped' represents information about
shipments during the year. Each record contains the month, the number
@@ -1826,32 +1826,32 @@ File: gawk.info, Node: Very Simple, Next: Two Rules, Prev: Sample Data Files,
========================
The following command runs a simple `awk' program that searches the
-input file `BBS-list' for the character string `foo' (a grouping of
+input file `mail-list' for the character string `li' (a grouping of
characters is usually called a "string"; the term "string" is based on
similar usage in English, such as "a string of pearls," or "a string of
cars in a train"):
- awk '/foo/ { print $0 }' BBS-list
+ awk '/li/ { print $0 }' mail-list
-When lines containing `foo' are found, they are printed because
+When lines containing `li' are found, they are printed because
`print $0' means print the current line. (Just `print' by itself means
the same thing, so we could have written that instead.)
- You will notice that slashes (`/') surround the string `foo' in the
-`awk' program. The slashes indicate that `foo' is the pattern to
-search for. This type of pattern is called a "regular expression",
-which is covered in more detail later (*note Regexp::). The pattern is
-allowed to match parts of words. There are single quotes around the
-`awk' program so that the shell won't interpret any of it as special
-shell characters.
+ You will notice that slashes (`/') surround the string `li' in the
+`awk' program. The slashes indicate that `li' is the pattern to search
+for. This type of pattern is called a "regular expression", which is
+covered in more detail later (*note Regexp::). The pattern is allowed
+to match parts of words. There are single quotes around the `awk'
+program so that the shell won't interpret any of it as special shell
+characters.
Here is what this program prints:
- $ awk '/foo/ { print $0 }' BBS-list
- -| fooey 555-1234 2400/1200/300 B
- -| foot 555-6699 1200/300 B
- -| macfoo 555-6480 1200/300 A
- -| sabafoo 555-2127 1200/300 C
+ $ awk '/li/ { print $0 }' mail-list
+ -| Amelia 555-5553 amelia.zodiacusque@gmail.com F
+ -| Broderick 555-0542 broderick.aliquotiens@yahoo.com R
+ -| Julie 555-6699 julie.perscrutabor@skeeve.com F
+ -| Samuel 555-3430 samuel.lanceolis@shu.edu A
In an `awk' rule, either the pattern or the action can be omitted,
but not both. If the pattern is omitted, then the action is performed
@@ -1860,7 +1860,7 @@ is to print all lines that match the pattern.
Thus, we could leave out the action (the `print' statement and the
curly braces) in the previous example and the result would be the same:
-`awk' prints all lines matching the pattern `foo'. By comparison,
+`awk' prints all lines matching the pattern `li'. By comparison,
omitting the `print' statement but retaining the curly braces makes an
empty action that does nothing (i.e., no lines are printed).
@@ -1966,25 +1966,19 @@ the string `21'. If a line contains both strings, it is printed twice,
once by each rule.
This is what happens if we run this program on our two sample data
-files, `BBS-list' and `inventory-shipped':
+files, `mail-list' and `inventory-shipped':
$ awk '/12/ { print $0 }
- > /21/ { print $0 }' BBS-list inventory-shipped
- -| aardvark 555-5553 1200/300 B
- -| alpo-net 555-3412 2400/1200/300 A
- -| barfly 555-7685 1200/300 A
- -| bites 555-1675 2400/1200/300 A
- -| core 555-2912 1200/300 C
- -| fooey 555-1234 2400/1200/300 B
- -| foot 555-6699 1200/300 B
- -| macfoo 555-6480 1200/300 A
- -| sdace 555-3430 2400/1200/300 A
- -| sabafoo 555-2127 1200/300 C
- -| sabafoo 555-2127 1200/300 C
+ > /21/ { print $0 }' mail-list inventory-shipped
+ -| Anthony 555-3412 anthony.asserturo@hotmail.com A
+ -| Camilla 555-2912 camilla.infusarum@skynet.be R
+ -| Fabius 555-1234 fabius.undevicesimus@ucb.edu F
+ -| Jean-Paul 555-2127 jeanpaul.campanorum@nyu.edu R
+ -| Jean-Paul 555-2127 jeanpaul.campanorum@nyu.edu R
-| Jan 21 36 64 620
-| Apr 21 70 74 514
-Note how the line beginning with `sabafoo' in `BBS-list' was printed
+Note how the line beginning with `Jean-Paul' in `mail-list' was printed
twice, once for each rule.

@@ -2060,7 +2054,7 @@ Most often, each line in an `awk' program is a separate statement or
separate rule, like this:
awk '/12/ { print $0 }
- /21/ { print $0 }' BBS-list inventory-shipped
+ /21/ { print $0 }' mail-list inventory-shipped
However, `gawk' ignores newlines after any of the following symbols
and keywords:
@@ -2480,7 +2474,7 @@ The following list describes options mandated by the POSIX standard:
`--bignum'
Force arbitrary precision arithmetic on numbers. This option has
no effect if `gawk' is not compiled to use the GNU MPFR and MP
- libraries (*note Arbitrary Precision Arithmetic::).
+ libraries (*note Gawk and MPFR::).
`-n'
`--non-decimal-data'
@@ -2748,13 +2742,14 @@ on the command-line with the `-f' option. In most `awk'
implementations, you must supply a precise path name for each program
file, unless the file is in the current directory. But in `gawk', if
the file name supplied to the `-f' or `-i' options does not contain a
-`/', then `gawk' searches a list of directories (called the "search
-path"), one by one, looking for a file with the specified name.
+directory separator `/', then `gawk' searches a list of directories
+(called the "search path"), one by one, looking for a file with the
+specified name.
The search path is a string consisting of directory names separated by
-colons. `gawk' gets its search path from the `AWKPATH' environment
+colons(1). `gawk' gets its search path from the `AWKPATH' environment
variable. If that variable does not exist, `gawk' uses a default path,
-`.:/usr/local/share/awk'.(1)
+`.:/usr/local/share/awk'.(2)
The search path feature is particularly useful for building libraries
of useful `awk' functions. The library files can be placed in a
@@ -2795,7 +2790,9 @@ found, and `gawk' no longer needs to use `AWKPATH'.
---------- Footnotes ----------
- (1) Your version of `gawk' may use a different directory; it will
+ (1) Semicolons on MS-Windows and MS-DOS.
+
+ (2) Your version of `gawk' may use a different directory; it will
depend upon how `gawk' was built and installed. The actual directory is
the value of `$(datadir)' generated when `gawk' was configured. You
probably don't need to worry about this, though.
@@ -3105,14 +3102,14 @@ A regular expression can be used as a pattern by enclosing it in
slashes. Then the regular expression is tested against the entire text
of each record. (Normally, it only needs to match some part of the
text in order to succeed.) For example, the following prints the
-second field of each record that contains the string `foo' anywhere in
+second field of each record that contains the string `li' anywhere in
it:
- $ awk '/foo/ { print $2 }' BBS-list
- -| 555-1234
+ $ awk '/li/ { print $2 }' mail-list
+ -| 555-5553
+ -| 555-0542
-| 555-6699
- -| 555-6480
- -| 555-2127
+ -| 555-3430
Regular expressions can also be used in matching expressions. These
expressions allow you to specify the string to match against; it need
@@ -3920,67 +3917,82 @@ 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:
- awk 'BEGIN { RS = "/" }
- { print $0 }' BBS-list
-
-changes the value of `RS' to `"/"', before reading any input. This is
-a string whose first character is a slash; as a result, records are
-separated by slashes. Then the input file is read, and the second rule
-in the `awk' program (the action with no pattern) prints each record.
-Because each `print' statement adds a newline at the end of its output,
-this `awk' program copies the input with each slash changed to a
-newline. Here are the results of running the program on `BBS-list':
-
- $ awk 'BEGIN { RS = "/" }
- > { print $0 }' BBS-list
- -| aardvark 555-5553 1200
- -| 300 B
- -| alpo-net 555-3412 2400
- -| 1200
- -| 300 A
- -| barfly 555-7685 1200
- -| 300 A
- -| bites 555-1675 2400
- -| 1200
- -| 300 A
- -| camelot 555-0542 300 C
- -| core 555-2912 1200
- -| 300 C
- -| fooey 555-1234 2400
- -| 1200
- -| 300 B
- -| foot 555-6699 1200
- -| 300 B
- -| macfoo 555-6480 1200
- -| 300 A
- -| sdace 555-3430 2400
- -| 1200
- -| 300 A
- -| sabafoo 555-2127 1200
- -| 300 C
+ awk 'BEGIN { RS = "u" }
+ { print $0 }' mail-list
+
+changes the value of `RS' to `u', before reading any input. This is a
+string whose first character is the letter "u;" as a result, records
+are separated by the letter "u." Then the input file is read, and the
+second rule in the `awk' program (the action with no pattern) prints
+each record. Because each `print' statement adds a newline at the end
+of its output, this `awk' program copies the input with each `u'
+changed to a newline. Here are the results of running the program on
+`mail-list':
+
+ $ awk 'BEGIN { RS = "u" }
+ > { print $0 }' mail-list
+ -| Amelia 555-5553 amelia.zodiac
+ -| sq
+ -| e@gmail.com F
+ -| Anthony 555-3412 anthony.assert
+ -| ro@hotmail.com A
+ -| Becky 555-7685 becky.algebrar
+ -| m@gmail.com A
+ -| Bill 555-1675 bill.drowning@hotmail.com A
+ -| Broderick 555-0542 broderick.aliq
+ -| otiens@yahoo.com R
+ -| Camilla 555-2912 camilla.inf
+ -| sar
+ -| m@skynet.be R
+ -| Fabi
+ -| s 555-1234 fabi
+ -| s.
+ -| ndevicesim
+ -| s@
+ -| cb.ed
+ -| F
+ -| J
+ -| lie 555-6699 j
+ -| lie.perscr
+ -| tabor@skeeve.com F
+ -| Martin 555-6480 martin.codicib
+ -| s@hotmail.com A
+ -| Sam
+ -| el 555-3430 sam
+ -| el.lanceolis@sh
+ -| .ed
+ -| A
+ -| Jean-Pa
+ -| l 555-2127 jeanpa
+ -| l.campanor
+ -| m@ny
+ -| .ed
+ -| R
-|
-Note that the entry for the `camelot' BBS is not split. In the
-original data file (*note Sample Data Files::), the line looks like
-this:
+Note that the entry for the name `Bill' is not split. In the original
+data file (*note Sample Data Files::), the line looks like this:
- camelot 555-0542 300 C
+ Bill 555-1675 bill.drowning@hotmail.com A
-It has one baud rate only, so there are no slashes in the record,
-unlike the others which have two or more baud rates. In fact, this
-record is treated as part of the record for the `core' BBS; the newline
+It contains no `u' so there is no reason to split the record, unlike
+the others which have one or more occurrences of the `u'. In fact,
+this record is treated as part of the previous record; the newline
separating them in the output is the original newline in the data file,
not the one added by `awk' when it printed the record!
Another way to change the record separator is on the command line,
using the variable-assignment feature (*note Other Arguments::):
- awk '{ print $0 }' RS="/" BBS-list
+ awk '{ print $0 }' RS="u" mail-list
-This sets `RS' to `/' before processing `BBS-list'.
+This sets `RS' to `u' before processing `mail-list'.
- Using an unusual character such as `/' for the record separator
-produces correct behavior in the vast majority of cases.
+ Using an alphabetic character such as `u' for the record separator
+is highly likely to produce strange results. Using an unusual
+character such as `/' is more likely to produce correct behavior in the
+majority of cases, but there are no guarantees. The moral is: Know Your
+Data.
There is one unusual case, that occurs when `gawk' is being fully
POSIX-compliant (*note Options::). Then, the following (extreme)
@@ -4149,26 +4161,24 @@ get the empty string. (If used in a numeric operation, you get zero.)
field, is a special case: it represents the whole input record when you
are not interested in specific fields. Here are some more examples:
- $ awk '$1 ~ /foo/ { print $0 }' BBS-list
- -| fooey 555-1234 2400/1200/300 B
- -| foot 555-6699 1200/300 B
- -| macfoo 555-6480 1200/300 A
- -| sabafoo 555-2127 1200/300 C
+ $ awk '$1 ~ /li/ { print $0 }' mail-list
+ -| Amelia 555-5553 amelia.zodiacusque@gmail.com F
+ -| Julie 555-6699 julie.perscrutabor@skeeve.com F
-This example prints each record in the file `BBS-list' whose first
-field contains the string `foo'. The operator `~' is called a
-"matching operator" (*note Regexp Usage::); it tests whether a string
-(here, the field `$1') matches a given regular expression.
+This example prints each record in the file `mail-list' whose first
+field contains the string `li'. The operator `~' is called a "matching
+operator" (*note Regexp Usage::); it tests whether a string (here, the
+field `$1') matches a given regular expression.
- By contrast, the following example looks for `foo' in _the entire
+ By contrast, the following example looks for `li' in _the entire
record_ and prints the first field and the last field for each matching
input record:
- $ awk '/foo/ { print $1, $NF }' BBS-list
- -| fooey B
- -| foot B
- -| macfoo A
- -| sabafoo C
+ $ awk '/li/ { print $1, $NF }' mail-list
+ -| Amelia F
+ -| Broderick R
+ -| Julie F
+ -| Samuel A
---------- Footnotes ----------
@@ -4196,16 +4206,16 @@ For the twentieth record, field number 20 is printed; most likely, the
record has fewer than 20 fields, so this prints a blank line. Here is
another example of using expressions as field numbers:
- awk '{ print $(2*2) }' BBS-list
+ awk '{ print $(2*2) }' mail-list
`awk' evaluates the expression `(2*2)' and uses its value as the
number of the field to print. The `*' sign represents multiplication,
so the expression `2*2' evaluates to four. The parentheses are used so
that the multiplication is done before the `$' operation; they are
necessary whenever there is a binary operator in the field-number
-expression. This example, then, prints the hours of operation (the
-fourth field) for every line of the file `BBS-list'. (All of the `awk'
-operators are listed, in order of decreasing precedence, in *note
+expression. This example, then, prints the type of relationship (the
+fourth field) for every line of the file `mail-list'. (All of the
+`awk' operators are listed, in order of decreasing precedence, in *note
Precedence::.)
If the field number you compute is zero, you get the entire record.
@@ -4602,53 +4612,46 @@ type `-F\t' at the shell, without any quotes, the `\' gets deleted, so
TABs and not `t's. Use `-v FS="t"' or `-F"[t]"' on the command line if
you really do want to separate your fields with `t's.
- As an example, let's use an `awk' program file called `baud.awk'
-that contains the pattern `/300/' and the action `print $1':
+ As an example, let's use an `awk' program file called `edu.awk' that
+contains the pattern `/edu/' and the action `print $1':
- /300/ { print $1 }
+ /edu/ { print $1 }
Let's also set `FS' to be the `-' character and run the program on
-the file `BBS-list'. The following command prints a list of the names
-of the bulletin boards that operate at 300 baud and the first three
+the file `mail-list'. The following command prints a list of the names
+of the people that work at or attend a university, and the first three
digits of their phone numbers:
- $ awk -F- -f baud.awk BBS-list
- -| aardvark 555
- -| alpo
- -| barfly 555
- -| bites 555
- -| camelot 555
- -| core 555
- -| fooey 555
- -| foot 555
- -| macfoo 555
- -| sdace 555
- -| sabafoo 555
-
-Note the second line of output. The second line in the original file
+ $ awk -F- -f edu.awk mail-list
+ -| Fabius 555
+ -| Samuel 555
+ -| Jean
+
+Note the third line of output. The third line in the original file
looked like this:
- alpo-net 555-3412 2400/1200/300 A
+ Jean-Paul 555-2127 jeanpaul.campanorum@nyu.edu R
- The `-' as part of the system's name was used as the field
+ The `-' as part of the person's name was used as the field
separator, instead of the `-' in the phone number that was originally
intended. This demonstrates why you have to be careful in choosing
your field and record separators.
Perhaps the most common use of a single character as the field
separator occurs when processing the Unix system password file. On
-many Unix systems, each user has a separate entry in the system password
-file, one line per user. The information in these lines is separated
-by colons. The first field is the user's login name and the second is
-the user's (encrypted or shadow) password. A password file entry might
-look like this:
+many Unix systems, each user has a separate entry in the system
+password file, one line per user. The information in these lines is
+separated by colons. The first field is the user's login name and the
+second is the user's encrypted or shadow password. (A shadow password
+is indicated by the presence of a single `x' in the second field.) A
+password file entry might look like this:
- arnold:xyzzy:2076:10:Arnold Robbins:/home/arnold:/bin/bash
+ arnold:x:2076:10:Arnold Robbins:/home/arnold:/bin/bash
The following program searches the system password file and prints
-the entries for users who have no password:
+the entries for users whose full name is not indicated:
- awk -F: '$2 == ""' /etc/passwd
+ awk -F: '$5 == ""' /etc/passwd

File: gawk.info, Node: Full Line Fields, Next: Field Splitting Summary, Prev: Command Line Field Separator, Up: Field Separators
@@ -5834,13 +5837,29 @@ prints the first and second fields of each input record, separated by a
semicolon, with a blank line added after each newline:
$ awk 'BEGIN { OFS = ";"; ORS = "\n\n" }
- > { print $1, $2 }' BBS-list
- -| aardvark;555-5553
+ > { print $1, $2 }' mail-list
+ -| Amelia;555-5553
-|
- -| alpo-net;555-3412
+ -| Anthony;555-3412
+ -|
+ -| Becky;555-7685
+ -|
+ -| Bill;555-1675
+ -|
+ -| Broderick;555-0542
+ -|
+ -| Camilla;555-2912
+ -|
+ -| Fabius;555-1234
+ -|
+ -| Julie;555-6699
+ -|
+ -| Martin;555-6480
+ -|
+ -| Samuel;555-3430
+ -|
+ -| Jean-Paul;555-2127
-|
- -| barfly;555-7685
- ...
If the value of `ORS' does not contain a newline, the program's
output runs together on a single line.
@@ -6209,25 +6228,25 @@ File: gawk.info, Node: Printf Examples, Prev: Format Modifiers, Up: Printf
The following simple example shows how to use `printf' to make an
aligned table:
- awk '{ printf "%-10s %s\n", $1, $2 }' BBS-list
+ awk '{ printf "%-10s %s\n", $1, $2 }' mail-list
-This command prints the names of the bulletin boards (`$1') in the file
-`BBS-list' as a string of 10 characters that are left-justified. It
+This command prints the names of the people (`$1') in the file
+`mail-list' as a string of 10 characters that are left-justified. It
also prints the phone numbers (`$2') next on the line. This produces
an aligned two-column table of names and phone numbers, as shown here:
- $ awk '{ printf "%-10s %s\n", $1, $2 }' BBS-list
- -| aardvark 555-5553
- -| alpo-net 555-3412
- -| barfly 555-7685
- -| bites 555-1675
- -| camelot 555-0542
- -| core 555-2912
- -| fooey 555-1234
- -| foot 555-6699
- -| macfoo 555-6480
- -| sdace 555-3430
- -| sabafoo 555-2127
+ $ awk '{ printf "%-10s %s\n", $1, $2 }' mail-list
+ -| Amelia 555-5553
+ -| Anthony 555-3412
+ -| Becky 555-7685
+ -| Bill 555-1675
+ -| Broderick 555-0542
+ -| Camilla 555-2912
+ -| Fabius 555-1234
+ -| Julie 555-6699
+ -| Martin 555-6480
+ -| Samuel 555-3430
+ -| Jean-Paul 555-2127
In this case, the phone numbers had to be printed as strings because
the numbers are separated by a dash. Printing the phone numbers as
@@ -6245,14 +6264,14 @@ beginning of the `awk' program:
awk 'BEGIN { print "Name Number"
print "---- ------" }
- { printf "%-10s %s\n", $1, $2 }' BBS-list
+ { printf "%-10s %s\n", $1, $2 }' mail-list
The above example mixes `print' and `printf' statements in the same
program. Using just `printf' statements can produce the same results:
awk 'BEGIN { printf "%-10s %s\n", "Name", "Number"
printf "%-10s %s\n", "----", "------" }
- { printf "%-10s %s\n", $1, $2 }' BBS-list
+ { printf "%-10s %s\n", $1, $2 }' mail-list
Printing each column heading with the same format specification used
for the column elements ensures that the headings are aligned just like
@@ -6264,7 +6283,7 @@ be emphasized by storing it in a variable, like this:
awk 'BEGIN { format = "%-10s %s\n"
printf format, "Name", "Number"
printf format, "----", "------" }
- { printf format, $1, $2 }' BBS-list
+ { printf format, $1, $2 }' mail-list
At this point, it would be a worthwhile exercise to use the `printf'
statement to line up the headings and table data for the
@@ -6304,19 +6323,19 @@ work identically for `printf':
the same OUTPUT-FILE do not erase OUTPUT-FILE, but append to it.
(This is different from how you use redirections in shell scripts.)
If OUTPUT-FILE does not exist, it is created. For example, here
- is how an `awk' program can write a list of BBS names to one file
- named `name-list', and a list of phone numbers to another file
+ is how an `awk' program can write a list of peoples' names to one
+ file named `name-list', and a list of phone numbers to another file
named `phone-list':
$ awk '{ print $2 > "phone-list"
- > print $1 > "name-list" }' BBS-list
+ > print $1 > "name-list" }' mail-list
$ cat phone-list
-| 555-5553
-| 555-3412
...
$ cat name-list
- -| aardvark
- -| alpo-net
+ -| Amelia
+ -| Anthony
...
Each output file contains one name or number per line.
@@ -6337,12 +6356,12 @@ work identically for `printf':
The redirection argument COMMAND is actually an `awk' expression.
Its value is converted to a string whose contents give the shell
command to be run. For example, the following produces two files,
- one unsorted list of BBS names, and one list sorted in reverse
+ one unsorted list of peoples' names, and one list sorted in reverse
alphabetical order:
awk '{ print $1 > "names.unsorted"
command = "sort -r > names.sorted"
- print $1 | command }' BBS-list
+ print $1 | command }' mail-list
The unsorted list is written with an ordinary redirection, while
the sorted list is written by piping through the `sort' utility.
@@ -7072,16 +7091,16 @@ assignment is performed at a time determined by its position among the
input file arguments--after the processing of the preceding input file
argument. For example:
- awk '{ print $n }' n=4 inventory-shipped n=2 BBS-list
+ awk '{ print $n }' n=4 inventory-shipped n=2 mail-list
prints the value of field number `n' for all input records. Before the
first file is read, the command line sets the variable `n' equal to
four. This causes the fourth field to be printed in lines from
`inventory-shipped'. After the first file has finished, but before the
second file is started, `n' is set to two, so that the second field is
-printed in lines from `BBS-list':
+printed in lines from `mail-list':
- $ awk '{ print $n }' n=4 inventory-shipped n=2 BBS-list
+ $ awk '{ print $n }' n=4 inventory-shipped n=2 mail-list
-| 15
-| 24
...
@@ -7342,17 +7361,17 @@ a specific operator to represent it. Instead, concatenation is
performed by writing expressions next to one another, with no operator.
For example:
- $ awk '{ print "Field number one: " $1 }' BBS-list
- -| Field number one: aardvark
- -| Field number one: alpo-net
+ $ awk '{ print "Field number one: " $1 }' mail-list
+ -| Field number one: Amelia
+ -| Field number one: Anthony
...
Without the space in the string constant after the `:', the line
runs together. For example:
- $ awk '{ print "Field number one:" $1 }' BBS-list
- -| Field number one:aardvark
- -| Field number one:alpo-net
+ $ awk '{ print "Field number one:" $1 }' mail-list
+ -| Field number one:Amelia
+ -| Field number one:Anthony
...
Because string concatenation does not have an explicit operator, it
@@ -7998,9 +8017,9 @@ Boolean operators are:
`BOOLEAN1 && BOOLEAN2'
True if both BOOLEAN1 and BOOLEAN2 are true. For example, the
following statement prints the current input record if it contains
- both `2400' and `foo':
+ both `edu' and `li':
- if ($0 ~ /2400/ && $0 ~ /foo/) print
+ if ($0 ~ /edu/ && $0 ~ /li/) print
The subexpression BOOLEAN2 is evaluated only if BOOLEAN1 is true.
This can make a difference when BOOLEAN2 contains expressions that
@@ -8011,9 +8030,9 @@ Boolean operators are:
`BOOLEAN1 || BOOLEAN2'
True if at least one of BOOLEAN1 or BOOLEAN2 is true. For
example, the following statement prints all records in the input
- that contain _either_ `2400' or `foo' or both:
+ that contain _either_ `edu' or `li' or both:
- if ($0 ~ /2400/ || $0 ~ /foo/) print
+ if ($0 ~ /edu/ || $0 ~ /li/) print
The subexpression BOOLEAN2 is evaluated only if BOOLEAN1 is false.
This can make a difference when BOOLEAN2 contains expressions that
@@ -8433,56 +8452,53 @@ operand is either a constant regular expression enclosed in slashes
(`/REGEXP/'), or any expression whose string value is used as a dynamic
regular expression (*note Computed Regexps::). The following example
prints the second field of each input record whose first field is
-precisely `foo':
+precisely `li':
- $ awk '$1 == "foo" { print $2 }' BBS-list
+ $ awk '$1 == "li" { print $2 }' mail-list
-(There is no output, because there is no BBS site with the exact name
-`foo'.) Contrast this with the following regular expression match,
-which accepts any record with a first field that contains `foo':
+(There is no output, because there is no person with the exact name
+`li'.) Contrast this with the following regular expression match, which
+accepts any record with a first field that contains `li':
- $ awk '$1 ~ /foo/ { print $2 }' BBS-list
- -| 555-1234
+ $ awk '$1 ~ /foo/ { print $2 }' mail-list
+ -| 555-5553
-| 555-6699
- -| 555-6480
- -| 555-2127
A regexp constant as a pattern is also a special case of an
-expression pattern. The expression `/foo/' has the value one if `foo'
-appears in the current input record. Thus, as a pattern, `/foo/'
-matches any record containing `foo'.
+expression pattern. The expression `/li/' has the value one if `li'
+appears in the current input record. Thus, as a pattern, `/li/' matches
+any record containing `li'.
Boolean expressions are also commonly used as patterns. Whether the
pattern matches an input record depends on whether its subexpressions
match. For example, the following command prints all the records in
-`BBS-list' that contain both `2400' and `foo':
-
- $ awk '/2400/ && /foo/' BBS-list
- -| fooey 555-1234 2400/1200/300 B
-
- The following command prints all records in `BBS-list' that contain
-_either_ `2400' or `foo' (or both, of course):
-
- $ awk '/2400/ || /foo/' BBS-list
- -| alpo-net 555-3412 2400/1200/300 A
- -| bites 555-1675 2400/1200/300 A
- -| fooey 555-1234 2400/1200/300 B
- -| foot 555-6699 1200/300 B
- -| macfoo 555-6480 1200/300 A
- -| sdace 555-3430 2400/1200/300 A
- -| sabafoo 555-2127 1200/300 C
-
- The following command prints all records in `BBS-list' that do _not_
-contain the string `foo':
-
- $ awk '! /foo/' BBS-list
- -| aardvark 555-5553 1200/300 B
- -| alpo-net 555-3412 2400/1200/300 A
- -| barfly 555-7685 1200/300 A
- -| bites 555-1675 2400/1200/300 A
- -| camelot 555-0542 300 C
- -| core 555-2912 1200/300 C
- -| sdace 555-3430 2400/1200/300 A
+`mail-list' that contain both `edu' and `li':
+
+ $ awk '/edu/ && /li/' mail-list
+ -| Samuel 555-3430 samuel.lanceolis@shu.edu A
+
+ The following command prints all records in `mail-list' that contain
+_either_ `edu' or `li' (or both, of course):
+
+ $ awk '/edu/ || /li/' mail-list
+ -| Amelia 555-5553 amelia.zodiacusque@gmail.com F
+ -| Broderick 555-0542 broderick.aliquotiens@yahoo.com R
+ -| Fabius 555-1234 fabius.undevicesimus@ucb.edu F
+ -| Julie 555-6699 julie.perscrutabor@skeeve.com F
+ -| Samuel 555-3430 samuel.lanceolis@shu.edu A
+ -| Jean-Paul 555-2127 jeanpaul.campanorum@nyu.edu R
+
+ The following command prints all records in `mail-list' that do
+_not_ contain the string `li':
+
+ $ awk '! /li/' mail-list
+ -| Anthony 555-3412 anthony.asserturo@hotmail.com A
+ -| Becky 555-7685 becky.algebrarum@gmail.com A
+ -| Bill 555-1675 bill.drowning@hotmail.com A
+ -| Camilla 555-2912 camilla.infusarum@skynet.be R
+ -| Fabius 555-1234 fabius.undevicesimus@ucb.edu F
+ -| Martin 555-6480 martin.codicibus@hotmail.com A
+ -| Jean-Paul 555-2127 jeanpaul.campanorum@nyu.edu R
The subexpressions of a Boolean operator in a pattern can be
constant regular expressions, comparisons, or any other `awk'
@@ -8559,6 +8575,10 @@ worked around; range patterns do not combine with other patterns:
error--> gawk: cmd. line:1: (/1/,/2/) || /Yes/
error--> gawk: cmd. line:1: ^ syntax error
+ As a minor point of interest, although it is poor style, POSIX
+allows you to put a newline after the comma in a range pattern.
+(d.c.)
+

File: gawk.info, Node: BEGIN/END, Next: BEGINFILE/ENDFILE, Prev: Ranges, Up: Pattern Overview
@@ -8589,19 +8609,19 @@ read. Likewise, an `END' rule is executed once only, after all the
input is read. For example:
$ awk '
- > BEGIN { print "Analysis of \"foo\"" }
- > /foo/ { ++n }
- > END { print "\"foo\" appears", n, "times." }' BBS-list
- -| Analysis of "foo"
- -| "foo" appears 4 times.
-
- This program finds the number of records in the input file `BBS-list'
-that contain the string `foo'. The `BEGIN' rule prints a title for the
-report. There is no need to use the `BEGIN' rule to initialize the
-counter `n' to zero, since `awk' does this automatically (*note
-Variables::). The second rule increments the variable `n' every time a
-record containing the pattern `foo' is read. The `END' rule prints the
-value of `n' at the end of the run.
+ > BEGIN { print "Analysis of \"li\"" }
+ > /li/ { ++n }
+ > END { print "\"li\" appears in", n, "records." }' mail-list
+ -| Analysis of "li"
+ -| "li" appears in 4 records.
+
+ This program finds the number of records in the input file
+`mail-list' that contain the string `li'. The `BEGIN' rule prints a
+title for the report. There is no need to use the `BEGIN' rule to
+initialize the counter `n' to zero, since `awk' does this automatically
+(*note Variables::). The second rule increments the variable `n' every
+time a record containing the pattern `li' is read. The `END' rule
+prints the value of `n' at the end of the run.
The special patterns `BEGIN' and `END' cannot be used in ranges or
with Boolean operators (indeed, they cannot be used with any operators).
@@ -8752,7 +8772,7 @@ File: gawk.info, Node: Empty, Prev: BEGINFILE/ENDFILE, Up: Pattern Overview
An empty (i.e., nonexistent) pattern is considered to match _every_
input record. For example, the program:
- awk '{ print $1 }' BBS-list
+ awk '{ print $1 }' mail-list
prints the first field of every record.
@@ -9116,9 +9136,11 @@ File: gawk.info, Node: Switch Statement, Next: Break Statement, Prev: For Sta
7.4.5 The `switch' Statement
----------------------------
-The `switch' statement allows the evaluation of an expression and the
-execution of statements based on a `case' match. Case statements are
-checked for a match in the order they are defined. If no suitable
+This minor node describes a `gawk'-specific feature.
+
+ The `switch' statement allows the evaluation of an expression and
+the execution of statements based on a `case' match. Case statements
+are checked for a match in the order they are defined. If no suitable
`case' is found, the `default' section is executed, if supplied.
Each `case' contains a single constant, be it numeric, string, or
@@ -9377,12 +9399,12 @@ listed in `ARGV'.
standard. See the Austin Group website
(http://austingroupbugs.net/view.php?id=607).
- The current version of the Brian Kernighan's `awk' (*note Other
-Versions::) also supports `nextfile'. However, it doesn't allow the
-`nextfile' statement inside function bodies (*note User-defined::).
-`gawk' does; a `nextfile' inside a function body reads the next record
-and starts processing it with the first rule in the program, just as
-any other `nextfile' statement.
+ The current version of the Brian Kernighan's `awk', and `mawk'
+(*note Other Versions::) also support `nextfile'. However, they don't
+allow the `nextfile' statement inside function bodies (*note
+User-defined::). `gawk' does; a `nextfile' inside a function body
+reads the next record and starts processing it with the first rule in
+the program, just as any other `nextfile' statement.

File: gawk.info, Node: Exit Statement, Prev: Nextfile Statement, Up: Statements
@@ -9666,13 +9688,13 @@ with a pound sign (`#').
$ awk 'BEGIN {
> for (i = 0; i < ARGC; i++)
> print ARGV[i]
- > }' inventory-shipped BBS-list
+ > }' inventory-shipped mail-list
-| awk
-| inventory-shipped
- -| BBS-list
+ -| mail-list
`ARGV[0]' contains `awk', `ARGV[1]' contains `inventory-shipped',
- and `ARGV[2]' contains `BBS-list'. The value of `ARGC' is three,
+ and `ARGV[2]' contains `mail-list'. The value of `ARGC' is three,
one more than the index of the last element in `ARGV', because the
elements are numbered from zero.
@@ -9862,8 +9884,8 @@ with a pound sign (`#').
The following additional elements in the array are available to
provide information about the MPFR and GMP libraries if your
- version of `gawk' supports arbitrary precision numbers (*note
- Arbitrary Precision Arithmetic::):
+ version of `gawk' supports arbitrary precision numbers (*note Gawk
+ and MPFR::):
`PROCINFO["mpfr_version"]'
The version of the GNU MPFR library.
@@ -9942,7 +9964,7 @@ with a pound sign (`#').
the `delete' statement with the `SYMTAB' array.
You may use an index for `SYMTAB' that is not a predefined
- identifer:
+ identifier:
SYMTAB["xxx"] = 5
print SYMTAB["xxx"]
@@ -10008,13 +10030,13 @@ information contained in `ARGC' and `ARGV':
$ awk 'BEGIN {
> for (i = 0; i < ARGC; i++)
> print ARGV[i]
- > }' inventory-shipped BBS-list
+ > }' inventory-shipped mail-list
-| awk
-| inventory-shipped
- -| BBS-list
+ -| mail-list
In this example, `ARGV[0]' contains `awk', `ARGV[1]' contains
-`inventory-shipped', and `ARGV[2]' contains `BBS-list'. Notice that
+`inventory-shipped', and `ARGV[2]' contains `mail-list'. Notice that
the `awk' program is not entered in `ARGV'. The other command-line
options, with their arguments, are also not entered. This includes
variable assignments done with the `-v' option (*note Options::).
@@ -11261,9 +11283,10 @@ pound sign (`#'):
SOURCE is duplicated into DEST. DEST is then sorted, leaving the
indices of SOURCE unchanged.
- When comparing strings, `IGNORECASE' affects the sorting. If the
- SOURCE array contains subarrays as values (*note Arrays of
- Arrays::), they will come last, after all scalar values.
+ When comparing strings, `IGNORECASE' affects the sorting (*note
+ Array Sorting Functions::). If the SOURCE array contains
+ subarrays as values (*note Arrays of Arrays::), they will come
+ last, after all scalar values.
For example, if the contents of `a' are as follows:
@@ -11302,7 +11325,7 @@ pound sign (`#'):
`$0'. It returns the modified string as the result of the
function and the original target string is _not_ changed.
- `gensub()' is a general substitution function. It's purpose is to
+ `gensub()' is a general substitution function. Its purpose is to
provide more features than the standard `sub()' and `gsub()'
functions.
@@ -11978,10 +12001,10 @@ parameters are enclosed in square brackets ([ ]):
function--`gawk' also buffers its output and the `fflush()'
function forces `gawk' to flush its buffers.
- `fflush()' was added to Brian Kernighan's version of `awk' in 1994.
- For over two decades, it was not part of the POSIX standard. As
- of December, 2012, it was accepted for inclusion into the POSIX
- standard. See the Austin Group website
+ `fflush()' was added to Brian Kernighan's version of `awk' in
+ April of 1992. For two decades, it was not part of the POSIX
+ standard. As of December, 2012, it was accepted for inclusion
+ into the POSIX standard. See the Austin Group website
(http://austingroupbugs.net/view.php?id=634).
POSIX standardizes `fflush()' as follows: If there is no argument,
@@ -12184,7 +12207,8 @@ enclosed in square brackets ([ ]):
Variables::). The default string value is
`"%a %b %e %H:%M:%S %Z %Y"'. This format string produces output
that is equivalent to that of the `date' utility. You can assign
- a new value to `PROCINFO["strftime"]' to change the default format.
+ a new value to `PROCINFO["strftime"]' to change the default
+ format; see below for the various format directives.
`systime()'
Return the current time as the number of seconds since the system
@@ -12597,7 +12621,7 @@ of Arrays::).
traversing a multidimensional array: you can test if an element is
itself an array or not. The second is inside the body of a
user-defined function (not discussed yet; *note User-defined::), to
-test if a paramater is an array or not.
+test if a parameter is an array or not.
Note, however, that using `isarray()' at the global level to test
variables makes no sense. Since you are the one writing the program, you
@@ -12698,7 +12722,7 @@ a parameter with the same name as the function itself.
In addition, according to the POSIX standard, function parameters
cannot have the same name as one of the special built-in variables
(*note Built-in Variables::. Not all versions of `awk' enforce this
-restriction.
+restriction.)
The BODY-OF-FUNCTION consists of `awk' statements. It is the most
important part of the definition, because it says what the function
@@ -12741,8 +12765,8 @@ function. When this happens, we say the function is "recursive". The
act of a function calling itself is called "recursion".
All the built-in functions return a value to their caller.
-User-defined functions can do also, using the `return' statement, which
-is described in detail in *note Return Statement::. Many of the
+User-defined functions can do so also, using the `return' statement,
+which is described in detail in *note Return Statement::. Many of the
subsequent examples in this minor node use the `return' statement.
In many `awk' implementations, including `gawk', the keyword
@@ -12812,7 +12836,8 @@ elements in an array and start over with a new list of elements (*note
Delete::). Instead of having to repeat this loop everywhere that you
need to clear out an array, your program can just call `delarray'.
(This guarantees portability. The use of `delete ARRAY' to delete the
-contents of an entire array is a nonstandard extension.)
+contents of an entire array is a recent(1) addition to the POSIX
+standard.)
The following is an example of a recursive function. It takes a
string as an input parameter and returns the string in backwards order.
@@ -12852,13 +12877,19 @@ an `awk' version of `ctime()':
return strftime(format, ts)
}
+ ---------- Footnotes ----------
+
+ (1) Late in 2012.
+

File: gawk.info, Node: Function Caveats, Next: Return Statement, Prev: Function Example, Up: User-defined
9.2.3 Calling User-Defined Functions
------------------------------------
-This section describes how to call a user-defined function.
+"Calling a function" means causing the function to run and do its job.
+A function call is an expression and its value is the value returned by
+the function.
* Menu:
@@ -12872,16 +12903,12 @@ File: gawk.info, Node: Calling A Function, Next: Variable Scope, Up: Function
9.2.3.1 Writing A Function Call
...............................
-"Calling a function" means causing the function to run and do its job.
-A function call is an expression and its value is the value returned by
-the function.
-
- A function call consists of the function name followed by the
-arguments in parentheses. `awk' expressions are what you write in the
-call for the arguments. Each time the call is executed, these
-expressions are evaluated, and the values become the actual arguments.
-For example, here is a call to `foo()' with three arguments (the first
-being a string concatenation):
+A function call consists of the function name followed by the arguments
+in parentheses. `awk' expressions are what you write in the call for
+the arguments. Each time the call is executed, these expressions are
+evaluated, and the values become the actual arguments. For example,
+here is a call to `foo()' with three arguments (the first being a
+string concatenation):
foo(x y, "lose", 4 * z)
@@ -13276,7 +13303,7 @@ and then a closing right parenthesis, with the addition of a leading `@'
character:
the_func = "sum"
- result = @the_func() # calls the `sum' function
+ result = @the_func() # calls the sum() function
Here is a full program that processes the previously shown data,
using indirect function calls.
@@ -13427,8 +13454,8 @@ order.
Next comes a sorting function. It is parameterized with the
starting and ending field numbers and the comparison function. It
-builds an array with the data and calls `quicksort' appropriately, and
-then formats the results as a single string:
+builds an array with the data and calls `quicksort()' appropriately,
+and then formats the results as a single string:
# do_sort --- sort the data according to `compare'
# and return it as a string
@@ -13628,7 +13655,7 @@ will be accidentally shared with the user's program.
In addition, several of the library functions use a prefix that helps
indicate what function or set of functions use the variables--for
-example, `_pw_byname' in the user database routines (*note Passwd
+example, `_pw_byname()' in the user database routines (*note Passwd
Functions::). This convention is recommended, since it even further
decreases the chance of inadvertent conflict among variable names.
Note that this convention is used equally well for variable names and
@@ -13879,9 +13906,9 @@ File: gawk.info, Node: Round Function, Next: Cliff Random Function, Prev: Ass
The way `printf' and `sprintf()' (*note Printf::) perform rounding
often depends upon the system's C `sprintf()' subroutine. On many
-machines, `sprintf()' rounding is "unbiased," which means it doesn't
-always round a trailing `.5' up, contrary to naive expectations. In
-unbiased rounding, `.5' rounds to even, rather than always up, so 1.5
+machines, `sprintf()' rounding is "unbiased", which means it doesn't
+always round a trailing .5 up, contrary to naive expectations. In
+unbiased rounding, .5 rounds to even, rather than always up, so 1.5
rounds to 2 but 4.5 rounds to 4. This means that if you are using a
format that does rounding (e.g., `"%.0f"'), you should check what your
system does. The following function does traditional rounding; it
@@ -13915,7 +13942,7 @@ might be useful if your `awk''s `printf' does unbiased rounding:
}
# test harness
- { print $0, round($0) }
+ # { print $0, round($0) }

File: gawk.info, Node: Cliff Random Function, Next: Ordinal Functions, Prev: Round Function, Up: General Functions
@@ -13991,8 +14018,8 @@ corresponding character. Both functions are written very nicely in
}
}
- Some explanation of the numbers used by `chr()' is worthwhile. The
-most prominent character set in use today is ASCII.(1) Although an
+ Some explanation of the numbers used by `_ord_init()' is worthwhile.
+The most prominent character set in use today is ASCII.(1) Although an
8-bit byte can hold 256 distinct values (from 0 to 255), ASCII only
defines characters that use the values from 0 to 127.(2) In the now
distant past, at least one minicomputer manufacturer used ASCII, but
@@ -14042,7 +14069,7 @@ tests such as used here prohibitively expensive.
(2) ASCII has been extended in many countries to use the values from
128 to 255 for country-specific characters. If your system uses these
-extensions, you can simplify `_ord_init' to loop from 0 to 255.
+extensions, you can simplify `_ord_init()' to loop from 0 to 255.

File: gawk.info, Node: Join Function, Next: Getlocaltime Function, Prev: Ordinal Functions, Up: General Functions
@@ -14483,7 +14510,7 @@ File: gawk.info, Node: Ignoring Assigns, Prev: Empty Files, Up: Data File Man
Occasionally, you might not want `awk' to process command-line variable
assignments (*note Assignment Options::). In particular, if you have a
-file name that contain an `=' character, `awk' treats the file name as
+file name that contains an `=' character, `awk' treats the file name as
an assignment, and does not process it.
Some users have suggested an additional command-line option for
@@ -14979,7 +15006,7 @@ later. The test can only be true for `gawk'. It is false if using
`FS' or `FPAT', or on some other `awk' implementation.
The code that checks for using `FPAT', using `using_fpat' and
-`PROCINFO["FS"]' is similar.
+`PROCINFO["FS"]', is similar.
The main part of the function uses a loop to read database lines,
split the line into fields, and then store the line into each array as
@@ -14999,9 +15026,9 @@ create the element with the null string as its value:
return _pw_byname[name]
}
- Similarly, the `getpwuid' function takes a user ID number argument.
-If that user number is in the database, it returns the appropriate
-line. Otherwise, it returns the null string:
+ Similarly, the `getpwuid()' function takes a user ID number
+argument. If that user number is in the database, it returns the
+appropriate line. Otherwise, it returns the null string:
function getpwuid(uid)
{
@@ -15348,8 +15375,8 @@ index and value, use the indirect function call syntax (*note Indirect
Calls::) on `process', passing it the index and the value.
When calling `walk_array()', you would pass the name of a
-user-defined function that expects to receive and index and a value,
-and then processes the element.
+user-defined function that expects to receive an index and a value, and
+then processes the element.

File: gawk.info, Node: Sample Programs, Next: Advanced Features, Prev: Library Functions, Up: Top
@@ -15610,7 +15637,7 @@ fields to print are `$1', `$3', and `$5'. The intermediate fields are
the fields to print, and `t' tracks the complete field list, including
filler fields:
- function set_charlist( field, i, j, f, g, t,
+ function set_charlist( field, i, j, f, g, n, m, t,
filler, last, len)
{
field = 1 # count total fields
@@ -16014,9 +16041,9 @@ groups in the `PROCINFO' array have the indices `"group1"' through
However, we don't know in advance how many of these groups there are.
This loop works by starting at one, concatenating the value with
-`"group"', and then using `in' to see if that value is in the array.
-Eventually, `i' is incremented past the last group in the array and the
-loop exits.
+`"group"', and then using `in' to see if that value is in the array
+(*note Reference to Elements::). Eventually, `i' is incremented past
+the last group in the array and the loop exits.
The loop is also correct if there are _no_ supplementary groups;
then the condition is false the first time it's tested, and the loop
@@ -18536,7 +18563,8 @@ regular pipes.
---------- Footnotes ----------
- (1) This is very different from the same operator in the C shell.
+ (1) This is very different from the same operator in the C shell and
+in Bash.

File: gawk.info, Node: TCP/IP Networking, Next: Profiling, Prev: Two-way I/O, Up: Advanced Features
@@ -18674,56 +18702,64 @@ First, the `awk' program:
junk
Here is the `awkprof.out' that results from running the `gawk'
-profiler on this program and data (this example also illustrates that
-`awk' programmers sometimes have to work late):
+profiler on this program and data. (This example also illustrates that
+`awk' programmers sometimes get up very early in the morning to work.)
- # gawk profile, created Sun Aug 13 00:00:15 2000
+ # gawk profile, created Thu Feb 27 05:16:21 2014
- # BEGIN block(s)
+ # BEGIN block(s)
- BEGIN {
- 1 print "First BEGIN rule"
- 1 print "Second BEGIN rule"
- }
+ BEGIN {
+ 1 print "First BEGIN rule"
+ }
- # Rule(s)
+ BEGIN {
+ 1 print "Second BEGIN rule"
+ }
- 5 /foo/ { # 2
- 2 print "matched /foo/, gosh"
- 6 for (i = 1; i <= 3; i++) {
- 6 sing()
- }
- }
+ # Rule(s)
- 5 {
- 5 if (/foo/) { # 2
- 2 print "if is true"
- 3 } else {
- 3 print "else is true"
- }
- }
+ 5 /foo/ { # 2
+ 2 print "matched /foo/, gosh"
+ 6 for (i = 1; i <= 3; i++) {
+ 6 sing()
+ }
+ }
+
+ 5 {
+ 5 if (/foo/) { # 2
+ 2 print "if is true"
+ 3 } else {
+ 3 print "else is true"
+ }
+ }
- # END block(s)
+ # END block(s)
- END {
- 1 print "First END rule"
- 1 print "Second END rule"
- }
+ END {
+ 1 print "First END rule"
+ }
+
+ END {
+ 1 print "Second END rule"
+ }
- # Functions, listed alphabetically
- 6 function sing(dummy)
- {
- 6 print "I gotta be me!"
- }
+ # Functions, listed alphabetically
+
+ 6 function sing(dummy)
+ {
+ 6 print "I gotta be me!"
+ }
This example illustrates many of the basic features of profiling
output. They are as follows:
- * The program is printed in the order `BEGIN' rule, `BEGINFILE' rule,
- pattern/action rules, `ENDFILE' rule, `END' rule and functions,
- listed alphabetically. Multiple `BEGIN' and `END' rules are
- merged together, as are multiple `BEGINFILE' and `ENDFILE' rules.
+ * The program is printed in the order `BEGIN' rules, `BEGINFILE'
+ rules, pattern/action rules, `ENDFILE' rules, `END' rules and
+ functions, listed alphabetically. Multiple `BEGIN' and `END'
+ rules retain their separate identities, as do multiple `BEGINFILE'
+ and `ENDFILE' rules.
* Pattern-action rules have two counts. The first count, to the
left of the rule, shows how many times the rule's pattern was
@@ -18774,8 +18810,7 @@ you typed when you wrote it. This is because `gawk' creates the
profiled version by "pretty printing" its internal representation of
the program. The advantage to this is that `gawk' can produce a
standard representation. The disadvantage is that all source-code
-comments are lost, as are the distinctions among multiple `BEGIN',
-`END', `BEGINFILE', and `ENDFILE' rules. Also, things such as:
+comments are lost. Also, things such as:
/foo/
@@ -18834,6 +18869,9 @@ by the `Ctrl-<\>' key.
called this way, `gawk' "pretty prints" the program into `awkprof.out',
without any execution counts.
+ NOTE: The `--pretty-print' option still runs your program. This
+ will change in the next major release.
+

File: gawk.info, Node: Internationalization, Next: Debugger, Prev: Advanced Features, Up: Top
@@ -19127,9 +19165,9 @@ File: gawk.info, Node: Translator i18n, Next: I18N Example, Prev: Programmer
===============================
Once a program's translatable strings have been marked, they must be
-extracted to create the initial `.po' file. As part of translation, it
-is often helpful to rearrange the order in which arguments to `printf'
-are output.
+extracted to create the initial `.pot' file. As part of translation,
+it is often helpful to rearrange the order in which arguments to
+`printf' are output.
`gawk''s `--gen-pot' command-line option extracts the messages and
is discussed next. After that, `printf''s ability to rearrange the
@@ -19202,7 +19240,7 @@ second:
$ gawk 'BEGIN {
> string = "Dont Panic"
- > printf _"%2$d characters live in \"%1$s\"\n",
+ > printf "%2$d characters live in \"%1$s\"\n",
> string, length(string)
> }'
-| 10 characters live in "Dont Panic"
@@ -19227,7 +19265,7 @@ precision capability:
`gawk' does not allow you to mix regular format specifiers and those
with positional specifiers in the same string:
- $ gawk 'BEGIN { printf _"%d %3$s\n", 1, 2, "hi" }'
+ $ gawk 'BEGIN { printf "%d %3$s\n", 1, 2, "hi" }'
error--> gawk: cmd. line:1: fatal: must use `count$' on all formats or none
NOTE: There are some pathological cases that `gawk' may fail to
@@ -19589,7 +19627,7 @@ File: gawk.info, Node: Debugger Invocation, Next: Finding The Bug, Up: Sample
14.2.1 How to Start the Debugger
--------------------------------
-Starting the debugger is almost exactly like running `awk', except you
+Starting the debugger is almost exactly like running `gawk', except you
have to pass an additional option `--debug' or the corresponding short
option `-D'. The file(s) containing the program and any supporting
code are given on the command line as arguments to one or more `-f'
@@ -19702,8 +19740,8 @@ our test input above. Let's look at `NR':
-| NR = number (2)
So we can see that `are_equal()' was only called for the second record
-of the file. Of course, this is because our program contained a rule
-for `NR == 1':
+of the file. Of course, this is because our program contains a rule for
+`NR == 1':
NR == 1 {
last = $0
@@ -21144,11 +21182,15 @@ need it.
arbitrary precision arithmetic. The easiest way to find out is to look
at the output of the following command:
- $ gawk --version
- -| GNU Awk 4.1.0, API: 1.0 (GNU MPFR 3.1.0-p3, GNU MP 5.0.2)
- -| Copyright (C) 1989, 1991-2013 Free Software Foundation.
+ $ ./gawk --version
+ -| GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.0-p3, GNU MP 5.0.2)
+ -| Copyright (C) 1989, 1991-2014 Free Software Foundation.
...
+(You may see different version numbers than what's shown here. That's
+OK; what's important is to see that GNU MPFR and GNU MP are listed in
+the output.)
+
`gawk' uses the GNU MPFR (http://www.mpfr.org) and GNU MP
(http://gmplib.org) (GMP) libraries for arbitrary precision arithmetic
on numbers. So if you do not see the names of these libraries in the
@@ -21518,7 +21560,7 @@ floating-point value to begin with:
gawk -M 'BEGIN { n = 13.0; print n % 2.0 }'
- Note that for the particular example above, there is likely best to
+ Note that for the particular example above, it is likely best to
just use the following:
gawk -M 'BEGIN { n = 13; print n % 2 }'
@@ -21722,6 +21764,7 @@ This (rather large) minor node describes the API in detail.
* Extension API Functions Introduction:: Introduction to the API functions.
* General Data Types:: The data types.
* Requesting Values:: How to get a value.
+* Memory Allocation Functions:: Functions for allocating memory.
* Constructor Functions:: Functions for creating values.
* Registration Functions:: Functions to register things with
`gawk'.
@@ -21770,6 +21813,8 @@ operations:
* Symbol table access: retrieving a global variable, creating one,
or changing one.
+ * Allocating, reallocating, and releasing memory.
+
* Creating and releasing cached values; this provides an efficient
way to use values for multiple variables and can be a big
performance win.
@@ -21798,10 +21843,8 @@ operations:
`EOF' `<stdio.h>'
`FILE' `<stdio.h>'
`NULL' `<stddef.h>'
- `malloc()' `<stdlib.h>'
`memcpy()' `<string.h>'
`memset()' `<string.h>'
- `realloc()' `<stdlib.h>'
`size_t' `<sys/types.h>'
`struct stat' `<sys/stat.h>'
@@ -21827,7 +21870,9 @@ operations:
* All pointers filled in by `gawk' are to memory managed by `gawk'
and should be treated by the extension as read-only. Memory for
_all_ strings passed into `gawk' from the extension _must_ come
- from `malloc()' and is managed by `gawk' from then on.
+ from calling the API-provided function pointers `api_malloc()',
+ `api_calloc()' or `api_realloc()', and is managed by `gawk' from
+ then on.
* The API defines several simple `struct's that map values as seen
from `awk'. A value can be a `double', a string, or an array (as
@@ -21899,7 +21944,9 @@ that use them.
`} awk_string_t;'
This represents a mutable string. `gawk' owns the memory pointed
to if it supplied the value. Otherwise, it takes ownership of the
- memory pointed to. *Such memory must come from `malloc()'!*
+ memory pointed to. *Such memory must come from calling the
+ API-provided function pointers `api_malloc()', `api_calloc()', or
+ `api_realloc()'!*
As mentioned earlier, strings are maintained using the current
multibyte encoding.
@@ -22004,7 +22051,7 @@ the value.
See also the entry for "Cookie" in the *note Glossary::.

-File: gawk.info, Node: Requesting Values, Next: Constructor Functions, Prev: General Data Types, Up: Extension API Description
+File: gawk.info, Node: Requesting Values, Next: Memory Allocation Functions, Prev: General Data Types, Up: Extension API Description
16.4.3 Requesting Values
------------------------
@@ -22037,46 +22084,43 @@ Requested: Scalar Scalar Scalar false false
Table 16.1: Value Types Returned

-File: gawk.info, Node: Constructor Functions, Next: Registration Functions, Prev: Requesting Values, Up: Extension API Description
+File: gawk.info, Node: Memory Allocation Functions, Next: Constructor Functions, Prev: Requesting Values, Up: Extension API Description
-16.4.4 Constructor Functions and Convenience Macros
----------------------------------------------------
+16.4.4 Memory Allocation Functions and Convenience Macros
+---------------------------------------------------------
-The API provides a number of "constructor" functions for creating
-string and numeric values, as well as a number of convenience macros.
-This node presents them all as function prototypes, in the way that
-extension code would use them.
+The API provides a number of "memory allocation" functions for
+allocating memory that can be passed to `gawk', as well as a number of
+convenience macros.
-`static inline awk_value_t *'
-`make_const_string(const char *string, size_t length, awk_value_t *result)'
- This function creates a string value in the `awk_value_t' variable
- pointed to by `result'. It expects `string' to be a C string
- constant (or other string data), and automatically creates a
- _copy_ of the data for storage in `result'. It returns `result'.
+`void *gawk_malloc(size_t size);'
+ Call `gawk'-provided `api_malloc()' to allocate storage that may
+ be passed to `gawk'.
-`static inline awk_value_t *'
-`make_malloced_string(const char *string, size_t length, awk_value_t *result)'
- This function creates a string value in the `awk_value_t' variable
- pointed to by `result'. It expects `string' to be a `char *' value
- pointing to data previously obtained from `malloc()'. The idea here
- is that the data is passed directly to `gawk', which assumes
- responsibility for it. It returns `result'.
+`void *gawk_calloc(size_t nmemb, size_t size);'
+ Call `gawk'-provided `api_calloc()' to allocate storage that may
+ be passed to `gawk'.
-`static inline awk_value_t *'
-`make_null_string(awk_value_t *result)'
- This specialized function creates a null string (the "undefined"
- value) in the `awk_value_t' variable pointed to by `result'. It
- returns `result'.
+`void *gawk_realloc(void *ptr, size_t size);'
+ Call `gawk'-provided `api_realloc()' to allocate storage that may
+ be passed to `gawk'.
-`static inline awk_value_t *'
-`make_number(double num, awk_value_t *result)'
- This function simply creates a numeric value in the `awk_value_t'
- variable pointed to by `result'.
+`void gawk_free(void *ptr);'
+ Call `gawk'-provided `api_free()' to release storage that was
+ allocated with `gawk_malloc()', `gawk_calloc()' or
+ `gawk_realloc()'.
- Two convenience macros may be used for allocating storage from
-`malloc()' and `realloc()'. If the allocation fails, they cause `gawk'
-to exit with a fatal error message. They should be used as if they were
-procedure calls that do not return a value.
+ The API has to provide these functions because it is possible for an
+extension to be compiled and linked against a different version of the
+C library than was used for the `gawk' executable.(1) If `gawk' were to
+use its version of `free()' when the memory came from an unrelated
+version of `malloc()', unexpected behavior would likely result.
+
+ Two convenience macros may be used for allocating storage from the
+API-provided function pointers `api_malloc()' and `api_realloc()'. If
+the allocation fails, they cause `gawk' to exit with a fatal error
+message. They should be used as if they were procedure calls that do
+not return a value.
`#define emalloc(pointer, type, size, message) ...'
The arguments to this macro are as follows:
@@ -22085,7 +22129,7 @@ procedure calls that do not return a value.
`type'
The type of the pointer variable, used to create a cast for
- the call to `malloc()'.
+ the call to `api_malloc()'.
`size'
The total number of bytes to be allocated.
@@ -22105,14 +22149,57 @@ procedure calls that do not return a value.
make_malloced_string(message, strlen(message), & result);
`#define erealloc(pointer, type, size, message) ...'
- This is like `emalloc()', but it calls `realloc()', instead of
- `malloc()'. The arguments are the same as for the `emalloc()'
+ This is like `emalloc()', but it calls `api_realloc()', instead of
+ `api_malloc()'. The arguments are the same as for the `emalloc()'
macro.
+ ---------- Footnotes ----------
+
+ (1) This is more common on MS-Windows systems, but can happen on
+Unix-like systems as well.
+
+
+File: gawk.info, Node: Constructor Functions, Next: Registration Functions, Prev: Memory Allocation Functions, Up: Extension API Description
+
+16.4.5 Constructor Functions
+----------------------------
+
+The API provides a number of "constructor" functions for creating
+string and numeric values, as well as a number of convenience macros.
+This node presents them all as function prototypes, in the way that
+extension code would use them.
+
+`static inline awk_value_t *'
+`make_const_string(const char *string, size_t length, awk_value_t *result)'
+ This function creates a string value in the `awk_value_t' variable
+ pointed to by `result'. It expects `string' to be a C string
+ constant (or other string data), and automatically creates a
+ _copy_ of the data for storage in `result'. It returns `result'.
+
+`static inline awk_value_t *'
+`make_malloced_string(const char *string, size_t length, awk_value_t *result)'
+ This function creates a string value in the `awk_value_t' variable
+ pointed to by `result'. It expects `string' to be a `char *' value
+ pointing to data previously obtained from the api-provided
+ functions `api_malloc()', `api_calloc()' or `api_realloc()'. The
+ idea here is that the data is passed directly to `gawk', which
+ assumes responsibility for it. It returns `result'.
+
+`static inline awk_value_t *'
+`make_null_string(awk_value_t *result)'
+ This specialized function creates a null string (the "undefined"
+ value) in the `awk_value_t' variable pointed to by `result'. It
+ returns `result'.
+
+`static inline awk_value_t *'
+`make_number(double num, awk_value_t *result)'
+ This function simply creates a numeric value in the `awk_value_t'
+ variable pointed to by `result'.
+

File: gawk.info, Node: Registration Functions, Next: Printing Messages, Prev: Constructor Functions, Up: Extension API Description
-16.4.5 Registration Functions
+16.4.6 Registration Functions
-----------------------------
This minor node describes the API functions for registering parts of
@@ -22130,7 +22217,7 @@ your extension with `gawk'.

File: gawk.info, Node: Extension Functions, Next: Exit Callback Functions, Up: Registration Functions
-16.4.5.1 Registering An Extension Function
+16.4.6.1 Registering An Extension Function
..........................................
Extension functions are described by the following record:
@@ -22155,8 +22242,10 @@ Extension functions are described by the following record:
`awk_value_t *(*function)(int num_actual_args, awk_value_t *result);'
This is a pointer to the C function that provides the desired
functionality. The function must fill in the result with either a
- number or a string. `awk' takes ownership of any string memory.
- As mentioned earlier, string memory *must* come from `malloc()'.
+ number or a string. `gawk' takes ownership of any string memory.
+ As mentioned earlier, string memory *must* come from the
+ api-provided functions `api_malloc()', `api_calloc()' or
+ `api_realloc()'.
The `num_actual_args' argument tells the C function how many
actual parameters were passed from the calling `awk' code.
@@ -22182,7 +22271,7 @@ register it with `gawk' using this API function:

File: gawk.info, Node: Exit Callback Functions, Next: Extension Version String, Prev: Extension Functions, Up: Registration Functions
-16.4.5.2 Registering An Exit Callback Function
+16.4.6.2 Registering An Exit Callback Function
..............................................
An "exit callback" function is a function that `gawk' calls before it
@@ -22211,7 +22300,7 @@ order--that is, in the reverse order in which they are registered with

File: gawk.info, Node: Extension Version String, Next: Input Parsers, Prev: Exit Callback Functions, Up: Registration Functions
-16.4.5.3 Registering An Extension Version String
+16.4.6.3 Registering An Extension Version String
................................................
You can register a version string which indicates the name and version
@@ -22227,7 +22316,7 @@ invoked with the `--version' option.

File: gawk.info, Node: Input Parsers, Next: Output Wrappers, Prev: Extension Version String, Up: Registration Functions
-16.4.5.4 Customized Input Parsers
+16.4.6.4 Customized Input Parsers
.................................
By default, `gawk' reads text files as its input. It uses the value of
@@ -22449,7 +22538,7 @@ whether or not to activate an input parser (*note BEGINFILE/ENDFILE::).

File: gawk.info, Node: Output Wrappers, Next: Two-way processors, Prev: Input Parsers, Up: Registration Functions
-16.4.5.5 Customized Output Wrappers
+16.4.6.5 Customized Output Wrappers
...................................
An "output wrapper" is the mirror image of an input parser. It allows
@@ -22556,7 +22645,7 @@ normally.

File: gawk.info, Node: Two-way processors, Prev: Output Wrappers, Up: Registration Functions
-16.4.5.6 Customized Two-way Processors
+16.4.6.6 Customized Two-way Processors
......................................
A "two-way processor" combines an input parser and an output wrapper for
@@ -22609,7 +22698,7 @@ can take this" and "take over for this" functions,

File: gawk.info, Node: Printing Messages, Next: Updating `ERRNO', Prev: Registration Functions, Up: Extension API Description
-16.4.6 Printing Messages
+16.4.7 Printing Messages
------------------------
You can print different kinds of warning messages from your extension,
@@ -22640,7 +22729,7 @@ the pity.

File: gawk.info, Node: Updating `ERRNO', Next: Accessing Parameters, Prev: Printing Messages, Up: Extension API Description
-16.4.7 Updating `ERRNO'
+16.4.8 Updating `ERRNO'
-----------------------
The following functions allow you to update the `ERRNO' variable:
@@ -22661,7 +22750,7 @@ The following functions allow you to update the `ERRNO' variable:

File: gawk.info, Node: Accessing Parameters, Next: Symbol Table Access, Prev: Updating `ERRNO', Up: Extension API Description
-16.4.8 Accessing and Updating Parameters
+16.4.9 Accessing and Updating Parameters
----------------------------------------
Two functions give you access to the arguments (parameters) passed to
@@ -22687,8 +22776,8 @@ your extension function. They are:

File: gawk.info, Node: Symbol Table Access, Next: Array Manipulation, Prev: Accessing Parameters, Up: Extension API Description
-16.4.9 Symbol Table Access
---------------------------
+16.4.10 Symbol Table Access
+---------------------------
Two sets of routines provide access to global variables, and one set
allows you to create and release cached values.
@@ -22702,8 +22791,8 @@ allows you to create and release cached values.

File: gawk.info, Node: Symbol table by name, Next: Symbol table by cookie, Up: Symbol Table Access
-16.4.9.1 Variable Access and Update by Name
-...........................................
+16.4.10.1 Variable Access and Update by Name
+............................................
The following routines provide the ability to access and update global
`awk'-level variables by name. In compiler terminology, identifiers of
@@ -22735,11 +22824,16 @@ termed a "symbol table".
However, with the exception of the `PROCINFO' array, an extension
cannot change any of those variables.
+ NOTE: It is possible for the lookup of `PROCINFO' to fail. This
+ happens if the `awk' program being run does not reference
+ `PROCINFO'; in this case `gawk' doesn't bother to create the array
+ and populate it.
+

File: gawk.info, Node: Symbol table by cookie, Next: Cached values, Prev: Symbol table by name, Up: Symbol Table Access
-16.4.9.2 Variable Access and Update by Cookie
-.............................................
+16.4.10.2 Variable Access and Update by Cookie
+..............................................
A "scalar cookie" is an opaque handle that provides access to a global
variable or array. It is an optimization that avoids looking up
@@ -22851,8 +22945,8 @@ like this:

File: gawk.info, Node: Cached values, Prev: Symbol table by cookie, Up: Symbol Table Access
-16.4.9.3 Creating and Using Cached Values
-.........................................
+16.4.10.3 Creating and Using Cached Values
+..........................................
The routines in this section allow you to create and release cached
values. As with scalar cookies, in theory, cached values are not
@@ -22862,8 +22956,9 @@ variables using `sym_update()' or `sym_update_scalar()', as you like.
However, you can understand the point of cached values if you
remember that _every_ string value's storage _must_ come from
-`malloc()'. If you have 20 variables, all of which have the same
-string value, you must create 20 identical copies of the string.(1)
+`api_malloc()', `api_calloc()' or `api_realloc()'. If you have 20
+variables, all of which have the same string value, you must create 20
+identical copies of the string.(1)
It is clearly more efficient, if possible, to create a value once,
and then tell `gawk' to reuse the value for multiple variables. That is
@@ -22946,7 +23041,7 @@ using `release_value()'.

File: gawk.info, Node: Array Manipulation, Next: Extension API Variables, Prev: Symbol Table Access, Up: Extension API Description
-16.4.10 Array Manipulation
+16.4.11 Array Manipulation
--------------------------
The primary data structure(1) in `awk' is the associative array (*note
@@ -22973,7 +23068,7 @@ arrays of arrays (*note General Data Types::).

File: gawk.info, Node: Array Data Types, Next: Array Functions, Up: Array Manipulation
-16.4.10.1 Array Data Types
+16.4.11.1 Array Data Types
..........................
The data types associated with arrays are listed below.
@@ -23040,7 +23135,7 @@ overuse this term.

File: gawk.info, Node: Array Functions, Next: Flattening Arrays, Prev: Array Data Types, Up: Array Manipulation
-16.4.10.2 Array Functions
+16.4.11.2 Array Functions
.........................
The following functions relate to individual array elements.
@@ -23066,7 +23161,8 @@ The following functions relate to individual array elements.
strings (*note Conversion::); thus using integral values is safest.
As with _all_ strings passed into `gawk' from an extension, the
- string value of `index' must come from `malloc()', and `gawk'
+ string value of `index' must come from the API-provided functions
+ `api_malloc()', `api_calloc()' or `api_realloc()' and `gawk'
releases the storage.
`awk_bool_t set_array_element(awk_array_t a_cookie,'
@@ -23117,7 +23213,7 @@ The following functions relate to individual array elements.

File: gawk.info, Node: Flattening Arrays, Next: Creating Arrays, Prev: Array Functions, Up: Array Manipulation
-16.4.10.3 Working With All The Elements of an Array
+16.4.11.3 Working With All The Elements of an Array
...................................................
To "flatten" an array is create a structure that represents the full
@@ -23291,7 +23387,7 @@ return value to success, and returns:

File: gawk.info, Node: Creating Arrays, Prev: Flattening Arrays, Up: Array Manipulation
-16.4.10.4 How To Create and Populate Arrays
+16.4.11.4 How To Create and Populate Arrays
...........................................
Besides working with arrays created by `awk' code, you can create
@@ -23430,7 +23526,7 @@ environment variable.)

File: gawk.info, Node: Extension API Variables, Next: Extension API Boilerplate, Prev: Array Manipulation, Up: Extension API Description
-16.4.11 API Variables
+16.4.12 API Variables
---------------------
The API provides two sets of variables. The first provides information
@@ -23447,7 +23543,7 @@ information about how `gawk' was invoked.

File: gawk.info, Node: Extension Versioning, Next: Extension API Informational Variables, Up: Extension API Variables
-16.4.11.1 API Version Constants and Variables
+16.4.12.1 API Version Constants and Variables
.............................................
The API provides both a "major" and a "minor" version number. The API
@@ -23496,7 +23592,7 @@ Boilerplate::).

File: gawk.info, Node: Extension API Informational Variables, Prev: Extension Versioning, Up: Extension API Variables
-16.4.11.2 Informational Variables
+16.4.12.2 Informational Variables
.................................
The API provides access to several variables that describe whether the
@@ -23532,7 +23628,7 @@ change during execution.

File: gawk.info, Node: Extension API Boilerplate, Prev: Extension API Variables, Up: Extension API Description
-16.4.12 Boilerplate Code
+16.4.13 Boilerplate Code
------------------------
As mentioned earlier (*note Extension Mechanism Outline::), the function
@@ -24050,7 +24146,7 @@ declarations and argument checking:
awk_array_t array;
int ret;
struct stat sbuf;
- /* default is stat() */
+ /* default is lstat() */
int (*statfunc)(const char *path, struct stat *sbuf) = lstat;
assert(result != NULL);
@@ -24448,12 +24544,16 @@ File: gawk.info, Node: Extension Sample Fnmatch, Next: Extension Sample Fork,
This extension provides an interface to the C library `fnmatch()'
function. The usage is:
- @load "fnmatch"
+`@load "fnmatch"'
+ This is how you load the extension.
- result = fnmatch(pattern, string, flags)
+`result = fnmatch(pattern, string, flags)'
+ The return value is zero on success, `FNM_NOMATCH' if the string
+ did not match the pattern, or a different non-zero value if an
+ error occurred.
- The `fnmatch' extension adds a single function named `fnmatch()',
-one constant (`FNM_NOMATCH'), and an array of flag values named `FNM'.
+ Besides the `fnmatch()' function, the `fnmatch' extension adds one
+constant (`FNM_NOMATCH'), and an array of flag values named `FNM'.
The arguments to `fnmatch()' are:
@@ -24467,10 +24567,6 @@ one constant (`FNM_NOMATCH'), and an array of flag values named `FNM'.
Either zero, or the bitwise OR of one or more of the flags in the
`FNM' array.
- The return value is zero on success, `FNM_NOMATCH' if the string did
-not match the pattern, or a different non-zero value if an error
-occurred.
-
The flags are follows:
`FNM["CASEFOLD"]' Corresponds to the `FNM_CASEFOLD' flag as defined in
@@ -24506,14 +24602,14 @@ The `fork' extension adds three functions, as follows.
This is how you load the extension.
`pid = fork()'
- This function creates a new process. The return value is the zero
- in the child and the process-id number of the child in the parent,
- or -1 upon error. In the latter case, `ERRNO' indicates the
- problem. In the child, `PROCINFO["pid"]' and `PROCINFO["ppid"]'
- are updated to reflect the correct values.
+ This function creates a new process. The return value is zero in
+ the child and the process-ID number of the child in the parent, or
+ -1 upon error. In the latter case, `ERRNO' indicates the problem.
+ In the child, `PROCINFO["pid"]' and `PROCINFO["ppid"]' are updated
+ to reflect the correct values.
`ret = waitpid(pid)'
- This function takes a numeric argument, which is the process-id to
+ This function takes a numeric argument, which is the process-ID to
wait for. The return value is that of the `waitpid()' system call.
`ret = wait()'
@@ -24746,7 +24842,8 @@ File: gawk.info, Node: Extension Sample Readfile, Next: Extension Sample API T
16.7.10 Reading An Entire File
------------------------------
-The `readfile' extension adds a single function named `readfile()':
+The `readfile' extension adds a single function named `readfile()', and
+an input parser:
`@load "readfile"'
This is how you load the extension.
@@ -24756,6 +24853,12 @@ The `readfile' extension adds a single function named `readfile()':
a string containing the entire contents of the requested file.
Upon error, the function returns the empty string and sets `ERRNO'.
+`BEGIN { PROCINFO["readfile"] = 1 }'
+ In addition, the extension adds an input parser that is activated
+ if `PROCINFO["readfile"]' exists. When activated, each input file
+ is returned in its entirety as `$0'. `RT' is set to the null
+ string.
+
Here is an example:
@load "readfile"
@@ -25603,7 +25706,7 @@ in POSIX `awk', in the order they were added to `gawk'.
- The `-i' and `--include' options load `awk' library files.
- - The `-l' and `--load' options for load compiled dynamic
+ - The `-l' and `--load' options load compiled dynamic
extensions.
- The `-M' and `--bignum' options enable MPFR.
@@ -25617,8 +25720,9 @@ in POSIX `awk', in the order they were added to `gawk'.
* Support for high precision arithmetic with MPFR. (*note Gawk and
MPFR::).
- * The `and()', `or()' and `xor()' functions allow any number of
- arguments, with a minimum of two (*note Bitwise Functions::).
+ * The `and()', `or()' and `xor()' functions changed to allow any
+ number of arguments, with a minimum of two (*note Bitwise
+ Functions::).
* The dynamic extension interface was completely redone (*note
Dynamic Extensions::).
@@ -25637,18 +25741,18 @@ available versions of `awk' (*note Other Versions::).
Feature BWK Awk Mawk GNU Awk
--------------------------------------------------------
`\x' Escape sequence X X X
-`RS' as regexp X X
`FS' as null string X X X
`/dev/stdin' special file X X X
`/dev/stdout' special file X X X
`/dev/stderr' special file X X X
-`**' and `**=' operators X X
-`fflush()' function X X X
-`func' keyword X X
-`nextfile' statement X X X
`delete' without subscript X X X
+`fflush()' function X X X
`length()' of an array X X X
+`nextfile' statement X X X
+`**' and `**=' operators X X
+`func' keyword X X
`BINMODE' variable X X
+`RS' as regexp X X
Time related functions X X
(Technically speaking, as of late 2012, `fflush()', `delete ARRAY',
@@ -25681,7 +25785,7 @@ as working in this fashion, and in particular, would teach that the
`[A-Z]' was the "correct" way to match uppercase letters. And indeed,
this was true.(1)
- The 1993 POSIX standard introduced the idea of locales (*note
+ The 1992 POSIX standard introduced the idea of locales (*note
Locales::). Since many locales include other letters besides the plain
twenty-six letters of the American English alphabet, the POSIX standard
added character classes (*note Bracket Expressions::) as a way to match
@@ -25744,17 +25848,17 @@ of range expressions was _undefined_.(3)
By using this lovely technical term, the standard gives license to
implementors to implement ranges in whatever way they choose. The
`gawk' maintainer chose to apply the pre-POSIX meaning in all cases:
-the default regexp matching; with `--traditional', and with `--posix';
+the default regexp matching; with `--traditional' and with `--posix';
in all cases, `gawk' remains POSIX compliant.
---------- Footnotes ----------
(1) And Life was good.
- (2) And thus was born the Campain for Rational Range Interpretation
-(or RRI). A number of GNU tools, such as `grep' and `sed', have either
-implemented this change, or will soon. Thanks to Karl Berry for
-coining the phrase "Rational Range Interpretation."
+ (2) And thus was born the Campaign for Rational Range Interpretation
+(or RRI). A number of GNU tools have either implemented this change, or
+will soon. Thanks to Karl Berry for coining the phrase "Rational Range
+Interpretation."
(3) See the standard
(http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_03_05)
@@ -25866,6 +25970,9 @@ Info file, in approximate chronological order:
* Anders Wallin helped keep the VMS port going for several years.
+ * Assaf Gordon contributed the code to implement the `--sandbox'
+ option.
+
* John Haque made the following contributions:
- The modifications to convert `gawk' into a byte-code
@@ -25893,6 +26000,10 @@ Info file, in approximate chronological order:
4.1 was driven primarily by Arnold Robbins and Andrew Schorr, with
notable contributions from the rest of the development team.
+ * Antonio Giovanni Colombo rewrote a number of examples in the early
+ chapters that were severely dated, for which I am incredibly
+ grateful.
+
* Arnold Robbins has been working on `gawk' since 1988, at first
helping David Trueman, and as the primary maintainer since around
1994.
@@ -25949,7 +26060,7 @@ There are three ways to get GNU software:
supported. If you have the `wget' program, you can use a command
like the following:
- wget http://ftp.gnu.org/gnu/gawk/gawk-4.1.0.tar.gz
+ wget http://ftp.gnu.org/gnu/gawk/gawk-4.1.1.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 web site
@@ -25968,26 +26079,26 @@ compression programs: `gzip', `bzip2', and `xz'. For simplicity, the
rest of these instructions assume you are using the one compressed with
the GNU Zip program, `gzip'.
- Once you have the distribution (for example, `gawk-4.1.0.tar.gz'),
+ Once you have the distribution (for example, `gawk-4.1.1.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:
# Under System V, add 'o' to the tar options
- gzip -d -c gawk-4.1.0.tar.gz | tar -xvpf -
+ gzip -d -c gawk-4.1.1.tar.gz | tar -xvpf -
On a system with GNU `tar', you can let `tar' do the decompression
for you:
- tar -xvpzf gawk-4.1.0.tar.gz
+ tar -xvpzf gawk-4.1.1.tar.gz
-Extracting the archive creates a directory named `gawk-4.1.0' in the
+Extracting the archive creates a directory named `gawk-4.1.1' 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 0, but when retrieving distributions, you should get the
+level is 1, 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 70 denote "beta" or
nonproduction software; you might not want to retrieve such a version
@@ -26197,7 +26308,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-4.1.0'. Like most GNU software, `gawk' is configured
+`gawk-4.1.1'. Like most GNU software, `gawk' is configured
automatically 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
@@ -26236,8 +26347,8 @@ failure is not described there, please send in a bug report (*note
Bugs::).
Of course, once you've built `gawk', it is likely that you will wish
-to install it. To do so, you need to run the command `make check', as
-a user with the appropriate permissions. How to do this varies by
+to install it. To do so, you need to run the command `make install',
+as a user with the appropriate permissions. How to do this varies by
system, but on many systems you can use the `sudo' command to do so.
The command then becomes `sudo make install'. It is likely that you
will be asked for your password, and you will have to have been set up
@@ -26520,10 +26631,9 @@ File: gawk.info, Node: PC Using, Next: Cygwin, Prev: PC Testing, Up: PC Inst
B.3.1.4 Using `gawk' on PC Operating Systems
............................................
-With the exception of the Cygwin environment, the `|&' operator and
-TCP/IP networking (*note TCP/IP Networking::) are not supported for
-MS-DOS or MS-Windows. EMX (OS/2 only) does support at least the `|&'
-operator.
+Under MS-DOS and MS-Windows, the Cygwin and MinGW environments support
+both the `|&' operator and TCP/IP networking (*note TCP/IP
+Networking::). EMX (OS/2 only) supports at least the `|&' operator.
The MS-DOS and MS-Windows versions of `gawk' search for program
files as described in *note AWKPATH Variable::. However, semicolons
@@ -26616,13 +26726,13 @@ B.3.1.5 Using `gawk' In The Cygwin Environment
`gawk' can be built and used "out of the box" under MS-Windows if you
are using the Cygwin environment (http://www.cygwin.com). This
-environment provides an excellent simulation of Unix, using the GNU
-tools, such as Bash, the GNU Compiler Collection (GCC), GNU Make, and
-other GNU programs. Compilation and installation for Cygwin is the
+environment provides an excellent simulation of GNU/Linux, using the
+GNU tools, such as Bash, the GNU Compiler Collection (GCC), GNU Make,
+and other GNU programs. Compilation and installation for Cygwin is the
same as for a Unix system:
- tar -xvpzf gawk-4.1.0.tar.gz
- cd gawk-4.1.0
+ tar -xvpzf gawk-4.1.1.tar.gz
+ cd gawk-4.1.1
./configure
make
@@ -26630,10 +26740,6 @@ same as for a Unix system:
on Cygwin takes considerably longer. However, it does finish, and then
the `make' proceeds as usual.
- NOTE: The `|&' operator and TCP/IP networking (*note TCP/IP
- Networking::) are fully supported in the Cygwin environment. This
- is not true for any other environment on MS-Windows.
-

File: gawk.info, Node: MSYS, Prev: Cygwin, Up: PC Installation
@@ -26695,20 +26801,13 @@ available from `https://github.com/endlesssoftware/mmk'.
With `ODS-5' volumes and extended parsing enabled, the case of the
target parameter may need to be exact.
- Older versions of `gawk' could be built with VAX C or GNU C on
-VAX/VMS, as well as with DEC C, but that is no longer supported. DEC C
-(also briefly known as "Compaq C" and now known as "HP C," but referred
-to here as "DEC C") is required. Both `vmsbuild.com' and `descrip.mms'
-contain some obsolete support for the older compilers but are set up to
-use DEC C by default.
-
`gawk' has been tested under VAX/VMS 7.3 and Alpha/VMS 7.3-1 using
Compaq C V6.4, and Alpha/VMS 7.3, Alpha/VMS 7.3-2, and IA64/VMS 8.3.
The most recent builds used HP C V7.3 on Alpha VMS 8.3 and both Alpha
and IA64 VMS 8.4 used HP C 7.3.(1)
- Work is currently being done for a procedure to build `gawk' and
-create a PCSI kit for compatible with the GNV product.
+ The `[.vms]gawk_build_steps.txt' provides information on how to build
+`gawk' into a PCSI kit that is compatible with the GNV product.
---------- Footnotes ----------
@@ -26797,7 +26896,8 @@ add the `gawk' and `awk' to the system wide `DCLTABLES'.
The DCL syntax is documented in the `gawk.hlp' file.
- Optionally, `gawk.hlp' entry can be loaded into a VMS help library:
+ Optionally, the `gawk.hlp' entry can be loaded into a VMS help
+library:
$ LIBRARY/HELP sys$help:helplib [.vms]gawk.hlp
@@ -27926,7 +28026,7 @@ D.1 What a Program Does
=======================
At the most basic level, the job of a program is to process some input
-data and produce results. See *note figure-general-flow::.
+data and produce results. See *note figure-general-flow::.
_______
+------+ / \ +---------+
@@ -28159,9 +28259,6 @@ Bash
The GNU version of the standard shell (the Bourne-Again SHell).
See also "Bourne Shell."
-BBS
- See "Bulletin Board System."
-
Bit
Short for "Binary Digit." All values in computer memory
ultimately reduce to binary digits: values that are either zero or
@@ -28207,11 +28304,6 @@ Built-in Variable
Braces
See "Curly Braces."
-Bulletin Board System
- A computer system allowing users to log in and read and/or leave
- messages for other users of the system, much like leaving paper
- notes on a bulletin board.
-
C
The system programming language that most GNU software is written
in. The `awk' programming language has C-like syntax, and this
@@ -28318,8 +28410,8 @@ Dynamic Regular Expression
(*Note Computed Regexps::.)
Environment
- A collection of strings, of the form NAME`='VAL, that each program
- has available to it. Users generally place values into the
+ A collection of strings, of the form NAME`='`val', that each
+ program has available to it. Users generally place values into the
environment in order to provide information to various programs.
Typical examples are the environment variables `HOME' and `PATH'.
@@ -28734,7 +28826,6 @@ GNU General Public License
**************************
Version 3, 29 June 2007
-
Copyright (C) 2007 Free Software Foundation, Inc. `http://fsf.org/'
Everyone is permitted to copy and distribute verbatim copies of this
@@ -29457,7 +29548,6 @@ GNU Free Documentation License
******************************
Version 1.3, 3 November 2008
-
Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
`http://fsf.org/'
@@ -29961,17 +30051,17 @@ Index
* ! (exclamation point), !~ operator <5>: Computed Regexps. (line 6)
* ! (exclamation point), !~ operator <6>: Case-sensitivity. (line 26)
* ! (exclamation point), !~ operator: Regexp Usage. (line 19)
-* " (double quote) <1>: Quoting. (line 37)
-* " (double quote): Read Terminal. (line 25)
+* " (double quote) in shell commands: Read Terminal. (line 25)
* " (double quote), in regexp constants: Computed Regexps. (line 28)
+* " (double quote), in shell commands: Quoting. (line 37)
* # (number sign), #! (executable scripts): Executable Scripts.
(line 6)
* # (number sign), commenting: Comments. (line 6)
-* $ (dollar sign): Regexp Operators. (line 35)
* $ (dollar sign), $ field operator <1>: Precedence. (line 43)
* $ (dollar sign), $ field operator: Fields. (line 19)
* $ (dollar sign), incrementing fields and arrays: Increment Ops.
(line 30)
+* $ (dollar sign), regexp operator: Regexp Operators. (line 35)
* % (percent sign), % operator: Precedence. (line 55)
* % (percent sign), %= operator <1>: Precedence. (line 95)
* % (percent sign), %= operator: Assignment Ops. (line 129)
@@ -29979,13 +30069,13 @@ Index
* & (ampersand), && operator: Boolean Ops. (line 57)
* & (ampersand), gsub()/gensub()/sub() functions and: Gory Details.
(line 6)
-* ' (single quote) <1>: Quoting. (line 31)
-* ' (single quote) <2>: Long. (line 33)
* ' (single quote): One-shot. (line 15)
+* ' (single quote) in gawk command lines: Long. (line 33)
+* ' (single quote), in shell commands: Quoting. (line 31)
* ' (single quote), vs. apostrophe: Comments. (line 27)
* ' (single quote), with double quotes: Quoting. (line 53)
-* () (parentheses) <1>: Profiling. (line 138)
-* () (parentheses): Regexp Operators. (line 79)
+* () (parentheses), in a profile: Profiling. (line 146)
+* () (parentheses), regexp operator: Regexp Operators. (line 79)
* * (asterisk), * operator, as multiplication operator: Precedence.
(line 55)
* * (asterisk), * operator, as regexp operator: Regexp Operators.
@@ -29998,12 +30088,12 @@ Index
* * (asterisk), **= operator: Assignment Ops. (line 129)
* * (asterisk), *= operator <1>: Precedence. (line 95)
* * (asterisk), *= operator: Assignment Ops. (line 129)
-* + (plus sign): Regexp Operators. (line 102)
* + (plus sign), + operator: Precedence. (line 52)
* + (plus sign), ++ operator <1>: Precedence. (line 46)
* + (plus sign), ++ operator: Increment Ops. (line 11)
* + (plus sign), += operator <1>: Precedence. (line 95)
* + (plus sign), += operator: Assignment Ops. (line 82)
+* + (plus sign), regexp operator: Regexp Operators. (line 102)
* , (comma), in range patterns: Ranges. (line 6)
* - (hyphen), - operator: Precedence. (line 52)
* - (hyphen), -- operator <1>: Precedence. (line 46)
@@ -30023,8 +30113,9 @@ Index
(line 15)
* --disable-nls configuration option: Additional Configuration Options.
(line 30)
-* --dump-variables option <1>: Library Names. (line 45)
* --dump-variables option: Options. (line 93)
+* --dump-variables option, using for library functions: Library Names.
+ (line 45)
* --exec option: Options. (line 125)
* --field-separator option: Options. (line 21)
* --file option: Options. (line 25)
@@ -30067,12 +30158,12 @@ Index
* -d option: Options. (line 93)
* -E option: Options. (line 125)
* -e option: Options. (line 117)
-* -F option: Command Line Field Separator.
- (line 6)
* -f option: Options. (line 25)
* -F option: Options. (line 21)
* -f option: Long. (line 12)
* -F option, -Ft sets FS to TAB: Options. (line 301)
+* -F option, command line: Command Line Field Separator.
+ (line 6)
* -f option, multiple uses: Options. (line 306)
* -g option: Options. (line 147)
* -h option: Options. (line 154)
@@ -30092,7 +30183,7 @@ Index
* -V option: Options. (line 293)
* -v option: Options. (line 32)
* -W option: Options. (line 46)
-* . (period): Regexp Operators. (line 43)
+* . (period), regexp operator: Regexp Operators. (line 43)
* .gmo files: Explaining gettext. (line 41)
* .gmo files, converting from .po: I18N Example. (line 62)
* .gmo files, specifying directory of <1>: Programmer i18n. (line 47)
@@ -30101,7 +30192,7 @@ Index
* .po files: Explaining gettext. (line 36)
* .po files, converting to .gmo: I18N Example. (line 62)
* .pot files: Explaining gettext. (line 30)
-* / (forward slash): Regexp. (line 10)
+* / (forward slash) to enclose regular expressions: Regexp. (line 10)
* / (forward slash), / operator: Precedence. (line 55)
* / (forward slash), /= operator <1>: Precedence. (line 95)
* / (forward slash), /= operator: Assignment Ops. (line 129)
@@ -30109,17 +30200,18 @@ Index
(line 147)
* / (forward slash), patterns and: Expression Patterns. (line 24)
* /= operator vs. /=.../ regexp constant: Assignment Ops. (line 147)
-* /dev/... special files (gawk): Special FD. (line 46)
-* /dev/fd/N special files: Special FD. (line 46)
+* /dev/... special files: Special FD. (line 46)
+* /dev/fd/N special files (gawk): Special FD. (line 46)
* /inet/... special files (gawk): TCP/IP Networking. (line 6)
* /inet4/... special files (gawk): TCP/IP Networking. (line 6)
* /inet6/... special files (gawk): TCP/IP Networking. (line 6)
-* ; (semicolon): Statements/Lines. (line 91)
-* ; (semicolon), AWKPATH variable and: PC Using. (line 11)
+* ; (semicolon), AWKPATH variable and: PC Using. (line 10)
* ; (semicolon), separating statements in actions <1>: Statements.
(line 10)
-* ; (semicolon), separating statements in actions: Action Overview.
+* ; (semicolon), separating statements in actions <2>: Action Overview.
(line 19)
+* ; (semicolon), separating statements in actions: Statements/Lines.
+ (line 91)
* < (left angle bracket), < operator <1>: Precedence. (line 65)
* < (left angle bracket), < operator: Comparison Operators.
(line 11)
@@ -30140,15 +30232,13 @@ Index
(line 11)
* > (right angle bracket), >> operator (I/O) <1>: Precedence. (line 65)
* > (right angle bracket), >> operator (I/O): Redirection. (line 50)
-* ? (question mark) regexp operator <1>: GNU Regexp Operators.
- (line 59)
-* ? (question mark) regexp operator: Regexp Operators. (line 111)
* ? (question mark), ?: operator: Precedence. (line 92)
-* [] (square brackets): Regexp Operators. (line 55)
-* \ (backslash) <1>: Regexp Operators. (line 18)
-* \ (backslash) <2>: Quoting. (line 31)
-* \ (backslash) <3>: Comments. (line 50)
-* \ (backslash): Read Terminal. (line 25)
+* ? (question mark), regexp operator <1>: GNU Regexp Operators.
+ (line 59)
+* ? (question mark), regexp operator: Regexp Operators. (line 111)
+* [] (square brackets), regexp operator: Regexp Operators. (line 55)
+* \ (backslash): Comments. (line 50)
+* \ (backslash) in shell commands: Read Terminal. (line 25)
* \ (backslash), \" escape sequence: Escape Sequences. (line 76)
* \ (backslash), \' operator (gawk): GNU Regexp Operators.
(line 56)
@@ -30195,22 +30285,27 @@ Index
* \ (backslash), in escape sequences, POSIX and: Escape Sequences.
(line 112)
* \ (backslash), in regexp constants: Computed Regexps. (line 28)
-* ^ (caret): GNU Regexp Operators.
- (line 59)
+* \ (backslash), in shell commands: Quoting. (line 31)
+* \ (backslash), regexp operator: Regexp Operators. (line 18)
* ^ (caret), ^ operator: Precedence. (line 49)
* ^ (caret), ^= operator <1>: Precedence. (line 95)
* ^ (caret), ^= operator: Assignment Ops. (line 129)
* ^ (caret), in bracket expressions: Bracket Expressions. (line 17)
-* ^ (caret), regexp operator: Regexp Operators. (line 22)
-* ^, in FS: Regexp Field Splitting.
+* ^ (caret), in FS: Regexp Field Splitting.
(line 59)
+* ^ (caret), regexp operator <1>: GNU Regexp Operators.
+ (line 59)
+* ^ (caret), regexp operator: Regexp Operators. (line 22)
* _ (underscore), C macro: Explaining gettext. (line 70)
* _ (underscore), in names of private variables: Library Names.
(line 29)
* _ (underscore), translatable string: Programmer i18n. (line 69)
* _gr_init() user-defined function: Group Functions. (line 82)
+* _ord_init() user-defined function: Ordinal Functions. (line 16)
* _pw_init() user-defined function: Passwd Functions. (line 105)
* accessing fields: Fields. (line 6)
+* accessing global variables from extensions: Symbol Table Access.
+ (line 6)
* account information <1>: Group Functions. (line 6)
* account information: Passwd Functions. (line 16)
* actions: Action Overview. (line 6)
@@ -30222,8 +30317,6 @@ Index
* adding, fields: Changing Fields. (line 53)
* advanced features, fixed-width data: Constant Size. (line 10)
* advanced features, gawk: Advanced Features. (line 6)
-* advanced features, network connections, See Also networks, connections: Advanced Features.
- (line 6)
* advanced features, network programming: TCP/IP Networking. (line 6)
* advanced features, nondecimal input data: Nondecimal Data. (line 6)
* advanced features, processes, communicating with: Two-way I/O.
@@ -30235,6 +30328,8 @@ Index
* alarm clock example program: Alarm Program. (line 11)
* alarm.awk program: Alarm Program. (line 31)
* algorithms: Basic High Level. (line 68)
+* allocating memory for extensions: Memory Allocation Functions.
+ (line 6)
* Alpha (DEC): Manual History. (line 28)
* amazing awk assembler (aaa): Glossary. (line 12)
* amazingly workable formatter (awf): Glossary. (line 25)
@@ -30245,17 +30340,25 @@ Index
* ampersand (&), gsub()/gensub()/sub() functions and: Gory Details.
(line 6)
* anagram.awk program: Anagram Program. (line 22)
+* anagrams, finding: Anagram Program. (line 6)
+* and: Bitwise Functions. (line 39)
* AND bitwise operation: Bitwise Functions. (line 6)
* and Boolean-logic operator: Boolean Ops. (line 6)
-* and() function (gawk): Bitwise Functions. (line 39)
* ANSI: Glossary. (line 35)
+* API informational variables: Extension API Informational Variables.
+ (line 6)
+* API version: Extension Versioning.
+ (line 6)
* arbitrary precision: Arbitrary Precision Arithmetic.
(line 6)
+* arbitrary precision integers: Arbitrary Precision Integers.
+ (line 6)
* archeologists: Bugs. (line 6)
-* ARGC/ARGV variables <1>: ARGC and ARGV. (line 6)
+* arctangent: Numeric Functions. (line 11)
* ARGC/ARGV variables: Auto-set. (line 11)
* ARGC/ARGV variables, command-line arguments: Other Arguments.
(line 12)
+* ARGC/ARGV variables, how to use: ARGC and ARGV. (line 6)
* ARGC/ARGV variables, portability and: Executable Scripts. (line 42)
* ARGIND variable: Auto-set. (line 40)
* ARGIND variable, command-line arguments: Other Arguments. (line 12)
@@ -30265,53 +30368,69 @@ Index
* arguments, command-line, invoking awk: Command Line. (line 6)
* arguments, in function calls: Function Calls. (line 16)
* arguments, processing: Getopt Function. (line 6)
+* ARGV array, indexing into: Other Arguments. (line 12)
* arithmetic operators: Arithmetic Ops. (line 6)
+* array manipulation in extensions: Array Manipulation. (line 6)
+* array members: Reference to Elements.
+ (line 6)
+* array scanning order, controlling: Controlling Scanning.
+ (line 12)
+* array, number of elements: String Functions. (line 194)
* arrays: Arrays. (line 6)
+* arrays of arrays: Arrays of Arrays. (line 6)
+* arrays, an example of using: Array Example. (line 6)
+* arrays, and IGNORECASE variable: Array Intro. (line 91)
* arrays, as parameters to functions: Pass By Value/Reference.
(line 47)
* arrays, associative: Array Intro. (line 49)
* arrays, associative, library functions and: Library Names. (line 57)
* arrays, deleting entire contents: Delete. (line 39)
-* arrays, elements, assigning: Assigning Elements. (line 6)
+* arrays, elements that don't exist: Reference to Elements.
+ (line 23)
+* arrays, elements, assigning values: Assigning Elements. (line 6)
* arrays, elements, deleting: Delete. (line 6)
-* arrays, elements, order of: Scanning an Array. (line 48)
-* arrays, elements, referencing: Reference to Elements.
- (line 6)
+* arrays, elements, order of access by in operator: Scanning an Array.
+ (line 48)
* arrays, elements, retrieving number of: String Functions. (line 32)
* arrays, for statement and: Scanning an Array. (line 20)
-* arrays, IGNORECASE variable and: Array Intro. (line 91)
* arrays, indexing: Array Intro. (line 49)
* arrays, merging into strings: Join Function. (line 6)
* arrays, multidimensional: Multidimensional. (line 10)
* arrays, multidimensional, scanning: Multiscanning. (line 11)
-* arrays, names of: Arrays. (line 18)
+* arrays, names of, and names of functions/variables: Arrays. (line 18)
+* arrays, numeric subscripts: Numeric Array Subscripts.
+ (line 6)
+* arrays, referencing elements: Reference to Elements.
+ (line 6)
* arrays, scanning: Scanning an Array. (line 6)
* arrays, sorting: Array Sorting Functions.
(line 6)
-* arrays, sorting, IGNORECASE variable and: Array Sorting Functions.
+* arrays, sorting, and IGNORECASE variable: Array Sorting Functions.
(line 83)
* arrays, sparse: Array Intro. (line 70)
-* arrays, subscripts: Numeric Array Subscripts.
- (line 6)
* arrays, subscripts, uninitialized variables as: Uninitialized Subscripts.
(line 6)
+* arrays, unassigned elements: Reference to Elements.
+ (line 18)
* artificial intelligence, gawk and: Distribution contents.
(line 52)
-* ASCII <1>: Glossary. (line 141)
+* ASCII <1>: Glossary. (line 133)
* ASCII: Ordinal Functions. (line 45)
-* asort() function (gawk) <1>: Array Sorting Functions.
+* asort <1>: Array Sorting Functions.
(line 6)
-* asort() function (gawk): String Functions. (line 32)
+* asort: String Functions. (line 32)
* asort() function (gawk), arrays, sorting: Array Sorting Functions.
(line 6)
-* asorti() function (gawk) <1>: Array Sorting Functions.
+* asorti <1>: Array Sorting Functions.
(line 6)
-* asorti() function (gawk): String Functions. (line 32)
+* asorti: String Functions. (line 32)
* asorti() function (gawk), arrays, sorting: Array Sorting Functions.
(line 6)
* assert() function (C library): Assert Function. (line 6)
* assert() user-defined function: Assert Function. (line 28)
* assertions: Assert Function. (line 6)
+* assign values to variables, in debugger: Viewing And Changing Data.
+ (line 59)
* assignment operators: Assignment Ops. (line 6)
* assignment operators, evaluation order: Assignment Ops. (line 111)
* assignment operators, lvalues/rvalues: Assignment Ops. (line 32)
@@ -30329,7 +30448,8 @@ Index
* asterisk (*), **= operator: Assignment Ops. (line 129)
* asterisk (*), *= operator <1>: Precedence. (line 95)
* asterisk (*), *= operator: Assignment Ops. (line 129)
-* atan2() function: Numeric Functions. (line 11)
+* atan2: Numeric Functions. (line 11)
+* automatic displays, in debugger: Debugger Info. (line 24)
* awf (amazingly workable formatter) program: Glossary. (line 25)
* awk debugging, enabling: Options. (line 108)
* awk language, POSIX version: Assignment Ops. (line 136)
@@ -30385,16 +30505,14 @@ Index
* awk, versions of, See Also Brian Kernighan's awk: BTL. (line 6)
* awka compiler for awk: Other Versions. (line 64)
* AWKLIBPATH environment variable: AWKLIBPATH Variable. (line 6)
-* AWKPATH environment variable <1>: PC Using. (line 11)
+* AWKPATH environment variable <1>: PC Using. (line 10)
* AWKPATH environment variable: AWKPATH Variable. (line 6)
* awkprof.out file: Profiling. (line 6)
* awksed.awk program: Simple Sed. (line 25)
* awkvars.out file: Options. (line 93)
* b debugger command (alias for break): Breakpoint Control. (line 11)
-* backslash (\) <1>: Regexp Operators. (line 18)
-* backslash (\) <2>: Quoting. (line 31)
-* backslash (\) <3>: Comments. (line 50)
-* backslash (\): Read Terminal. (line 25)
+* backslash (\): Comments. (line 50)
+* backslash (\) in shell commands: Read Terminal. (line 25)
* backslash (\), \" escape sequence: Escape Sequences. (line 76)
* backslash (\), \' operator (gawk): GNU Regexp Operators.
(line 56)
@@ -30441,17 +30559,18 @@ Index
* backslash (\), in escape sequences, POSIX and: Escape Sequences.
(line 112)
* backslash (\), in regexp constants: Computed Regexps. (line 28)
+* backslash (\), in shell commands: Quoting. (line 31)
+* backslash (\), regexp operator: Regexp Operators. (line 18)
* backtrace debugger command: Execution Stack. (line 13)
-* BBS-list file: Sample Data Files. (line 6)
-* Beebe, Nelson <1>: Other Versions. (line 78)
-* Beebe, Nelson: Acknowledgments. (line 60)
-* BEGIN pattern <1>: Profiling. (line 62)
+* Beebe, Nelson H.F. <1>: Other Versions. (line 78)
+* Beebe, Nelson H.F.: Acknowledgments. (line 60)
+* BEGIN pattern <1>: Using BEGIN/END. (line 6)
* BEGIN pattern <2>: BEGIN/END. (line 6)
-* BEGIN pattern <3>: Field Separators. (line 45)
-* BEGIN pattern: Records. (line 29)
+* BEGIN pattern: Field Separators. (line 45)
+* BEGIN pattern, and profiling: Profiling. (line 62)
* BEGIN pattern, assert() user-defined function and: Assert Function.
(line 83)
-* BEGIN pattern, Boolean patterns and: Expression Patterns. (line 73)
+* BEGIN pattern, Boolean patterns and: Expression Patterns. (line 70)
* BEGIN pattern, exit statement and: Exit Statement. (line 12)
* BEGIN pattern, getline and: Getline Notes. (line 19)
* BEGIN pattern, headings, adding: Print Examples. (line 43)
@@ -30468,29 +30587,36 @@ Index
* BEGIN pattern, TEXTDOMAIN variable and: Programmer i18n. (line 60)
* BEGINFILE pattern: BEGINFILE/ENDFILE. (line 6)
* BEGINFILE pattern, Boolean patterns and: Expression Patterns.
- (line 73)
+ (line 70)
* beginfile() user-defined function: Filetrans Function. (line 62)
+* Bentley, Jon: Glossary. (line 143)
* Benzinger, Michael: Contributors. (line 97)
+* Berry, Karl <1>: Ranges and Locales. (line 74)
* Berry, Karl: Acknowledgments. (line 33)
* binary input/output: User-modified. (line 10)
+* bindtextdomain <1>: Programmer i18n. (line 47)
+* bindtextdomain: I18N Functions. (line 12)
* bindtextdomain() function (C library): Explaining gettext. (line 49)
-* bindtextdomain() function (gawk) <1>: Programmer i18n. (line 47)
-* bindtextdomain() function (gawk): I18N Functions. (line 12)
* bindtextdomain() function (gawk), portability and: I18N Portability.
(line 33)
-* BINMODE variable <1>: PC Using. (line 34)
+* BINMODE variable <1>: PC Using. (line 33)
* BINMODE variable: User-modified. (line 10)
+* bit-manipulation functions: Bitwise Functions. (line 6)
* bits2str() user-defined function: Bitwise Functions. (line 70)
+* bitwise AND: Bitwise Functions. (line 39)
+* bitwise complement: Bitwise Functions. (line 43)
+* bitwise OR: Bitwise Functions. (line 49)
+* bitwise XOR: Bitwise Functions. (line 55)
* bitwise, complement: Bitwise Functions. (line 25)
* bitwise, operations: Bitwise Functions. (line 6)
* bitwise, shift: Bitwise Functions. (line 32)
* body, in actions: Statements. (line 10)
* body, in loops: While Statement. (line 14)
* Boolean expressions: Boolean Ops. (line 6)
-* Boolean expressions, as patterns: Expression Patterns. (line 41)
+* Boolean expressions, as patterns: Expression Patterns. (line 39)
* Boolean operators, See Boolean expressions: Boolean Ops. (line 6)
* Bourne shell, quoting rules for: Quoting. (line 18)
-* braces ({}): Profiling. (line 134)
+* braces ({}): Profiling. (line 142)
* braces ({}), actions and: Action Overview. (line 19)
* braces ({}), statements, grouping: Statements. (line 10)
* bracket expressions <1>: Bracket Expressions. (line 6)
@@ -30509,17 +30635,44 @@ Index
(line 6)
* break debugger command: Breakpoint Control. (line 11)
* break statement: Break Statement. (line 6)
+* breakpoint: Debugging Terms. (line 33)
+* breakpoint at location, how to delete: Breakpoint Control. (line 36)
+* breakpoint commands: Debugger Execution Control.
+ (line 10)
+* breakpoint condition: Breakpoint Control. (line 54)
+* breakpoint, delete by number: Breakpoint Control. (line 64)
+* breakpoint, how to disable or enable: Breakpoint Control. (line 69)
+* breakpoint, setting: Breakpoint Control. (line 11)
* Brennan, Michael <1>: Other Versions. (line 6)
* Brennan, Michael <2>: Two-way I/O. (line 6)
* Brennan, Michael <3>: Simple Sed. (line 25)
-* Brennan, Michael: Delete. (line 56)
-* Brian Kernighan's awk: Other Versions. (line 13)
+* Brennan, Michael <4>: Delete. (line 56)
+* Brennan, Michael: Foreword. (line 83)
+* Brian Kernighan's awk <1>: I/O Functions. (line 40)
+* Brian Kernighan's awk <2>: Gory Details. (line 15)
+* Brian Kernighan's awk <3>: String Functions. (line 490)
+* Brian Kernighan's awk <4>: Delete. (line 48)
+* Brian Kernighan's awk <5>: Nextfile Statement. (line 47)
+* Brian Kernighan's awk <6>: Continue Statement. (line 43)
+* Brian Kernighan's awk <7>: Break Statement. (line 51)
+* Brian Kernighan's awk <8>: I/O And BEGIN/END. (line 16)
+* Brian Kernighan's awk <9>: Concatenation. (line 36)
+* Brian Kernighan's awk <10>: Getline/Pipe. (line 62)
+* Brian Kernighan's awk <11>: Regexp Field Splitting.
+ (line 67)
+* Brian Kernighan's awk <12>: GNU Regexp Operators.
+ (line 83)
+* Brian Kernighan's awk <13>: Escape Sequences. (line 116)
+* Brian Kernighan's awk <14>: When. (line 21)
+* Brian Kernighan's awk: Preface. (line 15)
* Brian Kernighan's awk, extensions: BTL. (line 6)
+* Brian Kernighan's awk, source code: Other Versions. (line 13)
+* Brini, Davide: Signature Program. (line 6)
* Broder, Alan J.: Contributors. (line 88)
* Brown, Martin: Contributors. (line 82)
-* BSD-based operating systems: Glossary. (line 624)
+* BSD-based operating systems: Glossary. (line 616)
* bt debugger command (alias for backtrace): Execution Stack. (line 13)
-* Buening, Andreas <1>: Bugs. (line 71)
+* Buening, Andreas <1>: Bugs. (line 70)
* Buening, Andreas <2>: Contributors. (line 92)
* Buening, Andreas: Acknowledgments. (line 60)
* buffering, input/output <1>: Two-way I/O. (line 70)
@@ -30541,24 +30694,29 @@ Index
(line 47)
* call by value: Pass By Value/Reference.
(line 18)
-* caret (^): GNU Regexp Operators.
- (line 59)
+* call stack, display in debugger: Execution Stack. (line 13)
* caret (^), ^ operator: Precedence. (line 49)
* caret (^), ^= operator <1>: Precedence. (line 95)
* caret (^), ^= operator: Assignment Ops. (line 129)
* caret (^), in bracket expressions: Bracket Expressions. (line 17)
+* caret (^), regexp operator <1>: GNU Regexp Operators.
+ (line 59)
* caret (^), regexp operator: Regexp Operators. (line 22)
* case keyword: Switch Statement. (line 6)
+* case sensitivity, and regexps: User-modified. (line 82)
+* case sensitivity, and string comparisons: User-modified. (line 82)
* case sensitivity, array indices and: Array Intro. (line 91)
-* case sensitivity, converting case: String Functions. (line 519)
+* case sensitivity, converting case: String Functions. (line 520)
* case sensitivity, example programs: Library Functions. (line 53)
* case sensitivity, gawk: Case-sensitivity. (line 26)
-* case sensitivity, regexps and <1>: User-modified. (line 82)
* case sensitivity, regexps and: Case-sensitivity. (line 6)
-* case sensitivity, string comparisons and: User-modified. (line 82)
* CGI, awk scripts for: Options. (line 125)
+* changing precision of a number: Changing Precision. (line 6)
+* character classes, See bracket expressions: Regexp Operators.
+ (line 55)
+* character lists in regular expression: Bracket Expressions. (line 6)
* character lists, See bracket expressions: Regexp Operators. (line 55)
-* character sets (machine character encodings) <1>: Glossary. (line 141)
+* character sets (machine character encodings) <1>: Glossary. (line 133)
* character sets (machine character encodings): Ordinal Functions.
(line 45)
* character sets, See Also bracket expressions: Regexp Operators.
@@ -30569,7 +30727,7 @@ Index
* Chassell, Robert J.: Acknowledgments. (line 33)
* chdir() extension function: Extension Sample File Functions.
(line 12)
-* chem utility: Glossary. (line 151)
+* chem utility: Glossary. (line 143)
* chr() extension function: Extension Sample Ord.
(line 15)
* chr() user-defined function: Ordinal Functions. (line 16)
@@ -30578,12 +30736,12 @@ Index
(line 6)
* cliff_rand() user-defined function: Cliff Random Function.
(line 12)
-* close() function <1>: I/O Functions. (line 10)
-* close() function <2>: Close Files And Pipes.
+* close <1>: I/O Functions. (line 10)
+* close: Close Files And Pipes.
(line 18)
-* close() function <3>: Getline/Pipe. (line 27)
-* close() function: Getline/Variable/File.
- (line 30)
+* close file or coprocess: I/O Functions. (line 10)
+* close() function, portability: Close Files And Pipes.
+ (line 81)
* close() function, return value: Close Files And Pipes.
(line 130)
* close() function, two-way pipes and: Two-way I/O. (line 77)
@@ -30592,10 +30750,12 @@ Index
* Collado, Manuel: Acknowledgments. (line 60)
* collating elements: Bracket Expressions. (line 69)
* collating symbols: Bracket Expressions. (line 76)
+* Colombo, Antonio <1>: Contributors. (line 135)
* Colombo, Antonio: Acknowledgments. (line 60)
* columns, aligning: Print Examples. (line 70)
* columns, cutting: Cut Program. (line 6)
* comma (,), in range patterns: Ranges. (line 6)
+* command completion, in debugger: Readline Support. (line 6)
* command line, arguments <1>: ARGC and ARGV. (line 6)
* command line, arguments <2>: Auto-set. (line 11)
* command line, arguments: Other Arguments. (line 6)
@@ -30605,16 +30765,16 @@ Index
* command line, FS on, setting: Command Line Field Separator.
(line 6)
* command line, invoking awk from: Command Line. (line 6)
-* command line, options <1>: Command Line Field Separator.
- (line 6)
-* command line, options <2>: Options. (line 6)
-* command line, options: Long. (line 12)
+* command line, option -f: Long. (line 12)
+* command line, options: Options. (line 6)
* command line, options, end of: Options. (line 54)
* command line, variables, assigning on: Assignment Options. (line 6)
* command-line options, processing: Getopt Function. (line 6)
* command-line options, string extraction: String Extraction. (line 6)
* commands debugger command: Debugger Execution Control.
(line 10)
+* commands to execute at breakpoint: Debugger Execution Control.
+ (line 10)
* commenting: Comments. (line 6)
* commenting, backslash continuation and: Statements/Lines. (line 76)
* common extensions, ** operator: Arithmetic Ops. (line 30)
@@ -30623,12 +30783,12 @@ Index
* common extensions, /dev/stdin special file: Special FD. (line 46)
* common extensions, /dev/stdout special file: Special FD. (line 46)
* common extensions, \x escape sequence: Escape Sequences. (line 61)
-* common extensions, BINMODE variable: PC Using. (line 34)
+* common extensions, BINMODE variable: PC Using. (line 33)
* common extensions, delete to delete entire arrays: Delete. (line 39)
* common extensions, func keyword: Definition Syntax. (line 83)
* common extensions, length() applied to an array: String Functions.
- (line 193)
-* common extensions, RS as a regexp: Records. (line 120)
+ (line 194)
+* common extensions, RS as a regexp: Records. (line 135)
* common extensions, single character fields: Single Character Fields.
(line 6)
* comp.lang.awk newsgroup: Bugs. (line 38)
@@ -30644,13 +30804,13 @@ Index
* compatibility mode (gawk), octal numbers: Nondecimal-numbers.
(line 60)
* compatibility mode (gawk), specifying: Options. (line 81)
-* compiled programs <1>: Glossary. (line 165)
+* compiled programs <1>: Glossary. (line 157)
* compiled programs: Basic High Level. (line 15)
* compiling gawk for Cygwin: Cygwin. (line 6)
* compiling gawk for MS-DOS and MS-Windows: PC Compiling. (line 13)
* compiling gawk for VMS: VMS Compilation. (line 6)
* compiling gawk with EMX for OS/2: PC Compiling. (line 28)
-* compl() function (gawk): Bitwise Functions. (line 43)
+* compl: Bitwise Functions. (line 43)
* complement, bitwise: Bitwise Functions. (line 25)
* compound statements, control statements and: Statements. (line 10)
* concatenating: Concatenation. (line 8)
@@ -30666,46 +30826,59 @@ Index
(line 35)
* configuration options, gawk: Additional Configuration Options.
(line 6)
+* constant regexps: Regexp Usage. (line 57)
* constants, floating-point: Floating-point Constants.
(line 6)
* constants, nondecimal: Nondecimal Data. (line 6)
+* constants, numeric: Scalar Constants. (line 6)
* constants, types of: Constants. (line 6)
* context, floating-point: Floating-point Context.
(line 6)
+* continue program, in debugger: Debugger Execution Control.
+ (line 33)
* continue statement: Continue Statement. (line 6)
* control statements: Statements. (line 6)
-* converting, case: String Functions. (line 519)
-* converting, dates to timestamps: Time Functions. (line 75)
-* converting, during subscripting: Numeric Array Subscripts.
+* controlling array scanning order: Controlling Scanning.
+ (line 12)
+* convert string to lower case: String Functions. (line 521)
+* convert string to number: String Functions. (line 385)
+* convert string to upper case: String Functions. (line 527)
+* converting integer array subscripts: Numeric Array Subscripts.
(line 31)
+* converting, dates to timestamps: Time Functions. (line 76)
* converting, numbers to strings <1>: Bitwise Functions. (line 109)
* converting, numbers to strings: Conversion. (line 6)
* converting, strings to numbers <1>: Bitwise Functions. (line 109)
* converting, strings to numbers: Conversion. (line 6)
* CONVFMT variable <1>: User-modified. (line 28)
* CONVFMT variable: Conversion. (line 29)
-* CONVFMT variable, array subscripts and: Numeric Array Subscripts.
+* CONVFMT variable, and array subscripts: Numeric Array Subscripts.
(line 6)
-* cookie: Glossary. (line 157)
+* cookie: Glossary. (line 149)
* coprocesses <1>: Two-way I/O. (line 44)
* coprocesses: Redirection. (line 102)
* coprocesses, closing: Close Files And Pipes.
(line 6)
* coprocesses, getline from: Getline/Coprocess. (line 6)
-* cos() function: Numeric Functions. (line 15)
+* cos: Numeric Functions. (line 15)
+* cosine: Numeric Functions. (line 15)
* counting: Wc Program. (line 6)
* csh utility: Statements/Lines. (line 44)
* csh utility, POSIXLY_CORRECT environment variable: Options. (line 348)
* csh utility, |& operator, comparison with: Two-way I/O. (line 44)
-* ctime() user-defined function: Function Example. (line 72)
+* ctime() user-defined function: Function Example. (line 73)
* currency symbols, localization: Explaining gettext. (line 103)
+* current system time: Time Functions. (line 66)
* custom.h file: Configuration Philosophy.
(line 30)
+* customized input parser: Input Parsers. (line 6)
+* customized output wrapper: Output Wrappers. (line 6)
+* customized two-way processor: Two-way processors. (line 6)
* cut utility: Cut Program. (line 6)
* cut.awk program: Cut Program. (line 45)
* d debugger command (alias for delete): Breakpoint Control. (line 64)
* d.c., See dark corner: Conventions. (line 38)
-* dark corner <1>: Glossary. (line 197)
+* dark corner <1>: Glossary. (line 189)
* dark corner: Conventions. (line 38)
* dark corner, "0" is actually true: Truth Values. (line 24)
* dark corner, /= operator vs. /=.../ regexp constant: Assignment Ops.
@@ -30732,9 +30905,9 @@ Index
* dark corner, format-control characters: Control Letters. (line 18)
* dark corner, FS as null string: Single Character Fields.
(line 20)
-* dark corner, input files: Records. (line 103)
+* dark corner, input files: Records. (line 118)
* dark corner, invoking awk: Command Line. (line 16)
-* dark corner, length() function: String Functions. (line 179)
+* dark corner, length() function: String Functions. (line 180)
* dark corner, locale's decimal point character: Conversion. (line 77)
* dark corner, multiline records: Multiple Line. (line 35)
* dark corner, NF variable, decrementing: Changing Fields. (line 107)
@@ -30745,26 +30918,26 @@ Index
(line 147)
* dark corner, regexp constants, as arguments to user-defined functions: Using Constant Regexps.
(line 43)
-* dark corner, split() function: String Functions. (line 358)
-* dark corner, strings, storing: Records. (line 195)
+* dark corner, split() function: String Functions. (line 359)
+* dark corner, strings, storing: Records. (line 210)
* dark corner, value of ARGV[0]: Auto-set. (line 35)
* data, fixed-width: Constant Size. (line 10)
* data-driven languages: Basic High Level. (line 85)
* database, group, reading: Group Functions. (line 6)
* database, users, reading: Passwd Functions. (line 6)
* date utility, GNU: Time Functions. (line 17)
-* date utility, POSIX: Time Functions. (line 262)
-* dates, converting to timestamps: Time Functions. (line 75)
+* date utility, POSIX: Time Functions. (line 263)
+* dates, converting to timestamps: Time Functions. (line 76)
* dates, information related to, localization: Explaining gettext.
(line 115)
* Davies, Stephen <1>: Contributors. (line 74)
* Davies, Stephen: Acknowledgments. (line 60)
-* dcgettext() function (gawk) <1>: Programmer i18n. (line 19)
-* dcgettext() function (gawk): I18N Functions. (line 22)
+* dcgettext <1>: Programmer i18n. (line 19)
+* dcgettext: I18N Functions. (line 22)
* dcgettext() function (gawk), portability and: I18N Portability.
(line 33)
-* dcngettext() function (gawk) <1>: Programmer i18n. (line 36)
-* dcngettext() function (gawk): I18N Functions. (line 28)
+* dcngettext <1>: Programmer i18n. (line 36)
+* dcngettext: I18N Functions. (line 28)
* dcngettext() function (gawk), portability and: I18N Portability.
(line 33)
* deadlocks: Two-way I/O. (line 70)
@@ -30864,6 +31037,13 @@ Index
(line 67)
* debugger commands, watch: Viewing And Changing Data.
(line 67)
+* debugger default list amount: Debugger Info. (line 69)
+* debugger history file: Debugger Info. (line 80)
+* debugger history size: Debugger Info. (line 65)
+* debugger options: Debugger Info. (line 57)
+* debugger prompt: Debugger Info. (line 77)
+* debugger, how to start: Debugger Invocation. (line 6)
+* debugger, read commands from a file: Debugger Info. (line 96)
* debugging awk programs: Debugger. (line 6)
* debugging gawk, bug reports: Bugs. (line 9)
* decimal point character, locale specific: Options. (line 263)
@@ -30872,12 +31052,18 @@ Index
* Deifik, Scott <1>: Bugs. (line 70)
* Deifik, Scott <2>: Contributors. (line 53)
* Deifik, Scott: Acknowledgments. (line 60)
+* delete ARRAY: Delete. (line 39)
+* delete breakpoint at location: Breakpoint Control. (line 36)
+* delete breakpoint by number: Breakpoint Control. (line 64)
* delete debugger command: Breakpoint Control. (line 64)
* delete statement: Delete. (line 6)
+* delete watchpoint: Viewing And Changing Data.
+ (line 84)
* deleting elements in arrays: Delete. (line 6)
* deleting entire arrays: Delete. (line 39)
* Demaille, Akim: Acknowledgments. (line 60)
-* differences between gawk and awk: String Functions. (line 193)
+* describe call stack frame, in debugger: Debugger Info. (line 27)
+* differences between gawk and awk: String Functions. (line 194)
* differences in awk and gawk, ARGC/ARGV variables: ARGC and ARGV.
(line 88)
* differences in awk and gawk, ARGIND variable: Auto-set. (line 40)
@@ -30892,11 +31078,13 @@ Index
* differences in awk and gawk, BEGINFILE/ENDFILE patterns: BEGINFILE/ENDFILE.
(line 6)
* differences in awk and gawk, BINMODE variable <1>: PC Using.
- (line 34)
+ (line 33)
* differences in awk and gawk, BINMODE variable: User-modified.
(line 23)
* differences in awk and gawk, close() function: Close Files And Pipes.
(line 81)
+* differences in awk and gawk, command line directories: Command line directories.
+ (line 6)
* differences in awk and gawk, ERRNO variable: Auto-set. (line 82)
* differences in awk and gawk, error messages: Special FD. (line 16)
* differences in awk and gawk, FIELDWIDTHS variable: User-modified.
@@ -30922,25 +31110,23 @@ Index
(line 34)
* differences in awk and gawk, LINT variable: User-modified. (line 98)
* differences in awk and gawk, match() function: String Functions.
- (line 256)
+ (line 257)
* differences in awk and gawk, print/printf statements: Format Modifiers.
(line 13)
* differences in awk and gawk, PROCINFO array: Auto-set. (line 142)
-* differences in awk and gawk, record separators: Records. (line 117)
+* differences in awk and gawk, record separators: Records. (line 132)
* differences in awk and gawk, regexp constants: Using Constant Regexps.
(line 43)
* differences in awk and gawk, regular expressions: Case-sensitivity.
(line 26)
-* differences in awk and gawk, RS/RT variables: Records. (line 172)
+* differences in awk and gawk, RS/RT variables: Records. (line 187)
* differences in awk and gawk, RT variable: Auto-set. (line 275)
* differences in awk and gawk, single-character fields: Single Character Fields.
(line 6)
* differences in awk and gawk, split() function: String Functions.
- (line 346)
+ (line 347)
* differences in awk and gawk, strings: Scalar Constants. (line 20)
-* differences in awk and gawk, strings, storing: Records. (line 191)
-* differences in awk and gawk, strtonum() function (gawk): String Functions.
- (line 401)
+* differences in awk and gawk, strings, storing: Records. (line 206)
* differences in awk and gawk, SYMTAB variable: Auto-set. (line 283)
* differences in awk and gawk, TEXTDOMAIN variable: User-modified.
(line 162)
@@ -30948,57 +31134,71 @@ Index
(line 66)
* directories, command line: Command line directories.
(line 6)
-* directories, searching <1>: Igawk Program. (line 368)
-* directories, searching <2>: AWKLIBPATH Variable. (line 6)
-* directories, searching: AWKPATH Variable. (line 6)
+* directories, searching: Igawk Program. (line 368)
+* directories, searching for shared libraries: AWKLIBPATH Variable.
+ (line 6)
+* directories, searching for source files: AWKPATH Variable. (line 6)
+* disable breakpoint: Breakpoint Control. (line 69)
* disable debugger command: Breakpoint Control. (line 69)
* display debugger command: Viewing And Changing Data.
(line 8)
+* display debugger options: Debugger Info. (line 57)
* division: Arithmetic Ops. (line 44)
-* do-while statement <1>: Do Statement. (line 6)
-* do-while statement: Regexp Usage. (line 19)
+* do-while statement: Do Statement. (line 6)
+* do-while statement, use of regexps in: Regexp Usage. (line 19)
* documentation, of awk programs: Library Names. (line 6)
* documentation, online: Manual History. (line 11)
* documents, searching: Dupword Program. (line 6)
-* dollar sign ($): Regexp Operators. (line 35)
* dollar sign ($), $ field operator <1>: Precedence. (line 43)
* dollar sign ($), $ field operator: Fields. (line 19)
* dollar sign ($), incrementing fields and arrays: Increment Ops.
(line 30)
+* dollar sign ($), regexp operator: Regexp Operators. (line 35)
* double precision floating-point: General Arithmetic. (line 21)
-* double quote (") <1>: Quoting. (line 37)
-* double quote ("): Read Terminal. (line 25)
+* double quote (") in shell commands: Read Terminal. (line 25)
* double quote ("), in regexp constants: Computed Regexps. (line 28)
+* double quote ("), in shell commands: Quoting. (line 37)
* down debugger command: Execution Stack. (line 21)
* Drepper, Ulrich: Acknowledgments. (line 52)
+* dump all variables of a program: Options. (line 93)
* dump debugger command: Miscellaneous Debugger Commands.
(line 9)
* dupword.awk program: Dupword Program. (line 31)
+* dynamic profiling: Profiling. (line 179)
+* dynamically loaded extensions: Dynamic Extensions. (line 6)
* e debugger command (alias for enable): Breakpoint Control. (line 73)
* EBCDIC: Ordinal Functions. (line 45)
+* effective group ID of gawk user: Auto-set. (line 147)
+* effective user ID of gawk user: Auto-set. (line 151)
* egrep utility <1>: Egrep Program. (line 6)
* egrep utility: Bracket Expressions. (line 24)
* egrep.awk program: Egrep Program. (line 54)
-* elements in arrays: Reference to Elements.
- (line 6)
-* elements in arrays, assigning: Assigning Elements. (line 6)
+* elements in arrays, assigning values: Assigning Elements. (line 6)
* elements in arrays, deleting: Delete. (line 6)
-* elements in arrays, order of: Scanning an Array. (line 48)
+* elements in arrays, order of access by in operator: Scanning an Array.
+ (line 48)
* elements in arrays, scanning: Scanning an Array. (line 6)
+* elements of arrays: Reference to Elements.
+ (line 6)
* email address for bug reports, bug-gawk@gnu.org: Bugs. (line 30)
* EMISTERED: TCP/IP Networking. (line 6)
+* empty array elements: Reference to Elements.
+ (line 18)
* empty pattern: Empty. (line 6)
+* empty strings: Records. (line 122)
* empty strings, See null strings: Regexp Field Splitting.
(line 43)
+* enable breakpoint: Breakpoint Control. (line 73)
* enable debugger command: Breakpoint Control. (line 73)
* end debugger command: Debugger Execution Control.
(line 10)
-* END pattern <1>: Profiling. (line 62)
+* END pattern <1>: Using BEGIN/END. (line 6)
* END pattern: BEGIN/END. (line 6)
+* END pattern, and profiling: Profiling. (line 62)
* END pattern, assert() user-defined function and: Assert Function.
(line 75)
* END pattern, backslash continuation and: Egrep Program. (line 220)
-* END pattern, Boolean patterns and: Expression Patterns. (line 73)
+* END pattern, Boolean patterns and: Expression Patterns. (line 70)
* END pattern, exit statement and: Exit Statement. (line 12)
* END pattern, next/nextfile statements and <1>: Next Statement.
(line 45)
@@ -31007,34 +31207,38 @@ Index
* END pattern, operators and: Using BEGIN/END. (line 17)
* END pattern, print statement and: I/O And BEGIN/END. (line 16)
* ENDFILE pattern: BEGINFILE/ENDFILE. (line 6)
-* ENDFILE pattern, Boolean patterns and: Expression Patterns. (line 73)
+* ENDFILE pattern, Boolean patterns and: Expression Patterns. (line 70)
* endfile() user-defined function: Filetrans Function. (line 62)
* endgrent() function (C library): Group Functions. (line 215)
* endgrent() user-defined function: Group Functions. (line 218)
* endpwent() function (C library): Passwd Functions. (line 210)
* endpwent() user-defined function: Passwd Functions. (line 213)
* ENVIRON array: Auto-set. (line 60)
-* environment variables: Auto-set. (line 60)
-* epoch, definition of: Glossary. (line 243)
+* environment variables used by gawk: Environment Variables.
+ (line 6)
+* environment variables, in ENVIRON array: Auto-set. (line 60)
+* epoch, definition of: Glossary. (line 235)
* equals sign (=), = operator: Assignment Ops. (line 6)
* equals sign (=), == operator <1>: Precedence. (line 65)
* equals sign (=), == operator: Comparison Operators.
(line 11)
* EREs (Extended Regular Expressions): Bracket Expressions. (line 24)
* ERRNO variable <1>: TCP/IP Networking. (line 54)
-* ERRNO variable <2>: Auto-set. (line 82)
-* ERRNO variable <3>: BEGINFILE/ENDFILE. (line 26)
-* ERRNO variable <4>: Close Files And Pipes.
+* ERRNO variable: Auto-set. (line 82)
+* ERRNO variable, with BEGINFILE pattern: BEGINFILE/ENDFILE. (line 26)
+* ERRNO variable, with close() function: Close Files And Pipes.
(line 138)
-* ERRNO variable: Getline. (line 19)
+* ERRNO variable, with getline command: Getline. (line 19)
* error handling: Special FD. (line 16)
* error handling, ERRNO variable and: Auto-set. (line 82)
* error output: Special FD. (line 6)
* escape processing, gsub()/gensub()/sub() functions: Gory Details.
(line 6)
-* escape sequences: Escape Sequences. (line 6)
+* escape sequences, in strings: Escape Sequences. (line 6)
* eval debugger command: Viewing And Changing Data.
(line 23)
+* evaluate expressions, in debugger: Viewing And Changing Data.
+ (line 23)
* evaluation order: Increment Ops. (line 60)
* evaluation order, concatenation: Concatenation. (line 41)
* evaluation order, functions: Calling Built-in. (line 30)
@@ -31057,9 +31261,12 @@ Index
* exit statement: Exit Statement. (line 6)
* exit status, of gawk: Exit Status. (line 6)
* exit status, of VMS: VMS Running. (line 29)
-* exp() function: Numeric Functions. (line 18)
+* exit the debugger: Miscellaneous Debugger Commands.
+ (line 99)
+* exp: Numeric Functions. (line 18)
* expand utility: Very Simple. (line 69)
* Expat XML parser library: gawkextlib. (line 35)
+* exponent: Numeric Functions. (line 18)
* expressions: Expressions. (line 6)
* expressions, as patterns: Expression Patterns. (line 6)
* expressions, assignment: Assignment Ops. (line 6)
@@ -31071,6 +31278,20 @@ Index
(line 9)
* expressions, selecting: Conditional Exp. (line 6)
* Extended Regular Expressions (EREs): Bracket Expressions. (line 24)
+* extension API: Extension API Description.
+ (line 6)
+* extension API informational variables: Extension API Informational Variables.
+ (line 6)
+* extension API version: Extension Versioning.
+ (line 6)
+* extension API, version number: Auto-set. (line 238)
+* extension example: Extension Example. (line 6)
+* extension registration: Registration Functions.
+ (line 6)
+* extension search path: Finding Extensions. (line 6)
+* extensions distributed with gawk: Extension Samples. (line 6)
+* extensions, allocating memory: Memory Allocation Functions.
+ (line 6)
* extensions, Brian Kernighan's awk <1>: Common Extensions. (line 6)
* extensions, Brian Kernighan's awk: BTL. (line 6)
* extensions, common, ** operator: Arithmetic Ops. (line 30)
@@ -31079,43 +31300,45 @@ Index
* extensions, common, /dev/stdin special file: Special FD. (line 46)
* extensions, common, /dev/stdout special file: Special FD. (line 46)
* extensions, common, \x escape sequence: Escape Sequences. (line 61)
-* extensions, common, BINMODE variable: PC Using. (line 34)
+* extensions, common, BINMODE variable: PC Using. (line 33)
* extensions, common, delete to delete entire arrays: Delete. (line 39)
+* extensions, common, fflush() function: I/O Functions. (line 40)
* extensions, common, func keyword: Definition Syntax. (line 83)
* extensions, common, length() applied to an array: String Functions.
- (line 193)
-* extensions, common, RS as a regexp: Records. (line 120)
+ (line 194)
+* extensions, common, RS as a regexp: Records. (line 135)
* extensions, common, single character fields: Single Character Fields.
(line 6)
* extensions, in gawk, not in POSIX awk: POSIX/GNU. (line 6)
* extensions, mawk: Common Extensions. (line 6)
+* extensions, where to find: gawkextlib. (line 6)
* extract.awk program: Extract Program. (line 79)
* extraction, of marked strings (internationalization): String Extraction.
(line 6)
* f debugger command (alias for frame): Execution Stack. (line 25)
* false, logical: Truth Values. (line 6)
* FDL (Free Documentation License): GNU Free Documentation License.
- (line 6)
+ (line 7)
* features, adding to gawk: Adding Code. (line 6)
* features, advanced, See advanced features: Obsolete. (line 6)
* features, deprecated: Obsolete. (line 6)
* features, undocumented: Undocumented. (line 6)
* Fenlason, Jay <1>: Contributors. (line 18)
* Fenlason, Jay: History. (line 30)
-* fflush() function: I/O Functions. (line 25)
+* fflush: I/O Functions. (line 25)
* field numbers: Nonconstant Fields. (line 6)
* field operator $: Fields. (line 19)
* field operators, dollar sign as: Fields. (line 19)
+* field separator, in multiline records: Multiple Line. (line 41)
+* field separator, on command line: Command Line Field Separator.
+ (line 6)
+* field separator, POSIX and: Field Splitting Summary.
+ (line 40)
* field separators <1>: User-modified. (line 56)
* field separators: Field Separators. (line 15)
* field separators, choice of: Field Separators. (line 51)
* field separators, FIELDWIDTHS variable and: User-modified. (line 35)
* field separators, FPAT variable and: User-modified. (line 45)
-* field separators, in multiline records: Multiple Line. (line 41)
-* field separators, on command line: Command Line Field Separator.
- (line 6)
-* field separators, POSIX and <1>: Field Splitting Summary.
- (line 40)
* field separators, POSIX and: Fields. (line 6)
* field separators, regular expressions as <1>: Regexp Field Splitting.
(line 6)
@@ -31157,7 +31380,6 @@ Index
* files, /inet/... (gawk): TCP/IP Networking. (line 6)
* files, /inet4/... (gawk): TCP/IP Networking. (line 6)
* files, /inet6/... (gawk): TCP/IP Networking. (line 6)
-* files, as single records: Records. (line 204)
* files, awk programs in: Long. (line 6)
* files, awkprof.out: Profiling. (line 6)
* files, awkvars.out: Options. (line 93)
@@ -31196,19 +31418,22 @@ Index
* files, source, search path for: Igawk Program. (line 368)
* files, splitting: Split Program. (line 6)
* files, Texinfo, extracting programs from: Extract Program. (line 6)
+* find substring in string: String Functions. (line 151)
+* finding extensions: Finding Extensions. (line 6)
* finish debugger command: Debugger Execution Control.
(line 39)
* Fish, Fred: Contributors. (line 50)
* fixed-width data: Constant Size. (line 10)
* flag variables <1>: Tee Program. (line 20)
* flag variables: Boolean Ops. (line 67)
-* floating-point numbers, arbitrary precision: Arbitrary Precision Arithmetic.
- (line 6)
* floating-point, numbers <1>: Unexpected Results. (line 6)
* floating-point, numbers: General Arithmetic. (line 6)
+* floating-point, numbers, arbitrary precision: Arbitrary Precision Arithmetic.
+ (line 6)
* floating-point, VAX/VMS: VMS Running. (line 51)
+* flush buffered output: I/O Functions. (line 25)
* fnmatch() extension function: Extension Sample Fnmatch.
- (line 6)
+ (line 12)
* FNR variable <1>: Auto-set. (line 112)
* FNR variable: Records. (line 6)
* FNR variable, changing: Auto-set. (line 323)
@@ -31216,15 +31441,17 @@ Index
* for statement, looping over arrays: Scanning an Array. (line 20)
* fork() extension function: Extension Sample Fork.
(line 11)
+* format specifiers: Basic Printf. (line 15)
* format specifiers, mixing regular with positional specifiers: Printf Ordering.
(line 57)
* format specifiers, printf statement: Control Letters. (line 6)
* format specifiers, strftime() function (gawk): Time Functions.
- (line 88)
-* format strings: Basic Printf. (line 15)
+ (line 89)
+* format time string: Time Functions. (line 48)
* formats, numeric output: OFMT. (line 6)
* formatting output: Printf. (line 6)
-* forward slash (/): Regexp. (line 10)
+* formatting strings: String Functions. (line 378)
+* forward slash (/) to enclose regular expressions: Regexp. (line 10)
* forward slash (/), / operator: Precedence. (line 55)
* forward slash (/), /= operator <1>: Precedence. (line 95)
* forward slash (/), /= operator: Assignment Ops. (line 129)
@@ -31236,11 +31463,11 @@ Index
(line 27)
* frame debugger command: Execution Stack. (line 25)
* Free Documentation License (FDL): GNU Free Documentation License.
- (line 6)
-* Free Software Foundation (FSF) <1>: Glossary. (line 305)
+ (line 7)
+* Free Software Foundation (FSF) <1>: Glossary. (line 297)
* Free Software Foundation (FSF) <2>: Getting. (line 10)
* Free Software Foundation (FSF): Manual History. (line 6)
-* FreeBSD: Glossary. (line 624)
+* FreeBSD: Glossary. (line 616)
* FS variable <1>: User-modified. (line 56)
* FS variable: Field Separators. (line 15)
* FS variable, --field-separator option and: Options. (line 21)
@@ -31253,7 +31480,8 @@ Index
(line 6)
* FS, containing ^: Regexp Field Splitting.
(line 59)
-* FSF (Free Software Foundation) <1>: Glossary. (line 305)
+* FS, in multiline records: Multiple Line. (line 41)
+* FSF (Free Software Foundation) <1>: Glossary. (line 297)
* FSF (Free Software Foundation) <2>: Getting. (line 10)
* FSF (Free Software Foundation): Manual History. (line 6)
* fts() extension function: Extension Sample File Functions.
@@ -31261,6 +31489,7 @@ Index
* FUNCTAB array: Auto-set. (line 128)
* function calls: Function Calls. (line 6)
* function calls, indirect: Indirect Calls. (line 6)
+* function definition example: Function Example. (line 6)
* function pointers: Indirect Calls. (line 6)
* functions, arrays as parameters to: Pass By Value/Reference.
(line 47)
@@ -31297,8 +31526,8 @@ Index
* functions, undefined: Pass By Value/Reference.
(line 71)
* functions, user-defined: User-defined. (line 6)
-* functions, user-defined, calling: Calling A Function. (line 6)
-* functions, user-defined, counts: Profiling. (line 129)
+* functions, user-defined, calling: Function Caveats. (line 6)
+* functions, user-defined, counts, in a profile: Profiling. (line 137)
* functions, user-defined, library of: Library Functions. (line 6)
* functions, user-defined, next/nextfile statements and <1>: Nextfile Statement.
(line 47)
@@ -31306,7 +31535,8 @@ Index
(line 45)
* G-d: Acknowledgments. (line 78)
* Garfinkle, Scott: Contributors. (line 34)
-* gawk program, dynamic profiling: Profiling. (line 172)
+* gawk program, dynamic profiling: Profiling. (line 179)
+* gawk version: Auto-set. (line 213)
* gawk, ARGIND variable in: Other Arguments. (line 12)
* gawk, awk and <1>: This Manual. (line 14)
* gawk, awk and: Preface. (line 23)
@@ -31315,7 +31545,7 @@ Index
* gawk, built-in variables and: Built-in Variables. (line 14)
* gawk, character classes and: Bracket Expressions. (line 90)
* gawk, coding style in: Adding Code. (line 38)
-* gawk, command-line options: GNU Regexp Operators.
+* gawk, command-line options, and regular expressions: GNU Regexp Operators.
(line 70)
* gawk, comparison operators and: Comparison Operators.
(line 50)
@@ -31349,7 +31579,7 @@ Index
* gawk, hexadecimal numbers and: Nondecimal-numbers. (line 42)
* gawk, IGNORECASE variable in <1>: Array Sorting Functions.
(line 83)
-* gawk, IGNORECASE variable in <2>: String Functions. (line 32)
+* gawk, IGNORECASE variable in <2>: String Functions. (line 48)
* gawk, IGNORECASE variable in <3>: Array Intro. (line 91)
* gawk, IGNORECASE variable in <4>: User-modified. (line 82)
* gawk, IGNORECASE variable in: Case-sensitivity. (line 26)
@@ -31368,11 +31598,11 @@ Index
* gawk, line continuation in: Conditional Exp. (line 34)
* gawk, LINT variable in: User-modified. (line 98)
* gawk, list of contributors to: Contributors. (line 6)
-* gawk, MS-DOS version of: PC Using. (line 11)
-* gawk, MS-Windows version of: PC Using. (line 11)
+* gawk, MS-DOS version of: PC Using. (line 10)
+* gawk, MS-Windows version of: PC Using. (line 10)
* gawk, newlines in: Statements/Lines. (line 12)
* gawk, octal numbers and: Nondecimal-numbers. (line 42)
-* gawk, OS/2 version of: PC Using. (line 11)
+* gawk, OS/2 version of: PC Using. (line 10)
* gawk, PROCINFO array in <1>: Two-way I/O. (line 116)
* gawk, PROCINFO array in <2>: Time Functions. (line 47)
* gawk, PROCINFO array in: Auto-set. (line 142)
@@ -31384,10 +31614,8 @@ Index
(line 6)
* gawk, regular expressions, precedence: Regexp Operators. (line 161)
* gawk, RT variable in <1>: Auto-set. (line 275)
-* gawk, RT variable in <2>: Getline/Variable/File.
- (line 10)
-* gawk, RT variable in <3>: Multiple Line. (line 129)
-* gawk, RT variable in: Records. (line 117)
+* gawk, RT variable in <2>: Multiple Line. (line 129)
+* gawk, RT variable in: Records. (line 132)
* gawk, See Also awk: Preface. (line 36)
* gawk, source code, obtaining: Getting. (line 6)
* gawk, splitting fields and: Constant Size. (line 88)
@@ -31400,11 +31628,13 @@ Index
* gawk, VMS version of: VMS Installation. (line 6)
* gawk, word-boundary operator: GNU Regexp Operators.
(line 63)
+* gawkextlib: gawkextlib. (line 6)
* gawkextlib project: gawkextlib. (line 6)
-* General Public License (GPL): Glossary. (line 314)
+* General Public License (GPL): Glossary. (line 306)
* General Public License, See GPL: Manual History. (line 11)
-* gensub() function (gawk) <1>: String Functions. (line 81)
-* gensub() function (gawk): Using Constant Regexps.
+* generate time values: Time Functions. (line 25)
+* gensub <1>: String Functions. (line 82)
+* gensub: Using Constant Regexps.
(line 43)
* gensub() function (gawk), escape processing: Gory Details. (line 6)
* getaddrinfo() function (C library): TCP/IP Networking. (line 38)
@@ -31429,6 +31659,8 @@ Index
* getline command, FILENAME variable and: Getline Notes. (line 19)
* getline command, return values: Getline. (line 19)
* getline command, variants: Getline Summary. (line 6)
+* getline from a file: Getline/File. (line 6)
+* getline into a variable: Getline/Variable. (line 6)
* getline statement, BEGINFILE/ENDFILE patterns and: BEGINFILE/ENDFILE.
(line 54)
* getlocaltime() user-defined function: Getlocaltime Function.
@@ -31446,40 +31678,47 @@ Index
* gettext() function (C library): Explaining gettext. (line 62)
* gettimeofday() extension function: Extension Sample Time.
(line 13)
-* GMP: Arbitrary Precision Arithmetic.
- (line 6)
+* git utility <1>: Adding Code. (line 111)
+* git utility <2>: Accessing The Source.
+ (line 10)
+* git utility <3>: Other Versions. (line 29)
+* git utility: gawkextlib. (line 29)
+* git, use of for gawk source code: Derived Files. (line 6)
+* GMP: Gawk and MPFR. (line 6)
* GNITS mailing list: Acknowledgments. (line 52)
* GNU awk, See gawk: Preface. (line 49)
* GNU Free Documentation License: GNU Free Documentation License.
- (line 6)
-* GNU General Public License: Glossary. (line 314)
-* GNU Lesser General Public License: Glossary. (line 405)
+ (line 7)
+* GNU General Public License: Glossary. (line 306)
+* GNU Lesser General Public License: Glossary. (line 397)
* GNU long options <1>: Options. (line 6)
* GNU long options: Command Line. (line 13)
* GNU long options, printing list of: Options. (line 154)
-* GNU Project <1>: Glossary. (line 323)
+* GNU Project <1>: Glossary. (line 315)
* GNU Project: Manual History. (line 11)
-* GNU/Linux <1>: Glossary. (line 624)
+* GNU/Linux <1>: Glossary. (line 616)
* GNU/Linux <2>: I18N Example. (line 55)
* GNU/Linux: Manual History. (line 28)
-* GPL (General Public License) <1>: Glossary. (line 314)
+* Gordon, Assaf: Contributors. (line 105)
+* GPL (General Public License) <1>: Glossary. (line 306)
* GPL (General Public License): Manual History. (line 11)
* GPL (General Public License), printing: Options. (line 88)
* grcat program: Group Functions. (line 16)
* Grigera, Juan: Contributors. (line 57)
* group database, reading: Group Functions. (line 6)
* group file: Group Functions. (line 6)
+* group ID of gawk user: Auto-set. (line 186)
* groups, information about: Group Functions. (line 6)
-* gsub() function <1>: String Functions. (line 134)
-* gsub() function: Using Constant Regexps.
+* gsub <1>: String Functions. (line 135)
+* gsub: Using Constant Regexps.
(line 43)
-* gsub() function, arguments of: String Functions. (line 459)
+* gsub() function, arguments of: String Functions. (line 460)
* gsub() function, escape processing: Gory Details. (line 6)
* h debugger command (alias for help): Miscellaneous Debugger Commands.
(line 66)
* Hankerson, Darrel <1>: Contributors. (line 60)
* Hankerson, Darrel: Acknowledgments. (line 60)
-* Haque, John: Contributors. (line 105)
+* Haque, John: Contributors. (line 108)
* Hartholz, Elaine: Acknowledgments. (line 38)
* Hartholz, Marshall: Acknowledgments. (line 38)
* Hasegawa, Isamu: Contributors. (line 94)
@@ -31487,9 +31726,10 @@ Index
(line 66)
* hexadecimal numbers: Nondecimal-numbers. (line 6)
* hexadecimal values, enabling interpretation of: Options. (line 207)
+* history expansion, in debugger: Readline Support. (line 6)
* histsort.awk program: History Sorting. (line 25)
* Hughes, Phil: Acknowledgments. (line 43)
-* HUP signal: Profiling. (line 204)
+* HUP signal, for dynamic profiling: Profiling. (line 211)
* hyphen (-), - operator: Precedence. (line 52)
* hyphen (-), -- operator <1>: Precedence. (line 46)
* hyphen (-), -- operator: Increment Ops. (line 48)
@@ -31502,38 +31742,38 @@ Index
* id.awk program: Id Program. (line 30)
* IEEE-754 format: Floating-point Representation.
(line 6)
-* if statement <1>: If Statement. (line 6)
-* if statement: Regexp Usage. (line 19)
+* if statement: If Statement. (line 6)
* if statement, actions, changing: Ranges. (line 25)
+* if statement, use of regexps in: Regexp Usage. (line 19)
* igawk.sh program: Igawk Program. (line 124)
+* ignore breakpoint: Breakpoint Control. (line 87)
* ignore debugger command: Breakpoint Control. (line 87)
-* IGNORECASE variable <1>: Array Sorting Functions.
- (line 83)
-* IGNORECASE variable <2>: String Functions. (line 32)
-* IGNORECASE variable <3>: Array Intro. (line 91)
-* IGNORECASE variable <4>: User-modified. (line 82)
-* IGNORECASE variable: Case-sensitivity. (line 26)
-* IGNORECASE variable, array sorting and: Array Sorting Functions.
+* IGNORECASE variable: User-modified. (line 82)
+* IGNORECASE variable, and array indices: Array Intro. (line 91)
+* IGNORECASE variable, and array sorting functions: Array Sorting Functions.
(line 83)
-* IGNORECASE variable, array subscripts and: Array Intro. (line 91)
* IGNORECASE variable, in example programs: Library Functions.
(line 53)
+* IGNORECASE variable, with ~ and !~ operators: Case-sensitivity.
+ (line 26)
* Illumos: Other Versions. (line 104)
* Illumos, POSIX-compliant awk: Other Versions. (line 104)
* implementation issues, gawk: Notes. (line 6)
* implementation issues, gawk, debugging: Compatibility Mode. (line 6)
* implementation issues, gawk, limits <1>: Redirection. (line 135)
* implementation issues, gawk, limits: Getline Notes. (line 14)
-* in operator <1>: Id Program. (line 93)
-* in operator <2>: Scanning an Array. (line 17)
-* in operator <3>: Reference to Elements.
- (line 37)
-* in operator <4>: For Statement. (line 75)
-* in operator <5>: Precedence. (line 83)
+* in operator <1>: For Statement. (line 75)
+* in operator <2>: Precedence. (line 83)
* in operator: Comparison Operators.
(line 11)
+* in operator, index existence in multidimensional arrays: Multidimensional.
+ (line 43)
+* in operator, order of array access: Scanning an Array. (line 48)
+* in operator, testing if array element exists: Reference to Elements.
+ (line 37)
+* in operator, use in loops: Scanning an Array. (line 17)
* increment operators: Increment Ops. (line 6)
-* index() function: String Functions. (line 150)
+* index: String Functions. (line 151)
* indexing arrays: Array Intro. (line 49)
* indirect function calls: Indirect Calls. (line 6)
* infinite precision: Arbitrary Precision Arithmetic.
@@ -31551,6 +31791,7 @@ Index
* input files, running awk without: Read Terminal. (line 6)
* input files, variable assignments and: Other Arguments. (line 19)
* input pipeline: Getline/Pipe. (line 9)
+* input record, length of: String Functions. (line 171)
* input redirection: Getline/File. (line 6)
* input, data, nondecimal: Nondecimal Data. (line 6)
* input, explicit: Getline. (line 6)
@@ -31559,17 +31800,21 @@ Index
* input, splitting into records: Records. (line 6)
* input, standard <1>: Special FD. (line 6)
* input, standard: Read Terminal. (line 6)
+* input/output functions: I/O Functions. (line 6)
* input/output, binary: User-modified. (line 10)
* input/output, from BEGIN and END: I/O And BEGIN/END. (line 6)
* input/output, two-way: Two-way I/O. (line 44)
* insomnia, cure for: Alarm Program. (line 6)
* installation, VMS: VMS Installation. (line 6)
* installing gawk: Installation. (line 6)
-* INT signal (MS-Windows): Profiling. (line 207)
-* int() function: Numeric Functions. (line 23)
-* integer, arbitrary precision: Arbitrary Precision Integers.
- (line 6)
+* instruction tracing, in debugger: Debugger Info. (line 89)
+* int: Numeric Functions. (line 23)
+* INT signal (MS-Windows): Profiling. (line 214)
+* integer array indices: Numeric Array Subscripts.
+ (line 31)
* integers: General Arithmetic. (line 6)
+* integers, arbitrary precision: Arbitrary Precision Integers.
+ (line 6)
* integers, unsigned: General Arithmetic. (line 15)
* interacting with other programs: I/O Functions. (line 72)
* internationalization <1>: I18N and L10N. (line 6)
@@ -31588,19 +31833,20 @@ Index
* internationalization, localization, portability and: I18N Portability.
(line 6)
* internationalizing a program: Explaining gettext. (line 6)
-* interpreted programs <1>: Glossary. (line 365)
+* interpreted programs <1>: Glossary. (line 357)
* interpreted programs: Basic High Level. (line 15)
-* interval expressions: Regexp Operators. (line 116)
+* interval expressions, regexp operator: Regexp Operators. (line 116)
* inventory-shipped file: Sample Data Files. (line 32)
-* isarray() function (gawk): Type Functions. (line 11)
-* ISO: Glossary. (line 376)
-* ISO 8859-1: Glossary. (line 141)
-* ISO Latin-1: Glossary. (line 141)
+* invoke shell command: I/O Functions. (line 72)
+* isarray: Type Functions. (line 11)
+* ISO: Glossary. (line 368)
+* ISO 8859-1: Glossary. (line 133)
+* ISO Latin-1: Glossary. (line 133)
* Jacobs, Andrew: Passwd Functions. (line 90)
* Jaegermann, Michal <1>: Contributors. (line 45)
* Jaegermann, Michal: Acknowledgments. (line 60)
* Java implementation of awk: Other Versions. (line 112)
-* Java programming language: Glossary. (line 388)
+* Java programming language: Glossary. (line 380)
* jawk: Other Versions. (line 112)
* Jedi knights: Undocumented. (line 6)
* join() user-defined function: Join Function. (line 18)
@@ -31608,15 +31854,18 @@ Index
* Kahrs, Ju"rgen: Acknowledgments. (line 60)
* Kasal, Stepan: Acknowledgments. (line 60)
* Kenobi, Obi-Wan: Undocumented. (line 6)
-* Kernighan, Brian <1>: Basic Data Typing. (line 55)
-* Kernighan, Brian <2>: Other Versions. (line 13)
-* Kernighan, Brian <3>: Contributors. (line 11)
-* Kernighan, Brian <4>: BTL. (line 6)
-* Kernighan, Brian <5>: Concatenation. (line 6)
-* Kernighan, Brian <6>: Acknowledgments. (line 72)
-* Kernighan, Brian <7>: Conventions. (line 34)
+* Kernighan, Brian <1>: Glossary. (line 143)
+* Kernighan, Brian <2>: Basic Data Typing. (line 55)
+* Kernighan, Brian <3>: Other Versions. (line 13)
+* Kernighan, Brian <4>: Contributors. (line 11)
+* Kernighan, Brian <5>: BTL. (line 6)
+* Kernighan, Brian <6>: Library Functions. (line 12)
+* Kernighan, Brian <7>: Concatenation. (line 6)
+* Kernighan, Brian <8>: Getline/Pipe. (line 6)
+* Kernighan, Brian <9>: Acknowledgments. (line 72)
+* Kernighan, Brian <10>: Conventions. (line 34)
* Kernighan, Brian: History. (line 17)
-* kill command, dynamic profiling: Profiling. (line 181)
+* kill command, dynamic profiling: Profiling. (line 188)
* Knights, jedi: Undocumented. (line 6)
* Knuth, Donald: Arbitrary Precision Arithmetic.
(line 6)
@@ -31643,11 +31892,14 @@ Index
* left angle bracket (<), <= operator <1>: Precedence. (line 65)
* left angle bracket (<), <= operator: Comparison Operators.
(line 11)
+* left shift: Bitwise Functions. (line 46)
* left shift, bitwise: Bitwise Functions. (line 32)
* leftmost longest match: Multiple Line. (line 26)
-* length() function: String Functions. (line 163)
-* Lesser General Public License (LGPL): Glossary. (line 405)
-* LGPL (Lesser General Public License): Glossary. (line 405)
+* length: String Functions. (line 164)
+* length of input record: String Functions. (line 171)
+* length of string: String Functions. (line 164)
+* Lesser General Public License (LGPL): Glossary. (line 397)
+* LGPL (Lesser General Public License): Glossary. (line 397)
* libmawk: Other Versions. (line 120)
* libraries of awk functions: Library Functions. (line 6)
* libraries of awk functions, assertions: Assert Function. (line 6)
@@ -31692,50 +31944,65 @@ Index
* lint checking, undefined functions: Pass By Value/Reference.
(line 88)
* LINT variable: User-modified. (line 98)
-* Linux <1>: Glossary. (line 624)
+* Linux <1>: Glossary. (line 616)
* Linux <2>: I18N Example. (line 55)
* Linux: Manual History. (line 28)
+* list all global variables, in debugger: Debugger Info. (line 48)
* list debugger command: Miscellaneous Debugger Commands.
(line 72)
+* list function definitions, in debugger: Debugger Info. (line 30)
* loading, library: Options. (line 173)
-* local variables: Variable Scope. (line 6)
+* local variables, in a function: Variable Scope. (line 6)
* locale categories: Explaining gettext. (line 80)
* locale decimal point character: Options. (line 263)
* locale, definition of: Locales. (line 6)
* localization: I18N and L10N. (line 6)
* localization, See internationalization, localization: I18N and L10N.
(line 6)
+* log: Numeric Functions. (line 30)
* log files, timestamps in: Time Functions. (line 6)
-* log() function: Numeric Functions. (line 30)
+* logarithm: Numeric Functions. (line 30)
* logical false/true: Truth Values. (line 6)
* logical operators, See Boolean expressions: Boolean Ops. (line 6)
* login information: Passwd Functions. (line 16)
* long options: Command Line. (line 13)
* loops: While Statement. (line 6)
+* loops, break statement and: Break Statement. (line 6)
* loops, continue statements and: For Statement. (line 64)
-* loops, count for header: Profiling. (line 123)
+* loops, count for header, in a profile: Profiling. (line 131)
+* loops, do-while: Do Statement. (line 6)
* loops, exiting: Break Statement. (line 6)
+* loops, for, array scanning: Scanning an Array. (line 6)
+* loops, for, iterative: For Statement. (line 6)
* loops, See Also while statement: While Statement. (line 6)
+* loops, while: While Statement. (line 6)
* ls utility: More Complex. (line 15)
-* lshift() function (gawk): Bitwise Functions. (line 46)
+* lshift: Bitwise Functions. (line 46)
* lvalues/rvalues: Assignment Ops. (line 32)
+* mail-list file: Sample Data Files. (line 6)
* mailing labels, printing: Labels Program. (line 6)
* mailing list, GNITS: Acknowledgments. (line 52)
-* Malmberg, John <1>: Bugs. (line 72)
+* Malmberg, John <1>: Bugs. (line 70)
* Malmberg, John: Acknowledgments. (line 60)
* mark parity: Ordinal Functions. (line 45)
* marked string extraction (internationalization): String Extraction.
(line 6)
* marked strings, extracting: String Extraction. (line 6)
* Marx, Groucho: Increment Ops. (line 60)
-* match() function: String Functions. (line 203)
+* match: String Functions. (line 204)
+* match regexp in string: String Functions. (line 204)
* match() function, RSTART/RLENGTH variables: String Functions.
- (line 220)
+ (line 221)
* matching, expressions, See comparison expressions: Typing and Comparison.
(line 9)
* matching, leftmost longest: Multiple Line. (line 26)
* matching, null strings: Gory Details. (line 164)
-* mawk program: Other Versions. (line 44)
+* mawk utility <1>: Other Versions. (line 44)
+* mawk utility <2>: Nextfile Statement. (line 47)
+* mawk utility <3>: Concatenation. (line 36)
+* mawk utility <4>: Getline/Pipe. (line 62)
+* mawk utility: Escape Sequences. (line 124)
+* maximum precision supported by MPFR library: Auto-set. (line 227)
* McPhee, Patrick: Contributors. (line 100)
* message object files: Explaining gettext. (line 41)
* message object files, converting from portable object files: I18N Example.
@@ -31744,15 +32011,18 @@ Index
(line 47)
* message object files, specifying directory of: Explaining gettext.
(line 53)
+* messages from extensions: Printing Messages. (line 6)
+* metacharacters in regular expressions: Regexp Operators. (line 6)
* metacharacters, escape sequences for: Escape Sequences. (line 130)
-* mktime() function (gawk): Time Functions. (line 25)
+* minimum precision supported by MPFR library: Auto-set. (line 230)
+* mktime: Time Functions. (line 25)
* modifiers, in format specifiers: Format Modifiers. (line 6)
* monetary information, localization: Explaining gettext. (line 103)
-* MPFR: Arbitrary Precision Arithmetic.
- (line 6)
+* MPFR: Gawk and MPFR. (line 6)
* msgfmt utility: I18N Example. (line 62)
* multiple precision: Arbitrary Precision Arithmetic.
(line 6)
+* multiple-line records: Multiple Line. (line 6)
* n debugger command (alias for next): Debugger Execution Control.
(line 43)
* names, arrays/variables <1>: Library Names. (line 6)
@@ -31764,7 +32034,7 @@ Index
* namespace issues, functions: Definition Syntax. (line 20)
* nawk utility: Names. (line 17)
* negative zero: Unexpected Results. (line 34)
-* NetBSD: Glossary. (line 624)
+* NetBSD: Glossary. (line 616)
* networks, programming: TCP/IP Networking. (line 6)
* networks, support for: Special Network. (line 6)
* newlines <1>: Boolean Ops. (line 67)
@@ -31803,6 +32073,8 @@ Index
* ni debugger command (alias for nexti): Debugger Execution Control.
(line 49)
* noassign.awk program: Ignoring Assigns. (line 15)
+* non-existent array elements: Reference to Elements.
+ (line 23)
* not Boolean-logic operator: Boolean Ops. (line 6)
* NR variable <1>: Auto-set. (line 137)
* NR variable: Records. (line 6)
@@ -31811,13 +32083,15 @@ Index
* null strings <2>: Truth Values. (line 6)
* null strings <3>: Regexp Field Splitting.
(line 43)
-* null strings: Records. (line 107)
-* null strings, array elements and: Delete. (line 27)
+* null strings: Records. (line 122)
+* null strings in gawk arguments, quoting and: Quoting. (line 62)
+* null strings, and deleting array elements: Delete. (line 27)
* null strings, as array subscripts: Uninitialized Subscripts.
(line 43)
* null strings, converting numbers to strings: Conversion. (line 21)
* null strings, matching: Gory Details. (line 164)
-* null strings, quoting and: Quoting. (line 62)
+* number as string of bits: Bitwise Functions. (line 109)
+* number of array elements: String Functions. (line 194)
* number sign (#), #! (executable scripts): Executable Scripts.
(line 6)
* number sign (#), commenting: Comments. (line 6)
@@ -31832,9 +32106,9 @@ Index
* numbers, floating-point: General Arithmetic. (line 6)
* numbers, hexadecimal: Nondecimal-numbers. (line 6)
* numbers, octal: Nondecimal-numbers. (line 6)
-* numbers, random: Numeric Functions. (line 64)
* numbers, rounding: Round Function. (line 6)
-* numeric, constants: Scalar Constants. (line 6)
+* numeric constants: Scalar Constants. (line 6)
+* numeric functions: Numeric Functions. (line 6)
* numeric, output format: OFMT. (line 6)
* numeric, strings: Variable Typing. (line 6)
* o debugger command (alias for option): Debugger Info. (line 57)
@@ -31849,7 +32123,7 @@ Index
* OFS variable <1>: User-modified. (line 124)
* OFS variable <2>: Output Separators. (line 6)
* OFS variable: Changing Fields. (line 64)
-* OpenBSD: Glossary. (line 624)
+* OpenBSD: Glossary. (line 616)
* OpenSolaris: Other Versions. (line 96)
* operating systems, BSD-based: Manual History. (line 28)
* operating systems, PC, gawk on: PC Using. (line 6)
@@ -31884,10 +32158,7 @@ Index
* operators, word-boundary (gawk): GNU Regexp Operators.
(line 63)
* option debugger command: Debugger Info. (line 57)
-* options, command-line <1>: Command Line Field Separator.
- (line 6)
-* options, command-line <2>: Options. (line 6)
-* options, command-line: Long. (line 12)
+* options, command-line: Options. (line 6)
* options, command-line, end of: Options. (line 54)
* options, command-line, invoking awk: Command Line. (line 6)
* options, command-line, processing: Getopt Function. (line 6)
@@ -31895,9 +32166,9 @@ Index
* options, long <1>: Options. (line 6)
* options, long: Command Line. (line 13)
* options, printing list of: Options. (line 154)
+* or: Bitwise Functions. (line 49)
* OR bitwise operation: Bitwise Functions. (line 6)
* or Boolean-logic operator: Boolean Ops. (line 6)
-* or() function (gawk): Bitwise Functions. (line 49)
* ord() extension function: Extension Sample Ord.
(line 12)
* ord() user-defined function: Ordinal Functions. (line 16)
@@ -31908,6 +32179,7 @@ Index
* output record separator, See ORS variable: Output Separators.
(line 20)
* output redirection: Redirection. (line 6)
+* output wrapper: Output Wrappers. (line 6)
* output, buffering: I/O Functions. (line 29)
* output, duplicating into files: Tee Program. (line 6)
* output, files, closing: Close Files And Pipes.
@@ -31920,20 +32192,21 @@ Index
* output, standard: Special FD. (line 6)
* p debugger command (alias for print): Viewing And Changing Data.
(line 36)
-* P1003.1 POSIX standard: Glossary. (line 462)
-* parentheses () <1>: Profiling. (line 138)
-* parentheses (): Regexp Operators. (line 79)
+* P1003.1 POSIX standard: Glossary. (line 454)
+* parent process ID of gawk process: Auto-set. (line 195)
+* parentheses (), in a profile: Profiling. (line 146)
+* parentheses (), regexp operator: Regexp Operators. (line 79)
* password file: Passwd Functions. (line 16)
-* patsplit() function (gawk): String Functions. (line 290)
+* patsplit: String Functions. (line 291)
* patterns: Patterns and Actions.
(line 6)
* patterns, comparison expressions as: Expression Patterns. (line 14)
-* patterns, counts: Profiling. (line 110)
+* patterns, counts, in a profile: Profiling. (line 118)
* patterns, default: Very Simple. (line 34)
* patterns, empty: Empty. (line 6)
* patterns, expressions as: Regexp Patterns. (line 6)
* patterns, ranges in: Ranges. (line 6)
-* patterns, regexp constants as: Expression Patterns. (line 36)
+* patterns, regexp constants as: Expression Patterns. (line 34)
* patterns, types of: Pattern Overview. (line 15)
* pawk (profiling version of Brian Kernighan's awk): Other Versions.
(line 78)
@@ -31943,22 +32216,24 @@ Index
* percent sign (%), % operator: Precedence. (line 55)
* percent sign (%), %= operator <1>: Precedence. (line 95)
* percent sign (%), %= operator: Assignment Ops. (line 129)
-* period (.): Regexp Operators. (line 43)
+* period (.), regexp operator: Regexp Operators. (line 43)
* Perl: Future Extensions. (line 6)
* Peters, Arno: Contributors. (line 85)
* Peterson, Hal: Contributors. (line 39)
-* pipes, closing: Close Files And Pipes.
+* pipe, closing: Close Files And Pipes.
(line 6)
-* pipes, input: Getline/Pipe. (line 9)
-* pipes, output: Redirection. (line 57)
-* Pitts, Dave <1>: Bugs. (line 73)
+* pipe, input: Getline/Pipe. (line 9)
+* pipe, output: Redirection. (line 57)
+* Pitts, Dave <1>: Bugs. (line 70)
* Pitts, Dave: Acknowledgments. (line 60)
-* plus sign (+): Regexp Operators. (line 102)
+* Plauger, P.J.: Library Functions. (line 12)
+* plug-in: Extension Intro. (line 6)
* plus sign (+), + operator: Precedence. (line 52)
* plus sign (+), ++ operator <1>: Precedence. (line 46)
* plus sign (+), ++ operator: Increment Ops. (line 11)
* plus sign (+), += operator <1>: Precedence. (line 95)
* plus sign (+), += operator: Assignment Ops. (line 82)
+* plus sign (+), regexp operator: Regexp Operators. (line 102)
* pointers to functions: Indirect Calls. (line 6)
* portability: Escape Sequences. (line 94)
* portability, #! (executable scripts): Executable Scripts. (line 33)
@@ -31970,14 +32245,14 @@ Index
(line 112)
* portability, close() function and: Close Files And Pipes.
(line 81)
-* portability, data files as single record: Records. (line 179)
+* portability, data files as single record: Records. (line 194)
* portability, deleting array elements: Delete. (line 56)
* portability, example programs: Library Functions. (line 42)
* portability, functions, defining: Definition Syntax. (line 99)
* portability, gawk: New Ports. (line 6)
* portability, gettext library and: Explaining gettext. (line 10)
* portability, internationalization and: I18N Portability. (line 6)
-* portability, length() function: String Functions. (line 172)
+* portability, length() function: String Functions. (line 173)
* portability, new awk vs. old awk: Conversion. (line 55)
* portability, next statement in user-defined functions: Pass By Value/Reference.
(line 91)
@@ -31985,7 +32260,7 @@ Index
* portability, operators: Increment Ops. (line 60)
* portability, operators, not in POSIX awk: Precedence. (line 98)
* portability, POSIXLY_CORRECT environment variable: Options. (line 353)
-* portability, substr() function: String Functions. (line 509)
+* portability, substr() function: String Functions. (line 510)
* portable object files <1>: Translator i18n. (line 6)
* portable object files: Explaining gettext. (line 36)
* portable object files, converting to message object files: I18N Example.
@@ -32015,14 +32290,14 @@ Index
* POSIX awk, changes in awk versions: POSIX. (line 6)
* POSIX awk, continue statement and: Continue Statement. (line 43)
* POSIX awk, CONVFMT variable and: User-modified. (line 28)
-* POSIX awk, date utility and: Time Functions. (line 262)
+* POSIX awk, date utility and: Time Functions. (line 263)
* POSIX awk, field separators and <1>: Field Splitting Summary.
(line 40)
* POSIX awk, field separators and: Fields. (line 6)
* POSIX awk, FS variable and: User-modified. (line 66)
* POSIX awk, function keyword in: Definition Syntax. (line 83)
* POSIX awk, functions and, gsub()/sub(): Gory Details. (line 54)
-* POSIX awk, functions and, length(): String Functions. (line 172)
+* POSIX awk, functions and, length(): String Functions. (line 173)
* POSIX awk, GNU long options and: Options. (line 15)
* POSIX awk, interval expressions in: Regexp Operators. (line 135)
* POSIX awk, next/nextfile statements and: Next Statement. (line 45)
@@ -32055,6 +32330,8 @@ Index
* print statement, See Also redirection, of output: Redirection.
(line 17)
* print statement, sprintf() function and: Round Function. (line 6)
+* print variables, in debugger: Viewing And Changing Data.
+ (line 36)
* printf debugger command: Viewing And Changing Data.
(line 54)
* printf statement <1>: Printf. (line 6)
@@ -32074,22 +32351,30 @@ Index
* printf statement, sprintf() function and: Round Function. (line 6)
* printf statement, syntax of: Basic Printf. (line 6)
* printing: Printing. (line 6)
+* printing messages from extensions: Printing Messages. (line 6)
* printing, list of options: Options. (line 154)
* printing, mailing labels: Labels Program. (line 6)
* printing, unduplicated lines of text: Uniq Program. (line 6)
* printing, user information: Id Program. (line 6)
* private variables: Library Names. (line 11)
+* process group idIDof gawk process: Auto-set. (line 189)
+* process ID of gawk process: Auto-set. (line 192)
* processes, two-way communications with: Two-way I/O. (line 23)
* processing data: Basic High Level. (line 6)
-* PROCINFO array <1>: Two-way I/O. (line 116)
-* PROCINFO array <2>: Id Program. (line 15)
-* PROCINFO array <3>: Group Functions. (line 6)
-* PROCINFO array <4>: Passwd Functions. (line 6)
-* PROCINFO array <5>: Time Functions. (line 47)
-* PROCINFO array <6>: Auto-set. (line 142)
-* PROCINFO array: Obsolete. (line 11)
+* PROCINFO array <1>: Passwd Functions. (line 6)
+* PROCINFO array <2>: Time Functions. (line 47)
+* PROCINFO array: Auto-set. (line 142)
+* PROCINFO array, and communications via ptys: Two-way I/O. (line 116)
+* PROCINFO array, and group membership: Group Functions. (line 6)
+* PROCINFO array, and user and group ID numbers: Id Program. (line 15)
+* PROCINFO array, testing the field splitting: Passwd Functions.
+ (line 161)
+* PROCINFO array, uses: Auto-set. (line 248)
+* PROCINFO, values of sorted_in: Controlling Scanning.
+ (line 24)
* profiling awk programs: Profiling. (line 6)
-* profiling awk programs, dynamically: Profiling. (line 172)
+* profiling awk programs, dynamically: Profiling. (line 179)
+* program identifiers: Auto-set. (line 160)
* program, definition of: Getting Started. (line 21)
* programmers, attractiveness of: Two-way I/O. (line 6)
* programming conventions, --non-decimal-data option: Nondecimal Data.
@@ -32107,10 +32392,10 @@ Index
* programming conventions, private variable names: Library Names.
(line 23)
* programming language, recipe for: History. (line 6)
-* Programming languages, Ada: Glossary. (line 20)
+* programming languages, Ada: Glossary. (line 20)
* programming languages, data-driven vs. procedural: Getting Started.
(line 12)
-* Programming languages, Java: Glossary. (line 388)
+* programming languages, Java: Glossary. (line 380)
* programming, basic steps: Basic High Level. (line 20)
* programming, concepts: Basic Concepts. (line 6)
* pwcat program: Passwd Functions. (line 23)
@@ -32118,24 +32403,23 @@ Index
(line 99)
* QSE Awk: Other Versions. (line 130)
* Quanstrom, Erik: Alarm Program. (line 8)
-* question mark (?) regexp operator <1>: GNU Regexp Operators.
- (line 59)
-* question mark (?) regexp operator: Regexp Operators. (line 111)
* question mark (?), ?: operator: Precedence. (line 92)
+* question mark (?), regexp operator <1>: GNU Regexp Operators.
+ (line 59)
+* question mark (?), regexp operator: Regexp Operators. (line 111)
* QuikTrim Awk: Other Versions. (line 134)
* quit debugger command: Miscellaneous Debugger Commands.
(line 99)
-* QUIT signal (MS-Windows): Profiling. (line 207)
-* quoting <1>: Comments. (line 27)
-* quoting <2>: Long. (line 26)
-* quoting: Read Terminal. (line 25)
-* quoting, rules for: Quoting. (line 6)
-* quoting, tricks for: Quoting. (line 71)
+* QUIT signal (MS-Windows): Profiling. (line 214)
+* quoting in gawk command lines: Long. (line 26)
+* quoting in gawk command lines, tricks for: Quoting. (line 71)
+* quoting, for small awk programs: Comments. (line 27)
* r debugger command (alias for run): Debugger Execution Control.
(line 62)
* Rakitzis, Byron: History Sorting. (line 25)
+* Ramey, Chet <1>: General Data Types. (line 6)
* Ramey, Chet: Acknowledgments. (line 60)
-* rand() function: Numeric Functions. (line 34)
+* rand: Numeric Functions. (line 34)
* random numbers, Cliff: Cliff Random Function.
(line 6)
* random numbers, rand()/srand() functions: Numeric Functions.
@@ -32143,7 +32427,8 @@ Index
* random numbers, seed of: Numeric Functions. (line 64)
* range expressions (regexps): Bracket Expressions. (line 6)
* range patterns: Ranges. (line 6)
-* Rankin, Pat <1>: Bugs. (line 72)
+* range patterns, line continuation and: Ranges. (line 65)
+* Rankin, Pat <1>: Bugs. (line 70)
* Rankin, Pat <2>: Contributors. (line 37)
* Rankin, Pat <3>: Assignment Ops. (line 100)
* Rankin, Pat: Acknowledgments. (line 60)
@@ -32154,37 +32439,41 @@ Index
* readdir extension: Extension Sample Readdir.
(line 9)
* readfile() extension function: Extension Sample Readfile.
- (line 11)
+ (line 12)
* readfile() user-defined function: Readfile Function. (line 30)
+* reading input files: Reading Files. (line 6)
* recipe for a programming language: History. (line 6)
* record separators <1>: User-modified. (line 143)
* record separators: Records. (line 14)
-* record separators, changing: Records. (line 81)
-* record separators, regular expressions as: Records. (line 117)
+* record separators, changing: Records. (line 93)
+* record separators, regular expressions as: Records. (line 132)
* record separators, with multiline records: Multiple Line. (line 10)
* records <1>: Basic High Level. (line 73)
* records: Reading Files. (line 14)
* records, multiline: Multiple Line. (line 6)
* records, printing: Print. (line 22)
* records, splitting input into: Records. (line 6)
-* records, terminating: Records. (line 117)
-* records, treating files as: Records. (line 204)
+* records, terminating: Records. (line 132)
+* records, treating files as: Records. (line 219)
* recursive functions: Definition Syntax. (line 73)
+* redirect gawk output, in debugger: Debugger Info. (line 72)
* redirection of input: Getline/File. (line 6)
* redirection of output: Redirection. (line 6)
* reference counting, sorting arrays: Array Sorting Functions.
(line 77)
+* regexp: Regexp. (line 6)
* regexp constants <1>: Comparison Operators.
(line 102)
* regexp constants <2>: Regexp Constants. (line 6)
* regexp constants: Regexp Usage. (line 57)
* regexp constants, /=.../, /= operator and: Assignment Ops. (line 147)
-* regexp constants, as patterns: Expression Patterns. (line 36)
+* regexp constants, as patterns: Expression Patterns. (line 34)
* regexp constants, in gawk: Using Constant Regexps.
(line 28)
* regexp constants, slashes vs. quotes: Computed Regexps. (line 28)
* regexp constants, vs. string constants: Computed Regexps. (line 38)
-* regexp, See regular expressions: Regexp. (line 6)
+* register extension: Registration Functions.
+ (line 6)
* regular expressions: Regexp. (line 6)
* regular expressions as field separators: Field Separators. (line 51)
* regular expressions, anchors in: Regexp Operators. (line 22)
@@ -32192,7 +32481,7 @@ Index
(line 6)
* regular expressions, as patterns <1>: Regexp Patterns. (line 6)
* regular expressions, as patterns: Regexp Usage. (line 6)
-* regular expressions, as record separators: Records. (line 117)
+* regular expressions, as record separators: Records. (line 132)
* regular expressions, case sensitivity <1>: User-modified. (line 82)
* regular expressions, case sensitivity: Case-sensitivity. (line 6)
* regular expressions, computed: Computed Regexps. (line 6)
@@ -32219,12 +32508,13 @@ Index
* regular expressions, searching for: Egrep Program. (line 6)
* relational operators, See comparison operators: Typing and Comparison.
(line 9)
+* replace in string: String Functions. (line 406)
* return debugger command: Debugger Execution Control.
(line 54)
* return statement, user-defined functions: Return Statement. (line 6)
* return value, close() function: Close Files And Pipes.
(line 130)
-* rev() user-defined function: Function Example. (line 52)
+* rev() user-defined function: Function Example. (line 53)
* revoutput extension: Extension Sample Revout.
(line 11)
* revtwoway extension: Extension Sample Rev2way.
@@ -32239,18 +32529,20 @@ Index
(line 11)
* right angle bracket (>), >> operator (I/O) <1>: Precedence. (line 65)
* right angle bracket (>), >> operator (I/O): Redirection. (line 50)
+* right shift: Bitwise Functions. (line 52)
* right shift, bitwise: Bitwise Functions. (line 32)
* Ritchie, Dennis: Basic Data Typing. (line 55)
* RLENGTH variable: Auto-set. (line 262)
-* RLENGTH variable, match() function and: String Functions. (line 220)
+* RLENGTH variable, match() function and: String Functions. (line 221)
* Robbins, Arnold <1>: Future Extensions. (line 6)
* Robbins, Arnold <2>: Bugs. (line 32)
-* Robbins, Arnold <3>: Contributors. (line 132)
-* Robbins, Arnold <4>: Alarm Program. (line 6)
-* Robbins, Arnold <5>: Passwd Functions. (line 90)
-* Robbins, Arnold <6>: Getline/Pipe. (line 39)
+* Robbins, Arnold <3>: Contributors. (line 139)
+* Robbins, Arnold <4>: General Data Types. (line 6)
+* Robbins, Arnold <5>: Alarm Program. (line 6)
+* Robbins, Arnold <6>: Passwd Functions. (line 90)
+* Robbins, Arnold <7>: Getline/Pipe. (line 39)
* Robbins, Arnold: Command Line Field Separator.
- (line 80)
+ (line 73)
* Robbins, Bill: Getline/Pipe. (line 39)
* Robbins, Harry: Acknowledgments. (line 78)
* Robbins, Jean: Acknowledgments. (line 78)
@@ -32258,6 +32550,7 @@ Index
* Robbins, Miriam <2>: Getline/Pipe. (line 39)
* Robbins, Miriam: Acknowledgments. (line 78)
* Rommel, Kai Uwe: Contributors. (line 42)
+* round to nearest integer: Numeric Functions. (line 23)
* round() user-defined function: Round Function. (line 16)
* rounding mode, floating-point: Rounding Mode. (line 6)
* rounding numbers: Round Function. (line 6)
@@ -32267,14 +32560,12 @@ Index
* RS variable <1>: User-modified. (line 143)
* RS variable: Records. (line 20)
* RS variable, multiline records and: Multiple Line. (line 17)
-* rshift() function (gawk): Bitwise Functions. (line 52)
+* rshift: Bitwise Functions. (line 52)
* RSTART variable: Auto-set. (line 268)
-* RSTART variable, match() function and: String Functions. (line 220)
+* RSTART variable, match() function and: String Functions. (line 221)
* RT variable <1>: Auto-set. (line 275)
-* RT variable <2>: Getline/Variable/File.
- (line 10)
-* RT variable <3>: Multiple Line. (line 129)
-* RT variable: Records. (line 117)
+* RT variable <2>: Multiple Line. (line 129)
+* RT variable: Records. (line 132)
* Rubin, Paul <1>: Contributors. (line 15)
* Rubin, Paul: History. (line 30)
* rule, definition of: Getting Started. (line 21)
@@ -32283,55 +32574,80 @@ Index
* rvalues/lvalues: Assignment Ops. (line 32)
* s debugger command (alias for step): Debugger Execution Control.
(line 68)
+* sample debugging session: Sample Debugging Session.
+ (line 6)
* sandbox mode: Options. (line 279)
+* save debugger options: Debugger Info. (line 84)
+* scalar or array: Type Functions. (line 11)
* scalar values: Basic Data Typing. (line 13)
-* Schorr, Andrew <1>: Contributors. (line 128)
+* scanning arrays: Scanning an Array. (line 6)
+* scanning multidimensional arrays: Multiscanning. (line 11)
+* Schorr, Andrew <1>: Contributors. (line 131)
* Schorr, Andrew: Acknowledgments. (line 60)
* Schreiber, Bert: Acknowledgments. (line 38)
* Schreiber, Rita: Acknowledgments. (line 38)
+* search and replace in strings: String Functions. (line 82)
+* search in string: String Functions. (line 151)
* search paths <1>: VMS Running. (line 58)
-* search paths <2>: PC Using. (line 11)
-* search paths <3>: Igawk Program. (line 368)
-* search paths <4>: AWKLIBPATH Variable. (line 6)
-* search paths: AWKPATH Variable. (line 6)
+* search paths <2>: PC Using. (line 10)
+* search paths: Igawk Program. (line 368)
* search paths, for shared libraries: AWKLIBPATH Variable. (line 6)
* search paths, for source files <1>: VMS Running. (line 58)
-* search paths, for source files <2>: PC Using. (line 11)
+* search paths, for source files <2>: PC Using. (line 10)
* search paths, for source files <3>: Igawk Program. (line 368)
* search paths, for source files: AWKPATH Variable. (line 6)
-* searching: String Functions. (line 150)
* searching, files for regular expressions: Egrep Program. (line 6)
* searching, for words: Dupword Program. (line 6)
* sed utility <1>: Glossary. (line 12)
* sed utility <2>: Simple Sed. (line 6)
* sed utility: Field Splitting Summary.
(line 46)
-* semicolon (;): Statements/Lines. (line 91)
-* semicolon (;), AWKPATH variable and: PC Using. (line 11)
+* seeding random number generator: Numeric Functions. (line 64)
+* semicolon (;), AWKPATH variable and: PC Using. (line 10)
* semicolon (;), separating statements in actions <1>: Statements.
(line 10)
-* semicolon (;), separating statements in actions: Action Overview.
+* semicolon (;), separating statements in actions <2>: Action Overview.
(line 19)
+* semicolon (;), separating statements in actions: Statements/Lines.
+ (line 91)
* separators, field: User-modified. (line 56)
* separators, field, FIELDWIDTHS variable and: User-modified. (line 35)
* separators, field, FPAT variable and: User-modified. (line 45)
* separators, field, POSIX and: Fields. (line 6)
* separators, for records <1>: User-modified. (line 143)
* separators, for records: Records. (line 14)
-* separators, for records, regular expressions as: Records. (line 117)
+* separators, for records, regular expressions as: Records. (line 132)
* separators, for statements in actions: Action Overview. (line 19)
* separators, subscript: User-modified. (line 156)
+* set breakpoint: Breakpoint Control. (line 11)
* set debugger command: Viewing And Changing Data.
(line 59)
+* set directory of message catalogs: I18N Functions. (line 12)
+* set watchpoint: Viewing And Changing Data.
+ (line 67)
+* setting rounding mode: Setting Rounding Mode.
+ (line 6)
+* setting working precision: Setting Precision. (line 6)
+* shadowing of variable values: Definition Syntax. (line 61)
+* shell quoting, double quote: Read Terminal. (line 25)
+* shell quoting, rules for: Quoting. (line 6)
* shells, piping commands into: Redirection. (line 142)
* shells, quoting: Using Shell Variables.
(line 12)
* shells, quoting, rules for: Quoting. (line 18)
* shells, scripts: One-shot. (line 22)
+* shells, sea: Undocumented. (line 8)
* shells, variables: Using Shell Variables.
(line 6)
* shift, bitwise: Bitwise Functions. (line 32)
* short-circuit operators: Boolean Ops. (line 57)
+* show all source files, in debugger: Debugger Info. (line 45)
+* show breakpoints: Debugger Info. (line 21)
+* show function arguments, in debugger: Debugger Info. (line 18)
+* show local variables, in debugger: Debugger Info. (line 34)
+* show name of current source file, in debugger: Debugger Info.
+ (line 37)
+* show watchpoints: Debugger Info. (line 51)
* si debugger command (alias for stepi): Debugger Execution Control.
(line 76)
* side effects <1>: Increment Ops. (line 11)
@@ -32367,7 +32683,7 @@ Index
* sidebar, Piping into sh: Redirection. (line 140)
* sidebar, Portability Issues with #!: Executable Scripts. (line 31)
* sidebar, Recipe For A Programming Language: History. (line 6)
-* sidebar, RS = "\0" Is Not Portable: Records. (line 177)
+* sidebar, RS = "\0" Is Not Portable: Records. (line 192)
* sidebar, So Why Does gawk have BEGINFILE and ENDFILE?: Filetrans Function.
(line 83)
* sidebar, Syntactic Ambiguities Between /= and Regular Expressions: Assignment Ops.
@@ -32377,30 +32693,36 @@ Index
(line 56)
* sidebar, Using close()'s Return Value: Close Files And Pipes.
(line 128)
-* SIGHUP signal: Profiling. (line 204)
-* SIGINT signal (MS-Windows): Profiling. (line 207)
-* signals, HUP/SIGHUP: Profiling. (line 204)
-* signals, INT/SIGINT (MS-Windows): Profiling. (line 207)
-* signals, QUIT/SIGQUIT (MS-Windows): Profiling. (line 207)
-* signals, USR1/SIGUSR1: Profiling. (line 181)
-* SIGQUIT signal (MS-Windows): Profiling. (line 207)
-* SIGUSR1 signal: Profiling. (line 181)
+* SIGHUP signal, for dynamic profiling: Profiling. (line 211)
+* SIGINT signal (MS-Windows): Profiling. (line 214)
+* signals, HUP/SIGHUP, for profiling: Profiling. (line 211)
+* signals, INT/SIGINT (MS-Windows): Profiling. (line 214)
+* signals, QUIT/SIGQUIT (MS-Windows): Profiling. (line 214)
+* signals, USR1/SIGUSR1, for profiling: Profiling. (line 188)
+* signature program: Signature Program. (line 6)
+* SIGQUIT signal (MS-Windows): Profiling. (line 214)
+* SIGUSR1 signal, for dynamic profiling: Profiling. (line 188)
* silent debugger command: Debugger Execution Control.
(line 10)
-* sin() function: Numeric Functions. (line 75)
+* sin: Numeric Functions. (line 75)
+* sine: Numeric Functions. (line 75)
* single precision floating-point: General Arithmetic. (line 21)
-* single quote (') <1>: Quoting. (line 31)
-* single quote (') <2>: Long. (line 33)
* single quote ('): One-shot. (line 15)
+* single quote (') in gawk command lines: Long. (line 33)
+* single quote ('), in shell commands: Quoting. (line 31)
* single quote ('), vs. apostrophe: Comments. (line 27)
* single quote ('), with double quotes: Quoting. (line 53)
* single-character fields: Single Character Fields.
(line 6)
+* single-step execution, in the debugger: Debugger Execution Control.
+ (line 43)
* Skywalker, Luke: Undocumented. (line 6)
* sleep utility: Alarm Program. (line 111)
* sleep() extension function: Extension Sample Time.
(line 23)
* Solaris, POSIX-compliant awk: Other Versions. (line 96)
+* sort array: String Functions. (line 32)
+* sort array indices: String Functions. (line 32)
* sort function, arrays, sorting: Array Sorting Functions.
(line 6)
* sort utility: Word Sorting. (line 50)
@@ -32417,25 +32739,29 @@ Index
* source code, mawk: Other Versions. (line 44)
* source code, mixing: Options. (line 117)
* source code, pawk: Other Versions. (line 78)
+* source code, pawk (Python version): Other Versions. (line 124)
* source code, QSE Awk: Other Versions. (line 130)
* source code, QuikTrim Awk: Other Versions. (line 134)
* source code, Solaris awk: Other Versions. (line 96)
* source files, search path for: Igawk Program. (line 368)
* sparse arrays: Array Intro. (line 70)
* Spencer, Henry: Glossary. (line 12)
+* split: String Functions. (line 313)
+* split string into array: String Functions. (line 291)
* split utility: Split Program. (line 6)
-* split() function: String Functions. (line 312)
* split() function, array elements, deleting: Delete. (line 61)
* split.awk program: Split Program. (line 30)
-* sprintf() function <1>: String Functions. (line 377)
-* sprintf() function: OFMT. (line 15)
+* sprintf <1>: String Functions. (line 378)
+* sprintf: OFMT. (line 15)
* sprintf() function, OFMT variable and: User-modified. (line 124)
* sprintf() function, print/printf statements and: Round Function.
(line 6)
-* sqrt() function: Numeric Functions. (line 78)
-* square brackets ([]): Regexp Operators. (line 55)
-* srand() function: Numeric Functions. (line 82)
-* Stallman, Richard <1>: Glossary. (line 305)
+* sqrt: Numeric Functions. (line 78)
+* square brackets ([]), regexp operator: Regexp Operators. (line 55)
+* square root: Numeric Functions. (line 78)
+* srand: Numeric Functions. (line 82)
+* stack frame: Debugging Terms. (line 10)
+* Stallman, Richard <1>: Glossary. (line 297)
* Stallman, Richard <2>: Contributors. (line 23)
* Stallman, Richard <3>: Acknowledgments. (line 18)
* Stallman, Richard: Manual History. (line 6)
@@ -32443,6 +32769,7 @@ Index
* standard input <1>: Special FD. (line 6)
* standard input: Read Terminal. (line 6)
* standard output: Special FD. (line 6)
+* starting the debugger: Debugger Invocation. (line 6)
* stat() extension function: Extension Sample File Functions.
(line 18)
* statements, compound, control statements and: Statements. (line 10)
@@ -32452,35 +32779,42 @@ Index
(line 68)
* stepi debugger command: Debugger Execution Control.
(line 76)
+* stop automatic display, in debugger: Viewing And Changing Data.
+ (line 80)
* stream editors <1>: Simple Sed. (line 6)
* stream editors: Field Splitting Summary.
(line 46)
-* strftime() function (gawk): Time Functions. (line 48)
+* strftime: Time Functions. (line 48)
* string constants: Scalar Constants. (line 15)
* string constants, vs. regexp constants: Computed Regexps. (line 38)
* string extraction (internationalization): String Extraction.
(line 6)
+* string length: String Functions. (line 164)
* string operators: Concatenation. (line 8)
+* string, regular expression match: String Functions. (line 204)
+* string-manipulation functions: String Functions. (line 6)
* string-matching operators: Regexp Usage. (line 19)
+* string-translation functions: I18N Functions. (line 6)
+* strings splitting, example: String Functions. (line 333)
* strings, converting <1>: Bitwise Functions. (line 109)
* strings, converting: Conversion. (line 6)
+* strings, converting letter case: String Functions. (line 520)
* strings, converting, numbers to: User-modified. (line 28)
-* strings, empty, See null strings: Records. (line 107)
+* strings, empty, See null strings: Records. (line 122)
* strings, extracting: String Extraction. (line 6)
* strings, for localization: Programmer i18n. (line 14)
-* strings, length of: Scalar Constants. (line 20)
+* strings, length limitations: Scalar Constants. (line 20)
* strings, merging arrays into: Join Function. (line 6)
* strings, null: Regexp Field Splitting.
(line 43)
* strings, numeric: Variable Typing. (line 6)
-* strings, splitting: String Functions. (line 332)
-* strtonum() function (gawk): String Functions. (line 384)
+* strtonum: String Functions. (line 385)
* strtonum() function (gawk), --non-decimal-data option and: Nondecimal Data.
(line 36)
-* sub() function <1>: String Functions. (line 405)
-* sub() function: Using Constant Regexps.
+* sub <1>: String Functions. (line 406)
+* sub: Using Constant Regexps.
(line 43)
-* sub() function, arguments of: String Functions. (line 459)
+* sub() function, arguments of: String Functions. (line 460)
* sub() function, escape processing: Gory Details. (line 6)
* subscript separators: User-modified. (line 156)
* subscripts in arrays, multidimensional: Multidimensional. (line 10)
@@ -32491,15 +32825,19 @@ Index
* subscripts in arrays, uninitialized variables as: Uninitialized Subscripts.
(line 6)
* SUBSEP variable: User-modified. (line 156)
-* SUBSEP variable, multidimensional arrays: Multidimensional. (line 16)
-* substr() function: String Functions. (line 478)
+* SUBSEP variable, and multidimensional arrays: Multidimensional.
+ (line 16)
+* substitute in string: String Functions. (line 82)
+* substr: String Functions. (line 479)
+* substring: String Functions. (line 479)
* Sumner, Andrew: Other Versions. (line 64)
+* supplementary groups of gawk process: Auto-set. (line 243)
* switch statement: Switch Statement. (line 6)
* SYMTAB array: Auto-set. (line 283)
* syntactic ambiguity: /= operator vs. /=.../ regexp constant: Assignment Ops.
(line 147)
-* system() function: I/O Functions. (line 72)
-* systime() function (gawk): Time Functions. (line 65)
+* system: I/O Functions. (line 72)
+* systime: Time Functions. (line 66)
* t debugger command (alias for tbreak): Breakpoint Control. (line 90)
* tbreak debugger command: Breakpoint Control. (line 90)
* Tcl: Library Names. (line 57)
@@ -32507,7 +32845,8 @@ Index
* TCP/IP, support for: Special Network. (line 6)
* tee utility: Tee Program. (line 6)
* tee.awk program: Tee Program. (line 26)
-* terminating records: Records. (line 117)
+* temporary breakpoint: Breakpoint Control. (line 90)
+* terminating records: Records. (line 132)
* testbits.awk program: Bitwise Functions. (line 70)
* testext extension: Extension Sample API Tests.
(line 6)
@@ -32536,6 +32875,7 @@ Index
* tilde (~), ~ operator <5>: Computed Regexps. (line 6)
* tilde (~), ~ operator <6>: Case-sensitivity. (line 26)
* tilde (~), ~ operator: Regexp Usage. (line 19)
+* time functions: Time Functions. (line 6)
* time, alarm clock example program: Alarm Program. (line 11)
* time, localization and: Explaining gettext. (line 115)
* time, managing: Getlocaltime Function.
@@ -32543,15 +32883,18 @@ Index
* time, retrieving: Time Functions. (line 17)
* timeout, reading input: Read Timeout. (line 6)
* timestamps: Time Functions. (line 6)
-* timestamps, converting dates to: Time Functions. (line 75)
+* timestamps, converting dates to: Time Functions. (line 76)
* timestamps, formatted: Getlocaltime Function.
(line 6)
-* tolower() function: String Functions. (line 520)
-* toupper() function: String Functions. (line 526)
+* tolower: String Functions. (line 521)
+* toupper: String Functions. (line 527)
* tr utility: Translate Program. (line 6)
* trace debugger command: Miscellaneous Debugger Commands.
(line 108)
+* traceback, display in debugger: Execution Stack. (line 13)
+* translate string: I18N Functions. (line 22)
* translate.awk program: Translate Program. (line 55)
+* treating files, as single records: Records. (line 219)
* troubleshooting, --non-decimal-data option: Options. (line 207)
* troubleshooting, == operator: Comparison Operators.
(line 37)
@@ -32570,9 +32913,9 @@ Index
* troubleshooting, gawk, fatal errors, function arguments: Calling Built-in.
(line 16)
* troubleshooting, getline function: File Checking. (line 25)
-* troubleshooting, gsub()/sub() functions: String Functions. (line 469)
-* troubleshooting, match() function: String Functions. (line 285)
-* troubleshooting, patsplit() function: String Functions. (line 308)
+* troubleshooting, gsub()/sub() functions: String Functions. (line 470)
+* troubleshooting, match() function: String Functions. (line 286)
+* troubleshooting, patsplit() function: String Functions. (line 309)
* troubleshooting, print statement, omitting commas: Print Examples.
(line 31)
* troubleshooting, printing: Redirection. (line 118)
@@ -32581,7 +32924,7 @@ Index
* troubleshooting, regexp constants vs. string constants: Computed Regexps.
(line 38)
* troubleshooting, string concatenation: Concatenation. (line 26)
-* troubleshooting, substr() function: String Functions. (line 496)
+* troubleshooting, substr() function: String Functions. (line 497)
* troubleshooting, system() function: I/O Functions. (line 94)
* troubleshooting, typographical errors, global variables: Options.
(line 98)
@@ -32594,6 +32937,8 @@ Index
* type conversion: Conversion. (line 21)
* u debugger command (alias for until): Debugger Execution Control.
(line 83)
+* unassigned array elements: Reference to Elements.
+ (line 18)
* undefined functions: Pass By Value/Reference.
(line 71)
* underscore (_), C macro: Explaining gettext. (line 70)
@@ -32603,20 +32948,22 @@ Index
* undisplay debugger command: Viewing And Changing Data.
(line 80)
* undocumented features: Undocumented. (line 6)
-* Unicode: Glossary. (line 141)
+* Unicode <1>: Glossary. (line 133)
+* Unicode <2>: Ranges and Locales. (line 61)
+* Unicode: Ordinal Functions. (line 45)
* uninitialized variables, as array subscripts: Uninitialized Subscripts.
(line 6)
* uniq utility: Uniq Program. (line 6)
* uniq.awk program: Uniq Program. (line 65)
-* Unix: Glossary. (line 624)
+* Unix: Glossary. (line 616)
* Unix awk, backslashes in escape sequences: Escape Sequences.
(line 124)
* Unix awk, close() function and: Close Files And Pipes.
(line 130)
* Unix awk, password files, field separators and: Command Line Field Separator.
- (line 72)
+ (line 64)
* Unix, awk scripts and: Executable Scripts. (line 6)
-* UNIXROOT variable, on OS/2 systems: PC Using. (line 17)
+* UNIXROOT variable, on OS/2 systems: PC Using. (line 16)
* unsigned integers: General Arithmetic. (line 15)
* until debugger command: Debugger Execution Control.
(line 83)
@@ -32624,15 +32971,16 @@ Index
(line 84)
* up debugger command: Execution Stack. (line 33)
* user database, reading: Passwd Functions. (line 6)
-* user-defined, functions: User-defined. (line 6)
-* user-defined, functions, counts: Profiling. (line 129)
+* user-defined functions: User-defined. (line 6)
+* user-defined, functions, counts, in a profile: Profiling. (line 137)
* user-defined, variables: Variables. (line 6)
* user-modifiable variables: User-modified. (line 6)
* users, information about, printing: Id Program. (line 6)
* users, information about, retrieving: Passwd Functions. (line 16)
-* USR1 signal: Profiling. (line 181)
+* USR1 signal, for dynamic profiling: Profiling. (line 188)
* values, numeric: Basic Data Typing. (line 13)
* values, string: Basic Data Typing. (line 13)
+* variable assignments and input files: Other Arguments. (line 19)
* variable typing: Typing and Comparison.
(line 9)
* variables <1>: Basic Data Typing. (line 6)
@@ -32653,7 +33001,7 @@ Index
* variables, global, for library functions: Library Names. (line 11)
* variables, global, printing list of: Options. (line 93)
* variables, initializing: Using Variables. (line 20)
-* variables, local: Variable Scope. (line 6)
+* variables, local to a function: Variable Scope. (line 6)
* variables, names of: Arrays. (line 18)
* variables, private: Library Names. (line 11)
* variables, setting: Options. (line 32)
@@ -32664,6 +33012,10 @@ Index
* variables, uninitialized, as array subscripts: Uninitialized Subscripts.
(line 6)
* variables, user-defined: Variables. (line 6)
+* version of gawk: Auto-set. (line 213)
+* version of gawk extension API: Auto-set. (line 238)
+* version of GNU MP library: Auto-set. (line 224)
+* version of GNU MPFR library: Auto-set. (line 220)
* vertical bar (|): Regexp Operators. (line 69)
* vertical bar (|), | operator (I/O) <1>: Precedence. (line 65)
* vertical bar (|), | operator (I/O): Getline/Pipe. (line 9)
@@ -32687,12 +33039,13 @@ Index
* warnings, issuing: Options. (line 182)
* watch debugger command: Viewing And Changing Data.
(line 67)
+* watchpoint: Debugging Terms. (line 42)
* wc utility: Wc Program. (line 6)
* wc.awk program: Wc Program. (line 46)
* Weinberger, Peter <1>: Contributors. (line 11)
* Weinberger, Peter: History. (line 17)
-* while statement <1>: While Statement. (line 6)
-* while statement: Regexp Usage. (line 19)
+* while statement: While Statement. (line 6)
+* while statement, use of regexps in: Regexp Usage. (line 19)
* whitespace, as field separators: Default Field Splitting.
(line 6)
* whitespace, functions, calling: Calling Built-in. (line 10)
@@ -32713,16 +33066,16 @@ Index
* writea() extension function: Extension Sample Read write array.
(line 9)
* xgettext utility: String Extraction. (line 13)
+* xor: Bitwise Functions. (line 55)
* XOR bitwise operation: Bitwise Functions. (line 6)
-* xor() function (gawk): Bitwise Functions. (line 55)
-* Yawitz, Efraim: Contributors. (line 126)
+* Yawitz, Efraim: Contributors. (line 129)
* Zaretskii, Eli <1>: Bugs. (line 70)
* Zaretskii, Eli <2>: Contributors. (line 55)
* Zaretskii, Eli: Acknowledgments. (line 60)
* zero, negative vs. positive: Unexpected Results. (line 34)
* zerofile.awk program: Empty Files. (line 21)
* Zoulas, Christos: Contributors. (line 66)
-* {} (braces): Profiling. (line 134)
+* {} (braces): Profiling. (line 142)
* {} (braces), actions and: Action Overview. (line 19)
* {} (braces), statements, grouping: Statements. (line 10)
* | (vertical bar): Regexp Operators. (line 69)
@@ -32749,526 +33102,530 @@ Index

Tag Table:
-Node: Top1366
-Node: Foreword40856
-Node: Preface45201
-Ref: Preface-Footnote-148254
-Ref: Preface-Footnote-248350
-Node: History48582
-Node: Names50956
-Ref: Names-Footnote-152433
-Node: This Manual52505
-Ref: This Manual-Footnote-158279
-Node: Conventions58379
-Node: Manual History60535
-Ref: Manual History-Footnote-163983
-Ref: Manual History-Footnote-264024
-Node: How To Contribute64098
-Node: Acknowledgments65242
-Node: Getting Started69436
-Node: Running gawk71815
-Node: One-shot73001
-Node: Read Terminal74226
-Ref: Read Terminal-Footnote-175876
-Ref: Read Terminal-Footnote-276152
-Node: Long76323
-Node: Executable Scripts77699
-Ref: Executable Scripts-Footnote-179532
-Ref: Executable Scripts-Footnote-279634
-Node: Comments80181
-Node: Quoting82648
-Node: DOS Quoting87271
-Node: Sample Data Files87946
-Node: Very Simple90332
-Node: Two Rules94931
-Node: More Complex97078
-Ref: More Complex-Footnote-1100008
-Node: Statements/Lines100093
-Ref: Statements/Lines-Footnote-1104555
-Node: Other Features104820
-Node: When105748
-Node: Invoking Gawk107895
-Node: Command Line109358
-Node: Options110141
-Ref: Options-Footnote-1125536
-Node: Other Arguments125561
-Node: Naming Standard Input128219
-Node: Environment Variables129313
-Node: AWKPATH Variable129871
-Ref: AWKPATH Variable-Footnote-1132629
-Node: AWKLIBPATH Variable132889
-Node: Other Environment Variables133607
-Node: Exit Status136570
-Node: Include Files137245
-Node: Loading Shared Libraries140814
-Node: Obsolete142178
-Node: Undocumented142875
-Node: Regexp143117
-Node: Regexp Usage144506
-Node: Escape Sequences146532
-Node: Regexp Operators152201
-Ref: Regexp Operators-Footnote-1159581
-Ref: Regexp Operators-Footnote-2159728
-Node: Bracket Expressions159826
-Ref: table-char-classes161716
-Node: GNU Regexp Operators164239
-Node: Case-sensitivity167962
-Ref: Case-sensitivity-Footnote-1170930
-Ref: Case-sensitivity-Footnote-2171165
-Node: Leftmost Longest171273
-Node: Computed Regexps172474
-Node: Reading Files175811
-Node: Records177813
-Ref: Records-Footnote-1186901
-Node: Fields186938
-Ref: Fields-Footnote-1189971
-Node: Nonconstant Fields190057
-Node: Changing Fields192259
-Node: Field Separators198218
-Node: Default Field Splitting200920
-Node: Regexp Field Splitting202037
-Node: Single Character Fields205379
-Node: Command Line Field Separator206438
-Node: Full Line Fields209872
-Ref: Full Line Fields-Footnote-1210380
-Node: Field Splitting Summary210426
-Ref: Field Splitting Summary-Footnote-1213525
-Node: Constant Size213626
-Node: Splitting By Content218233
-Ref: Splitting By Content-Footnote-1221982
-Node: Multiple Line222022
-Ref: Multiple Line-Footnote-1227869
-Node: Getline228048
-Node: Plain Getline230264
-Node: Getline/Variable232359
-Node: Getline/File233506
-Node: Getline/Variable/File234847
-Ref: Getline/Variable/File-Footnote-1236446
-Node: Getline/Pipe236533
-Node: Getline/Variable/Pipe239232
-Node: Getline/Coprocess240339
-Node: Getline/Variable/Coprocess241591
-Node: Getline Notes242328
-Node: Getline Summary245115
-Ref: table-getline-variants245523
-Node: Read Timeout246435
-Ref: Read Timeout-Footnote-1250176
-Node: Command line directories250233
-Node: Printing250863
-Node: Print252494
-Node: Print Examples253831
-Node: Output Separators256615
-Node: OFMT258375
-Node: Printf259733
-Node: Basic Printf260639
-Node: Control Letters262178
-Node: Format Modifiers265990
-Node: Printf Examples271999
-Node: Redirection274714
-Node: Special Files281679
-Node: Special FD282212
-Ref: Special FD-Footnote-1285837
-Node: Special Network285911
-Node: Special Caveats286761
-Node: Close Files And Pipes287557
-Ref: Close Files And Pipes-Footnote-1294540
-Ref: Close Files And Pipes-Footnote-2294688
-Node: Expressions294838
-Node: Values295970
-Node: Constants296646
-Node: Scalar Constants297326
-Ref: Scalar Constants-Footnote-1298185
-Node: Nondecimal-numbers298367
-Node: Regexp Constants301367
-Node: Using Constant Regexps301842
-Node: Variables304897
-Node: Using Variables305552
-Node: Assignment Options307276
-Node: Conversion309148
-Ref: table-locale-affects314648
-Ref: Conversion-Footnote-1315272
-Node: All Operators315381
-Node: Arithmetic Ops316011
-Node: Concatenation318516
-Ref: Concatenation-Footnote-1321308
-Node: Assignment Ops321428
-Ref: table-assign-ops326416
-Node: Increment Ops327747
-Node: Truth Values and Conditions331181
-Node: Truth Values332264
-Node: Typing and Comparison333313
-Node: Variable Typing334106
-Ref: Variable Typing-Footnote-1338003
-Node: Comparison Operators338125
-Ref: table-relational-ops338535
-Node: POSIX String Comparison342083
-Ref: POSIX String Comparison-Footnote-1343039
-Node: Boolean Ops343177
-Ref: Boolean Ops-Footnote-1347255
-Node: Conditional Exp347346
-Node: Function Calls349078
-Node: Precedence352672
-Node: Locales356341
-Node: Patterns and Actions357430
-Node: Pattern Overview358484
-Node: Regexp Patterns360153
-Node: Expression Patterns360696
-Node: Ranges364381
-Node: BEGIN/END367347
-Node: Using BEGIN/END368109
-Ref: Using BEGIN/END-Footnote-1370840
-Node: I/O And BEGIN/END370946
-Node: BEGINFILE/ENDFILE373228
-Node: Empty376142
-Node: Using Shell Variables376458
-Node: Action Overview378743
-Node: Statements381100
-Node: If Statement382954
-Node: While Statement384453
-Node: Do Statement386497
-Node: For Statement387653
-Node: Switch Statement390805
-Node: Break Statement392902
-Node: Continue Statement394892
-Node: Next Statement396685
-Node: Nextfile Statement399075
-Node: Exit Statement401718
-Node: Built-in Variables404134
-Node: User-modified405229
-Ref: User-modified-Footnote-1413587
-Node: Auto-set413649
-Ref: Auto-set-Footnote-1427119
-Ref: Auto-set-Footnote-2427324
-Node: ARGC and ARGV427380
-Node: Arrays431231
-Node: Array Basics432736
-Node: Array Intro433562
-Node: Reference to Elements437879
-Node: Assigning Elements440149
-Node: Array Example440640
-Node: Scanning an Array442372
-Node: Controlling Scanning444686
-Ref: Controlling Scanning-Footnote-1449773
-Node: Delete450089
-Ref: Delete-Footnote-1452854
-Node: Numeric Array Subscripts452911
-Node: Uninitialized Subscripts455094
-Node: Multidimensional456721
-Node: Multiscanning459814
-Node: Arrays of Arrays461403
-Node: Functions466043
-Node: Built-in466862
-Node: Calling Built-in467940
-Node: Numeric Functions469928
-Ref: Numeric Functions-Footnote-1473760
-Ref: Numeric Functions-Footnote-2474117
-Ref: Numeric Functions-Footnote-3474165
-Node: String Functions474434
-Ref: String Functions-Footnote-1497354
-Ref: String Functions-Footnote-2497483
-Ref: String Functions-Footnote-3497731
-Node: Gory Details497818
-Ref: table-sub-escapes499497
-Ref: table-sub-posix-92500851
-Ref: table-sub-proposed502202
-Ref: table-posix-sub503556
-Ref: table-gensub-escapes505101
-Ref: Gory Details-Footnote-1506277
-Ref: Gory Details-Footnote-2506328
-Node: I/O Functions506479
-Ref: I/O Functions-Footnote-1513464
-Node: Time Functions513611
-Ref: Time Functions-Footnote-1524544
-Ref: Time Functions-Footnote-2524612
-Ref: Time Functions-Footnote-3524770
-Ref: Time Functions-Footnote-4524881
-Ref: Time Functions-Footnote-5524993
-Ref: Time Functions-Footnote-6525220
-Node: Bitwise Functions525486
-Ref: table-bitwise-ops526048
-Ref: Bitwise Functions-Footnote-1530269
-Node: Type Functions530453
-Node: I18N Functions531604
-Node: User-defined533231
-Node: Definition Syntax534035
-Ref: Definition Syntax-Footnote-1538945
-Node: Function Example539014
-Node: Function Caveats541608
-Node: Calling A Function542029
-Node: Variable Scope543144
-Node: Pass By Value/Reference546107
-Node: Return Statement549615
-Node: Dynamic Typing552596
-Node: Indirect Calls553527
-Node: Library Functions563212
-Ref: Library Functions-Footnote-1566725
-Ref: Library Functions-Footnote-2566868
-Node: Library Names567039
-Ref: Library Names-Footnote-1570510
-Ref: Library Names-Footnote-2570730
-Node: General Functions570816
-Node: Strtonum Function571844
-Node: Assert Function574774
-Node: Round Function578100
-Node: Cliff Random Function579643
-Node: Ordinal Functions580659
-Ref: Ordinal Functions-Footnote-1583731
-Ref: Ordinal Functions-Footnote-2583983
-Node: Join Function584192
-Ref: Join Function-Footnote-1585963
-Node: Getlocaltime Function586163
-Node: Readfile Function589904
-Node: Data File Management591743
-Node: Filetrans Function592375
-Node: Rewind Function596444
-Node: File Checking597831
-Node: Empty Files598925
-Node: Ignoring Assigns601155
-Node: Getopt Function602708
-Ref: Getopt Function-Footnote-1614011
-Node: Passwd Functions614214
-Ref: Passwd Functions-Footnote-1623189
-Node: Group Functions623277
-Node: Walking Arrays631361
-Node: Sample Programs633498
-Node: Running Examples634172
-Node: Clones634900
-Node: Cut Program636124
-Node: Egrep Program645969
-Ref: Egrep Program-Footnote-1653742
-Node: Id Program653852
-Node: Split Program657468
-Ref: Split Program-Footnote-1660987
-Node: Tee Program661115
-Node: Uniq Program663918
-Node: Wc Program671347
-Ref: Wc Program-Footnote-1675613
-Ref: Wc Program-Footnote-2675813
-Node: Miscellaneous Programs675905
-Node: Dupword Program677093
-Node: Alarm Program679124
-Node: Translate Program683931
-Ref: Translate Program-Footnote-1688318
-Ref: Translate Program-Footnote-2688566
-Node: Labels Program688700
-Ref: Labels Program-Footnote-1692071
-Node: Word Sorting692155
-Node: History Sorting696039
-Node: Extract Program697878
-Ref: Extract Program-Footnote-1705381
-Node: Simple Sed705509
-Node: Igawk Program708571
-Ref: Igawk Program-Footnote-1723728
-Ref: Igawk Program-Footnote-2723929
-Node: Anagram Program724067
-Node: Signature Program727135
-Node: Advanced Features728235
-Node: Nondecimal Data730121
-Node: Array Sorting731704
-Node: Controlling Array Traversal732401
-Node: Array Sorting Functions740685
-Ref: Array Sorting Functions-Footnote-1744554
-Node: Two-way I/O744748
-Ref: Two-way I/O-Footnote-1750180
-Node: TCP/IP Networking750250
-Node: Profiling753094
-Node: Internationalization760591
-Node: I18N and L10N762016
-Node: Explaining gettext762702
-Ref: Explaining gettext-Footnote-1767770
-Ref: Explaining gettext-Footnote-2767954
-Node: Programmer i18n768119
-Node: Translator i18n772321
-Node: String Extraction773114
-Ref: String Extraction-Footnote-1774075
-Node: Printf Ordering774161
-Ref: Printf Ordering-Footnote-1776945
-Node: I18N Portability777009
-Ref: I18N Portability-Footnote-1779458
-Node: I18N Example779521
-Ref: I18N Example-Footnote-1782159
-Node: Gawk I18N782231
-Node: Debugger782852
-Node: Debugging783823
-Node: Debugging Concepts784256
-Node: Debugging Terms786112
-Node: Awk Debugging788709
-Node: Sample Debugging Session789601
-Node: Debugger Invocation790121
-Node: Finding The Bug791453
-Node: List of Debugger Commands797941
-Node: Breakpoint Control799275
-Node: Debugger Execution Control802939
-Node: Viewing And Changing Data806299
-Node: Execution Stack809655
-Node: Debugger Info811122
-Node: Miscellaneous Debugger Commands815104
-Node: Readline Support820280
-Node: Limitations821111
-Node: Arbitrary Precision Arithmetic823363
-Ref: Arbitrary Precision Arithmetic-Footnote-1825012
-Node: General Arithmetic825160
-Node: Floating Point Issues826880
-Node: String Conversion Precision827761
-Ref: String Conversion Precision-Footnote-1829466
-Node: Unexpected Results829575
-Node: POSIX Floating Point Problems831728
-Ref: POSIX Floating Point Problems-Footnote-1835553
-Node: Integer Programming835591
-Node: Floating-point Programming837330
-Ref: Floating-point Programming-Footnote-1843661
-Ref: Floating-point Programming-Footnote-2843931
-Node: Floating-point Representation844195
-Node: Floating-point Context845360
-Ref: table-ieee-formats846199
-Node: Rounding Mode847583
-Ref: table-rounding-modes848062
-Ref: Rounding Mode-Footnote-1851077
-Node: Gawk and MPFR851256
-Node: Arbitrary Precision Floats852511
-Ref: Arbitrary Precision Floats-Footnote-1854954
-Node: Setting Precision855270
-Ref: table-predefined-precision-strings855956
-Node: Setting Rounding Mode858101
-Ref: table-gawk-rounding-modes858505
-Node: Floating-point Constants859692
-Node: Changing Precision861121
-Ref: Changing Precision-Footnote-1862518
-Node: Exact Arithmetic862692
-Node: Arbitrary Precision Integers865830
-Ref: Arbitrary Precision Integers-Footnote-1868848
-Node: Dynamic Extensions868995
-Node: Extension Intro870453
-Node: Plugin License871718
-Node: Extension Mechanism Outline872403
-Ref: load-extension872820
-Ref: load-new-function874298
-Ref: call-new-function875293
-Node: Extension API Description877308
-Node: Extension API Functions Introduction878521
-Node: General Data Types883387
-Ref: General Data Types-Footnote-1888989
-Node: Requesting Values889288
-Ref: table-value-types-returned890019
-Node: Constructor Functions890973
-Node: Registration Functions893993
-Node: Extension Functions894678
-Node: Exit Callback Functions896903
-Node: Extension Version String898152
-Node: Input Parsers898802
-Node: Output Wrappers908559
-Node: Two-way processors913069
-Node: Printing Messages915277
-Ref: Printing Messages-Footnote-1916354
-Node: Updating `ERRNO'916506
-Node: Accessing Parameters917245
-Node: Symbol Table Access918475
-Node: Symbol table by name918987
-Node: Symbol table by cookie920734
-Ref: Symbol table by cookie-Footnote-1924864
-Node: Cached values924927
-Ref: Cached values-Footnote-1928376
-Node: Array Manipulation928467
-Ref: Array Manipulation-Footnote-1929565
-Node: Array Data Types929604
-Ref: Array Data Types-Footnote-1932307
-Node: Array Functions932399
-Node: Flattening Arrays936165
-Node: Creating Arrays943017
-Node: Extension API Variables947742
-Node: Extension Versioning948378
-Node: Extension API Informational Variables950279
-Node: Extension API Boilerplate951365
-Node: Finding Extensions955169
-Node: Extension Example955729
-Node: Internal File Description956459
-Node: Internal File Ops960550
-Ref: Internal File Ops-Footnote-1972058
-Node: Using Internal File Ops972198
-Ref: Using Internal File Ops-Footnote-1974551
-Node: Extension Samples974817
-Node: Extension Sample File Functions976341
-Node: Extension Sample Fnmatch984826
-Node: Extension Sample Fork986552
-Node: Extension Sample Inplace987770
-Node: Extension Sample Ord989548
-Node: Extension Sample Readdir990384
-Node: Extension Sample Revout991916
-Node: Extension Sample Rev2way992509
-Node: Extension Sample Read write array993199
-Node: Extension Sample Readfile995082
-Node: Extension Sample API Tests995900
-Node: Extension Sample Time996425
-Node: gawkextlib997789
-Node: Language History1000570
-Node: V7/SVR3.11002163
-Node: SVR41004483
-Node: POSIX1005925
-Node: BTL1007311
-Node: POSIX/GNU1008045
-Node: Feature History1013644
-Node: Common Extensions1026608
-Node: Ranges and Locales1027920
-Ref: Ranges and Locales-Footnote-11032538
-Ref: Ranges and Locales-Footnote-21032565
-Ref: Ranges and Locales-Footnote-31032825
-Node: Contributors1033046
-Node: Installation1038191
-Node: Gawk Distribution1039085
-Node: Getting1039569
-Node: Extracting1040395
-Node: Distribution contents1042087
-Node: Unix Installation1047792
-Node: Quick Installation1048409
-Node: Additional Configuration Options1050853
-Node: Configuration Philosophy1052589
-Node: Non-Unix Installation1054943
-Node: PC Installation1055401
-Node: PC Binary Installation1056700
-Node: PC Compiling1058548
-Node: PC Testing1061492
-Node: PC Using1062668
-Node: Cygwin1066853
-Node: MSYS1067853
-Node: VMS Installation1068367
-Node: VMS Compilation1069131
-Ref: VMS Compilation-Footnote-11070746
-Node: VMS Dynamic Extensions1070804
-Node: VMS Installation Details1072177
-Node: VMS Running1074424
-Node: VMS GNV1077258
-Node: VMS Old Gawk1077981
-Node: Bugs1078451
-Node: Other Versions1082369
-Node: Notes1088453
-Node: Compatibility Mode1089253
-Node: Additions1090036
-Node: Accessing The Source1090963
-Node: Adding Code1092403
-Node: New Ports1098448
-Node: Derived Files1102583
-Ref: Derived Files-Footnote-11107904
-Ref: Derived Files-Footnote-21107938
-Ref: Derived Files-Footnote-31108538
-Node: Future Extensions1108636
-Node: Implementation Limitations1109219
-Node: Extension Design1110471
-Node: Old Extension Problems1111625
-Ref: Old Extension Problems-Footnote-11113133
-Node: Extension New Mechanism Goals1113190
-Ref: Extension New Mechanism Goals-Footnote-11116555
-Node: Extension Other Design Decisions1116741
-Node: Extension Future Growth1118847
-Node: Old Extension Mechanism1119683
-Node: Basic Concepts1121423
-Node: Basic High Level1122104
-Ref: figure-general-flow1122375
-Ref: figure-process-flow1122974
-Ref: Basic High Level-Footnote-11126203
-Node: Basic Data Typing1126388
-Node: Glossary1129743
-Node: Copying1155205
-Node: GNU Free Documentation License1192762
-Node: Index1217899
+Node: Top1292
+Node: Foreword40821
+Node: Preface45166
+Ref: Preface-Footnote-148219
+Ref: Preface-Footnote-248315
+Node: History48547
+Node: Names50921
+Ref: Names-Footnote-152398
+Node: This Manual52470
+Ref: This Manual-Footnote-158244
+Node: Conventions58344
+Node: Manual History60500
+Ref: Manual History-Footnote-163948
+Ref: Manual History-Footnote-263989
+Node: How To Contribute64063
+Node: Acknowledgments65207
+Node: Getting Started69401
+Node: Running gawk71780
+Node: One-shot72966
+Node: Read Terminal74191
+Ref: Read Terminal-Footnote-175841
+Ref: Read Terminal-Footnote-276117
+Node: Long76288
+Node: Executable Scripts77664
+Ref: Executable Scripts-Footnote-179497
+Ref: Executable Scripts-Footnote-279599
+Node: Comments80146
+Node: Quoting82613
+Node: DOS Quoting87236
+Node: Sample Data Files87911
+Node: Very Simple90426
+Node: Two Rules95077
+Node: More Complex96975
+Ref: More Complex-Footnote-199905
+Node: Statements/Lines99990
+Ref: Statements/Lines-Footnote-1104453
+Node: Other Features104718
+Node: When105646
+Node: Invoking Gawk107793
+Node: Command Line109256
+Node: Options110039
+Ref: Options-Footnote-1125417
+Node: Other Arguments125442
+Node: Naming Standard Input128100
+Node: Environment Variables129194
+Node: AWKPATH Variable129752
+Ref: AWKPATH Variable-Footnote-1132533
+Ref: AWKPATH Variable-Footnote-2132578
+Node: AWKLIBPATH Variable132838
+Node: Other Environment Variables133556
+Node: Exit Status136519
+Node: Include Files137194
+Node: Loading Shared Libraries140763
+Node: Obsolete142127
+Node: Undocumented142824
+Node: Regexp143066
+Node: Regexp Usage144455
+Node: Escape Sequences146480
+Node: Regexp Operators152149
+Ref: Regexp Operators-Footnote-1159529
+Ref: Regexp Operators-Footnote-2159676
+Node: Bracket Expressions159774
+Ref: table-char-classes161664
+Node: GNU Regexp Operators164187
+Node: Case-sensitivity167910
+Ref: Case-sensitivity-Footnote-1170878
+Ref: Case-sensitivity-Footnote-2171113
+Node: Leftmost Longest171221
+Node: Computed Regexps172422
+Node: Reading Files175759
+Node: Records177761
+Ref: Records-Footnote-1187284
+Node: Fields187321
+Ref: Fields-Footnote-1190277
+Node: Nonconstant Fields190363
+Node: Changing Fields192569
+Node: Field Separators198528
+Node: Default Field Splitting201230
+Node: Regexp Field Splitting202347
+Node: Single Character Fields205689
+Node: Command Line Field Separator206748
+Node: Full Line Fields210090
+Ref: Full Line Fields-Footnote-1210598
+Node: Field Splitting Summary210644
+Ref: Field Splitting Summary-Footnote-1213743
+Node: Constant Size213844
+Node: Splitting By Content218451
+Ref: Splitting By Content-Footnote-1222200
+Node: Multiple Line222240
+Ref: Multiple Line-Footnote-1228087
+Node: Getline228266
+Node: Plain Getline230482
+Node: Getline/Variable232577
+Node: Getline/File233724
+Node: Getline/Variable/File235065
+Ref: Getline/Variable/File-Footnote-1236664
+Node: Getline/Pipe236751
+Node: Getline/Variable/Pipe239450
+Node: Getline/Coprocess240557
+Node: Getline/Variable/Coprocess241809
+Node: Getline Notes242546
+Node: Getline Summary245333
+Ref: table-getline-variants245741
+Node: Read Timeout246653
+Ref: Read Timeout-Footnote-1250394
+Node: Command line directories250451
+Node: Printing251081
+Node: Print252712
+Node: Print Examples254049
+Node: Output Separators256833
+Node: OFMT258849
+Node: Printf260207
+Node: Basic Printf261113
+Node: Control Letters262652
+Node: Format Modifiers266464
+Node: Printf Examples272473
+Node: Redirection275185
+Node: Special Files282159
+Node: Special FD282692
+Ref: Special FD-Footnote-1286317
+Node: Special Network286391
+Node: Special Caveats287241
+Node: Close Files And Pipes288037
+Ref: Close Files And Pipes-Footnote-1295020
+Ref: Close Files And Pipes-Footnote-2295168
+Node: Expressions295318
+Node: Values296450
+Node: Constants297126
+Node: Scalar Constants297806
+Ref: Scalar Constants-Footnote-1298665
+Node: Nondecimal-numbers298847
+Node: Regexp Constants301847
+Node: Using Constant Regexps302322
+Node: Variables305377
+Node: Using Variables306032
+Node: Assignment Options307756
+Node: Conversion309631
+Ref: table-locale-affects315131
+Ref: Conversion-Footnote-1315755
+Node: All Operators315864
+Node: Arithmetic Ops316494
+Node: Concatenation318999
+Ref: Concatenation-Footnote-1321787
+Node: Assignment Ops321907
+Ref: table-assign-ops326895
+Node: Increment Ops328226
+Node: Truth Values and Conditions331660
+Node: Truth Values332743
+Node: Typing and Comparison333792
+Node: Variable Typing334585
+Ref: Variable Typing-Footnote-1338482
+Node: Comparison Operators338604
+Ref: table-relational-ops339014
+Node: POSIX String Comparison342562
+Ref: POSIX String Comparison-Footnote-1343518
+Node: Boolean Ops343656
+Ref: Boolean Ops-Footnote-1347726
+Node: Conditional Exp347817
+Node: Function Calls349549
+Node: Precedence353143
+Node: Locales356812
+Node: Patterns and Actions357901
+Node: Pattern Overview358955
+Node: Regexp Patterns360624
+Node: Expression Patterns361167
+Node: Ranges364948
+Node: BEGIN/END368052
+Node: Using BEGIN/END368814
+Ref: Using BEGIN/END-Footnote-1371550
+Node: I/O And BEGIN/END371656
+Node: BEGINFILE/ENDFILE373938
+Node: Empty376852
+Node: Using Shell Variables377169
+Node: Action Overview379454
+Node: Statements381811
+Node: If Statement383665
+Node: While Statement385164
+Node: Do Statement387208
+Node: For Statement388364
+Node: Switch Statement391516
+Node: Break Statement393670
+Node: Continue Statement395660
+Node: Next Statement397453
+Node: Nextfile Statement399843
+Node: Exit Statement402498
+Node: Built-in Variables404914
+Node: User-modified406009
+Ref: User-modified-Footnote-1414367
+Node: Auto-set414429
+Ref: Auto-set-Footnote-1427886
+Ref: Auto-set-Footnote-2428091
+Node: ARGC and ARGV428147
+Node: Arrays432001
+Node: Array Basics433506
+Node: Array Intro434332
+Node: Reference to Elements438649
+Node: Assigning Elements440919
+Node: Array Example441410
+Node: Scanning an Array443142
+Node: Controlling Scanning445456
+Ref: Controlling Scanning-Footnote-1450543
+Node: Delete450859
+Ref: Delete-Footnote-1453624
+Node: Numeric Array Subscripts453681
+Node: Uninitialized Subscripts455864
+Node: Multidimensional457491
+Node: Multiscanning460584
+Node: Arrays of Arrays462173
+Node: Functions466813
+Node: Built-in467632
+Node: Calling Built-in468710
+Node: Numeric Functions470698
+Ref: Numeric Functions-Footnote-1474530
+Ref: Numeric Functions-Footnote-2474887
+Ref: Numeric Functions-Footnote-3474935
+Node: String Functions475204
+Ref: String Functions-Footnote-1498162
+Ref: String Functions-Footnote-2498291
+Ref: String Functions-Footnote-3498539
+Node: Gory Details498626
+Ref: table-sub-escapes500305
+Ref: table-sub-posix-92501659
+Ref: table-sub-proposed503010
+Ref: table-posix-sub504364
+Ref: table-gensub-escapes505909
+Ref: Gory Details-Footnote-1507085
+Ref: Gory Details-Footnote-2507136
+Node: I/O Functions507287
+Ref: I/O Functions-Footnote-1514277
+Node: Time Functions514424
+Ref: Time Functions-Footnote-1525407
+Ref: Time Functions-Footnote-2525475
+Ref: Time Functions-Footnote-3525633
+Ref: Time Functions-Footnote-4525744
+Ref: Time Functions-Footnote-5525856
+Ref: Time Functions-Footnote-6526083
+Node: Bitwise Functions526349
+Ref: table-bitwise-ops526911
+Ref: Bitwise Functions-Footnote-1531132
+Node: Type Functions531316
+Node: I18N Functions532467
+Node: User-defined534094
+Node: Definition Syntax534898
+Ref: Definition Syntax-Footnote-1539812
+Node: Function Example539881
+Ref: Function Example-Footnote-1542530
+Node: Function Caveats542552
+Node: Calling A Function543070
+Node: Variable Scope544025
+Node: Pass By Value/Reference546988
+Node: Return Statement550496
+Node: Dynamic Typing553477
+Node: Indirect Calls554408
+Node: Library Functions564095
+Ref: Library Functions-Footnote-1567608
+Ref: Library Functions-Footnote-2567751
+Node: Library Names567922
+Ref: Library Names-Footnote-1571395
+Ref: Library Names-Footnote-2571615
+Node: General Functions571701
+Node: Strtonum Function572729
+Node: Assert Function575659
+Node: Round Function578985
+Node: Cliff Random Function580526
+Node: Ordinal Functions581542
+Ref: Ordinal Functions-Footnote-1584619
+Ref: Ordinal Functions-Footnote-2584871
+Node: Join Function585082
+Ref: Join Function-Footnote-1586853
+Node: Getlocaltime Function587053
+Node: Readfile Function590794
+Node: Data File Management592633
+Node: Filetrans Function593265
+Node: Rewind Function597334
+Node: File Checking598721
+Node: Empty Files599815
+Node: Ignoring Assigns602045
+Node: Getopt Function603599
+Ref: Getopt Function-Footnote-1614902
+Node: Passwd Functions615105
+Ref: Passwd Functions-Footnote-1624083
+Node: Group Functions624171
+Node: Walking Arrays632255
+Node: Sample Programs634391
+Node: Running Examples635065
+Node: Clones635793
+Node: Cut Program637017
+Node: Egrep Program646868
+Ref: Egrep Program-Footnote-1654641
+Node: Id Program654751
+Node: Split Program658400
+Ref: Split Program-Footnote-1661919
+Node: Tee Program662047
+Node: Uniq Program664850
+Node: Wc Program672279
+Ref: Wc Program-Footnote-1676545
+Ref: Wc Program-Footnote-2676745
+Node: Miscellaneous Programs676837
+Node: Dupword Program678025
+Node: Alarm Program680056
+Node: Translate Program684863
+Ref: Translate Program-Footnote-1689250
+Ref: Translate Program-Footnote-2689498
+Node: Labels Program689632
+Ref: Labels Program-Footnote-1693003
+Node: Word Sorting693087
+Node: History Sorting696971
+Node: Extract Program698810
+Ref: Extract Program-Footnote-1706313
+Node: Simple Sed706441
+Node: Igawk Program709503
+Ref: Igawk Program-Footnote-1724660
+Ref: Igawk Program-Footnote-2724861
+Node: Anagram Program724999
+Node: Signature Program728067
+Node: Advanced Features729167
+Node: Nondecimal Data731053
+Node: Array Sorting732636
+Node: Controlling Array Traversal733333
+Node: Array Sorting Functions741617
+Ref: Array Sorting Functions-Footnote-1745486
+Node: Two-way I/O745680
+Ref: Two-way I/O-Footnote-1751112
+Node: TCP/IP Networking751194
+Node: Profiling754038
+Node: Internationalization761541
+Node: I18N and L10N762966
+Node: Explaining gettext763652
+Ref: Explaining gettext-Footnote-1768720
+Ref: Explaining gettext-Footnote-2768904
+Node: Programmer i18n769069
+Node: Translator i18n773271
+Node: String Extraction774065
+Ref: String Extraction-Footnote-1775026
+Node: Printf Ordering775112
+Ref: Printf Ordering-Footnote-1777894
+Node: I18N Portability777958
+Ref: I18N Portability-Footnote-1780407
+Node: I18N Example780470
+Ref: I18N Example-Footnote-1783108
+Node: Gawk I18N783180
+Node: Debugger783801
+Node: Debugging784772
+Node: Debugging Concepts785205
+Node: Debugging Terms787061
+Node: Awk Debugging789658
+Node: Sample Debugging Session790550
+Node: Debugger Invocation791070
+Node: Finding The Bug792403
+Node: List of Debugger Commands798890
+Node: Breakpoint Control800224
+Node: Debugger Execution Control803888
+Node: Viewing And Changing Data807248
+Node: Execution Stack810604
+Node: Debugger Info812071
+Node: Miscellaneous Debugger Commands816053
+Node: Readline Support821229
+Node: Limitations822060
+Node: Arbitrary Precision Arithmetic824312
+Ref: Arbitrary Precision Arithmetic-Footnote-1825961
+Node: General Arithmetic826109
+Node: Floating Point Issues827829
+Node: String Conversion Precision828710
+Ref: String Conversion Precision-Footnote-1830415
+Node: Unexpected Results830524
+Node: POSIX Floating Point Problems832677
+Ref: POSIX Floating Point Problems-Footnote-1836502
+Node: Integer Programming836540
+Node: Floating-point Programming838279
+Ref: Floating-point Programming-Footnote-1844610
+Ref: Floating-point Programming-Footnote-2844880
+Node: Floating-point Representation845144
+Node: Floating-point Context846309
+Ref: table-ieee-formats847148
+Node: Rounding Mode848532
+Ref: table-rounding-modes849011
+Ref: Rounding Mode-Footnote-1852026
+Node: Gawk and MPFR852205
+Node: Arbitrary Precision Floats853616
+Ref: Arbitrary Precision Floats-Footnote-1856059
+Node: Setting Precision856375
+Ref: table-predefined-precision-strings857061
+Node: Setting Rounding Mode859206
+Ref: table-gawk-rounding-modes859610
+Node: Floating-point Constants860797
+Node: Changing Precision862226
+Ref: Changing Precision-Footnote-1863623
+Node: Exact Arithmetic863797
+Node: Arbitrary Precision Integers866935
+Ref: Arbitrary Precision Integers-Footnote-1869950
+Node: Dynamic Extensions870097
+Node: Extension Intro871555
+Node: Plugin License872820
+Node: Extension Mechanism Outline873505
+Ref: load-extension873922
+Ref: load-new-function875400
+Ref: call-new-function876395
+Node: Extension API Description878410
+Node: Extension API Functions Introduction879697
+Node: General Data Types884624
+Ref: General Data Types-Footnote-1890319
+Node: Requesting Values890618
+Ref: table-value-types-returned891355
+Node: Memory Allocation Functions892309
+Ref: Memory Allocation Functions-Footnote-1895055
+Node: Constructor Functions895151
+Node: Registration Functions896909
+Node: Extension Functions897594
+Node: Exit Callback Functions899896
+Node: Extension Version String901145
+Node: Input Parsers901795
+Node: Output Wrappers911552
+Node: Two-way processors916062
+Node: Printing Messages918270
+Ref: Printing Messages-Footnote-1919347
+Node: Updating `ERRNO'919499
+Node: Accessing Parameters920238
+Node: Symbol Table Access921468
+Node: Symbol table by name921982
+Node: Symbol table by cookie923958
+Ref: Symbol table by cookie-Footnote-1928090
+Node: Cached values928153
+Ref: Cached values-Footnote-1931643
+Node: Array Manipulation931734
+Ref: Array Manipulation-Footnote-1932832
+Node: Array Data Types932871
+Ref: Array Data Types-Footnote-1935574
+Node: Array Functions935666
+Node: Flattening Arrays939502
+Node: Creating Arrays946354
+Node: Extension API Variables951079
+Node: Extension Versioning951715
+Node: Extension API Informational Variables953616
+Node: Extension API Boilerplate954702
+Node: Finding Extensions958506
+Node: Extension Example959066
+Node: Internal File Description959796
+Node: Internal File Ops963887
+Ref: Internal File Ops-Footnote-1975396
+Node: Using Internal File Ops975536
+Ref: Using Internal File Ops-Footnote-1977889
+Node: Extension Samples978155
+Node: Extension Sample File Functions979679
+Node: Extension Sample Fnmatch988164
+Node: Extension Sample Fork989933
+Node: Extension Sample Inplace991146
+Node: Extension Sample Ord992924
+Node: Extension Sample Readdir993760
+Node: Extension Sample Revout995292
+Node: Extension Sample Rev2way995885
+Node: Extension Sample Read write array996575
+Node: Extension Sample Readfile998458
+Node: Extension Sample API Tests999558
+Node: Extension Sample Time1000083
+Node: gawkextlib1001447
+Node: Language History1004228
+Node: V7/SVR3.11005821
+Node: SVR41008141
+Node: POSIX1009583
+Node: BTL1010969
+Node: POSIX/GNU1011703
+Node: Feature History1017302
+Node: Common Extensions1030278
+Node: Ranges and Locales1031590
+Ref: Ranges and Locales-Footnote-11036207
+Ref: Ranges and Locales-Footnote-21036234
+Ref: Ranges and Locales-Footnote-31036468
+Node: Contributors1036689
+Node: Installation1042070
+Node: Gawk Distribution1042964
+Node: Getting1043448
+Node: Extracting1044274
+Node: Distribution contents1045966
+Node: Unix Installation1051671
+Node: Quick Installation1052288
+Node: Additional Configuration Options1054734
+Node: Configuration Philosophy1056470
+Node: Non-Unix Installation1058824
+Node: PC Installation1059282
+Node: PC Binary Installation1060581
+Node: PC Compiling1062429
+Node: PC Testing1065373
+Node: PC Using1066549
+Node: Cygwin1070717
+Node: MSYS1071526
+Node: VMS Installation1072040
+Node: VMS Compilation1072804
+Ref: VMS Compilation-Footnote-11074056
+Node: VMS Dynamic Extensions1074114
+Node: VMS Installation Details1075487
+Node: VMS Running1077738
+Node: VMS GNV1080572
+Node: VMS Old Gawk1081295
+Node: Bugs1081765
+Node: Other Versions1085683
+Node: Notes1091767
+Node: Compatibility Mode1092567
+Node: Additions1093350
+Node: Accessing The Source1094277
+Node: Adding Code1095717
+Node: New Ports1101762
+Node: Derived Files1105897
+Ref: Derived Files-Footnote-11111218
+Ref: Derived Files-Footnote-21111252
+Ref: Derived Files-Footnote-31111852
+Node: Future Extensions1111950
+Node: Implementation Limitations1112533
+Node: Extension Design1113785
+Node: Old Extension Problems1114939
+Ref: Old Extension Problems-Footnote-11116447
+Node: Extension New Mechanism Goals1116504
+Ref: Extension New Mechanism Goals-Footnote-11119869
+Node: Extension Other Design Decisions1120055
+Node: Extension Future Growth1122161
+Node: Old Extension Mechanism1122997
+Node: Basic Concepts1124737
+Node: Basic High Level1125418
+Ref: figure-general-flow1125690
+Ref: figure-process-flow1126289
+Ref: Basic High Level-Footnote-11129518
+Node: Basic Data Typing1129703
+Node: Glossary1133058
+Node: Copying1158289
+Node: GNU Free Documentation License1195845
+Node: Index1220981

End Tag Table