[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gawk-diffs] [SCM] gawk branch, feature/better-index, updated. gawk-4.1.
From: |
Arnold Robbins |
Subject: |
[gawk-diffs] [SCM] gawk branch, feature/better-index, updated. gawk-4.1.0-3719-g8ded83c |
Date: |
Sun, 14 Apr 2019 12:17:11 -0400 (EDT) |
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".
The branch, feature/better-index has been updated
via 8ded83c76cba4b10377d0f2a70b24d21f18097fd (commit)
from c0668e4b76ea872479dd8506037b08054555e97f (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=8ded83c76cba4b10377d0f2a70b24d21f18097fd
commit 8ded83c76cba4b10377d0f2a70b24d21f18097fd
Author: Arnold D. Robbins <address@hidden>
Date: Sun Apr 14 19:16:58 2019 +0300
More indexing fixes.
diff --git a/doc/gawk.texi b/doc/gawk.texi
index cf6af39..8011238 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -1323,6 +1323,7 @@ rest of the file alone. Such jobs are often easy with
@command{awk}.
The @command{awk} utility interprets a special-purpose programming
language that makes it easy to handle simple data-reformatting jobs.
address@hidden @command{gawk}
The GNU implementation of @command{awk} is called @command{gawk}; if you
invoke it with the proper options or environment variables,
it is fully compatible with
@@ -2506,7 +2507,7 @@ which usually means whatever you type on the keyboard.
This continues
until you indicate end-of-file by typing @kbd{Ctrl-d}.
(On non-POSIX operating systems, the end-of-file character may be different.)
address@hidden files, input @seeentry{input files}
address@hidden files @subentry input @seeentry{input files}
@cindex input files @subentry running @command{awk} without
@cindex @command{awk} programs @subentry running @subentry without input files
As an example, the following program prints a friendly piece of advice
@@ -2686,7 +2687,7 @@ of some sort from @command{awk}.
@cindex @code{ARGC}/@code{ARGV} variables @subentry portability and
@cindex portability @subentry @code{ARGV} variable
address@hidden dark corner @subentry @code{ARGV} variable @subentry value of
address@hidden dark corner @subentry @code{ARGV} variable, value of
Finally, the value of @code{ARGV[0]}
(@pxref{Built-in Variables})
varies depending upon your operating system.
@@ -2737,7 +2738,7 @@ of some sort from @command{awk}.
@cindex @code{ARGC}/@code{ARGV} variables @subentry portability and
@cindex portability @subentry @code{ARGV} variable
address@hidden dark corner @subentry @code{ARGV} variable @subentry value of
address@hidden dark corner @subentry @code{ARGV} variable, value of
Finally, the value of @code{ARGV[0]}
(@pxref{Built-in Variables})
varies depending upon your operating system.
@@ -3577,7 +3578,7 @@ is no other option.
@cindex backslash (@code{\}) @subentry continuing lines and @subentry comments
and
@cindex @code{\} (backslash) @subentry continuing lines and @subentry comments
and
address@hidden commenting, backslash continuation and
address@hidden commenting @subentry backslash continuation and
Another thing to keep in mind is that backslash continuation and
comments do not mix. As soon as @command{awk} sees the @samp{#} that
starts a comment, it ignores @emph{everything} on the rest of the
@@ -3930,7 +3931,7 @@ Also see
@itemx @option{--copyright}
@cindex @option{-C} option
@cindex @option{--copyright} option
address@hidden GPL (General Public License), printing
address@hidden GPL (General Public License) @subentry printing
Print the short version of the General Public License and then exit.
@item @address@hidden
@@ -3960,7 +3961,7 @@ names like @code{i}, @code{j}, etc.)
@itemx @address@hidden@var{file}]
@cindex @option{-D} option
@cindex @option{--debug} option
address@hidden @command{awk} debugging, enabling
address@hidden @command{awk} programs @subentry debugging, enabling
Enable debugging of @command{awk} programs
(@pxref{Debugging}).
By default, the debugger reads commands interactively from the keyboard
@@ -4058,7 +4059,7 @@ for information about this option.
@itemx @option{--help}
@cindex @option{-h} option
@cindex @option{--help} option
address@hidden GNU long options, printing list of
address@hidden GNU long options @subentry printing list of
@cindex options @subentry printing list of
@cindex printing @subentry list of options
Print a ``usage'' message summarizing the short- and long-style options
@@ -4292,7 +4293,7 @@ Warn about constructs that are not available in the
original version of
@itemx @option{--version}
@cindex @option{-V} option
@cindex @option{--version} option
address@hidden @command{gawk} @subentry versions of @subentry information
about, printing
address@hidden @command{gawk} @subentry versions of, printing information about
Print version information for this particular copy of @command{gawk}.
This allows you to determine if your copy of @command{gawk} is up to date
with respect to whatever the Free Software Foundation is currently
@@ -4301,6 +4302,7 @@ It is also useful for bug reports
(@pxref{Bugs}).
@cindex @code{-} (hyphen) @subentry @code{--} end of options marker
address@hidden hyphen (@code{-}) @subentry @code{--} end of options marker
@item @code{--}
Mark the end of all options.
Any command-line arguments following @code{--} are placed in @code{ARGV},
@@ -4502,7 +4504,7 @@ this @value{FN} itself.)
@node Environment Variables
@section The Environment Variables @command{gawk} Uses
address@hidden environment variables used by @command{gawk}
address@hidden environment variables @subentry used by @command{gawk}
A number of environment variables influence how @command{gawk}
behaves.
@@ -4518,7 +4520,7 @@ behaves.
@node AWKPATH Variable
@subsection The @env{AWKPATH} Environment Variable
@cindex @env{AWKPATH} environment variable
address@hidden directories @subentry searching for source files
address@hidden directories @subentry searching @subentry for source files
@cindex search paths @subentry for source files
@cindex differences in @command{awk} and @command{gawk} @subentry
@env{AWKPATH} environment variable
@ifinfo
@@ -4604,7 +4606,7 @@ found, and @command{gawk} no longer needs to use
@env{AWKPATH}.
@node AWKLIBPATH Variable
@subsection The @env{AWKLIBPATH} Environment Variable
@cindex @env{AWKLIBPATH} environment variable
address@hidden directories @subentry searching for loadable extensions
address@hidden directories @subentry searching @subentry for loadable extensions
@cindex search paths @subentry for loadable extensions
@cindex differences in @command{awk} and @command{gawk} @subentry
@code{AWKLIBPATH} environment variable
@@ -4761,6 +4763,7 @@ to @code{EXIT_FAILURE}.
This @value{SECTION} describes a feature that is specific to @command{gawk}.
@cindex @code{@@} (at-sign) @subentry @code{@@include} directive
address@hidden at-sign (@code{@@}) @subentry @code{@@include} directive
@cindex file inclusion, @code{@@include} directive
@cindex including files, @code{@@include} directive
The @code{@@include} keyword can be used to read external @command{awk} source
@@ -4889,8 +4892,9 @@ at their beginning. @xref{Changing The Namespace}, for
more information.
This @value{SECTION} describes a feature that is specific to @command{gawk}.
@cindex @code{@@} (at-sign) @subentry @code{@@load} directive
address@hidden at-sign (@code{@@}) @subentry @code{@@load} directive
@cindex loading extensions, @code{@@load} directive
address@hidden extensions @subentry loading @subentry @code{@@load} directive
address@hidden extensions @subentry loadable @subentry loading, @code{@@load}
directive
The @code{@@load} keyword can be used to read external @command{awk} extensions
(stored as system shared libraries).
This allows you to link in compiled code that may offer superior
@@ -5168,7 +5172,7 @@ $ @kbd{awk '/li/ @{ print $2 @}' mail-list}
@c @cindex operators, @code{!~}
@cindex @code{if} statement @subentry use of regexps in
@cindex @code{while} statement, use of regexps in
address@hidden @address@hidden statement, use of regexps in
address@hidden @address@hidden statement @subentry use of regexps in
@c @cindex statements, @code{if}
@c @cindex statements, @code{while}
@c @cindex statements, @code{do}
@@ -5226,7 +5230,7 @@ $ @kbd{awk '$1 !~ /J/' inventory-shipped}
@end example
@cindex regexp constants
address@hidden constant regexps
address@hidden constants @subentry regexp
@cindex regular expressions, constants @seeentry{regexp constants}
When a regexp is enclosed in slashes, such as @code{/foo/}, we call it
a @dfn{regexp constant}, much like @code{5.27} is a numeric constant and
@@ -5235,7 +5239,7 @@ a @dfn{regexp constant}, much like @code{5.27} is a
numeric constant and
@node Escape Sequences
@section Escape Sequences
address@hidden escape sequences @subentry in strings
address@hidden escape sequences
@cindex backslash (@code{\}) @subentry in escape sequences
@cindex @code{\} (backslash) @subentry in escape sequences
Some characters cannot be included literally in string constants
@@ -5321,7 +5325,7 @@ between @samp{0} and @samp{7}. For example, the code for
the ASCII ESC
@cindex @code{\} (backslash) @subentry @code{\x} escape sequence
@cindex backslash (@code{\}) @subentry @code{\x} escape sequence
@cindex common extensions @subentry @code{\x} escape sequence
address@hidden extensions @subentry common, @code{\x} escape sequence
address@hidden extensions @subentry common @subentry @code{\x} escape sequence
@item address@hidden@dots{}
The hexadecimal value @var{hh}, where @var{hh} stands for a sequence
of hexadecimal digits (@address@hidden, and either @address@hidden
@@ -5634,7 +5638,7 @@ may not be able to match the @sc{nul} character.
@cindex @code{[]} (square brackets), regexp operator
@cindex square brackets (@code{[]}), regexp operator
@cindex bracket expressions
address@hidden character sets @seealso{bracket expressions}
address@hidden character sets (in regular expressions) @seeentry{bracket
expressions}
@cindex character lists @seeentry{bracket expressions}
@cindex character classes @seeentry{bracket expressions}
@item @address@hidden@code{]}
@@ -5713,6 +5717,8 @@ This symbol is similar to @samp{*}, except that the
preceding expression can be
matched either once or not at all. For example, @samp{fe?d}
matches @samp{fed} and @samp{fd}, but nothing else.
address@hidden @address@hidden@}} (braces) @subentry regexp operator
address@hidden braces (@address@hidden@}}) @subentry regexp operator
@cindex interval expressions, regexp operator
@item @address@hidden@address@hidden@}}
@itemx @address@hidden@address@hidden,@}}
@@ -6303,7 +6309,7 @@ method of using @samp{\y} for the GNU @samp{\b} appears
to be the
lesser of two evils.
@cindex regular expressions @subentry @command{gawk} @subentry command-line
options
address@hidden @command{gawk} @subentry command-line options @subentry and
regular expressions
address@hidden @command{gawk} @subentry command-line options, regular
expressions and
The various command-line options
(@pxref{Options})
control how @command{gawk} interprets characters in regexps:
@@ -6712,7 +6718,7 @@ Reaching the end of an input file terminates the current
input record,
even if the last character in the file is not the character in @code{RS}.
@value{DARKCORNER}
address@hidden empty strings
address@hidden empty strings @seeentry{null strings}
@cindex null strings
@cindex strings, empty @seeentry{null strings}
The empty string @code{""} (a string without any characters)
@@ -6743,7 +6749,7 @@ sets the variable @code{RT} to the text in the input that
matched
@subsection Record Splitting with @command{gawk}
@cindex common extensions @subentry @code{RS} as a regexp
address@hidden extensions @subentry common, @code{RS} as a regexp
address@hidden extensions @subentry common @subentry @code{RS} as a regexp
When using @command{gawk}, the value of @code{RS} is not limited to a
one-character string. If it contains more than one character, it is
treated as a regular expression
@@ -6846,7 +6852,7 @@ GNU/Linux systems, where the @sc{nul} character is in
fact the record separator.
However, this usage is @emph{not} portable
to most other @command{awk} implementations.
address@hidden dark corner @subentry strings @subentry storing
address@hidden dark corner @subentry strings, storing
Almost all other @command{awk} address@hidden least that we know
about.} store strings internally as C-style strings. C strings use the
@sc{nul} character as the string terminator. In effect, this means that
@@ -6898,7 +6904,7 @@ GNU/Linux systems, where the @sc{nul} character is in
fact the record separator.
However, this usage is @emph{not} portable
to most other @command{awk} implementations.
address@hidden dark corner @subentry strings @subentry storing
address@hidden dark corner @subentry strings, storing
Almost all other @command{awk} address@hidden least that we know
about.} store strings internally as C-style strings. C strings use the
@sc{nul} character as the string terminator. In effect, this means that
@@ -7194,7 +7200,7 @@ The intervening field, @code{$5}, is created with an
empty value
(indicated by the second pair of adjacent colons),
and @code{NF} is updated with the value six.
address@hidden dark corner @subentry @code{NF} variable @subentry decrementing
address@hidden dark corner @subentry @code{NF} variable, decrementing
@cindex @code{NF} variable, decrementing
Decrementing @code{NF} throws away the values of the fields
after the new value of @code{NF} and recomputes @code{$0}.
@@ -7459,7 +7465,6 @@ $ @kbd{echo ' a b c d ' | awk 'BEGIN @{ FS = "[
\t\n]+" @}}
@noindent
@cindex null strings
@cindex strings @subentry null
address@hidden empty strings @seeentry{null strings}
In this case, the first field is null, or empty.
The stripping of leading and trailing whitespace also comes into
@@ -7480,9 +7485,9 @@ Because the leading whitespace was ignored when finding
@code{$1},
it is not part of the new @code{$0}. Finally, the last @code{print}
statement prints the new @code{$0}.
address@hidden @code{FS} @subentry containing @code{^}
address@hidden @code{FS} variable @subentry containing @code{^}
@cindex @code{^} (caret) @subentry in @code{FS}
address@hidden dark corner @subentry @code{^} @subentry in @code{FS}
address@hidden dark corner @subentry @code{^}, in @code{FS}
There is an additional subtlety to be aware of when using regular expressions
for field splitting.
It is not well specified in the POSIX standard, or anywhere else, what @samp{^}
@@ -7511,7 +7516,7 @@ $ @kbd{echo 'xxAA xxBxx C' |}
@subsection Making Each Character a Separate Field
@cindex common extensions @subentry single character fields
address@hidden extensions @subentry common, single character fields
address@hidden extensions @subentry common @subentry single character fields
@cindex differences in @command{awk} and @command{gawk} @subentry
single-character fields
@cindex single-character fields
@cindex fields @subentry single-character
@@ -8288,7 +8293,7 @@ In the second case, this special processing is not done.
@value{DARKCORNER}
@cindex field separator @subentry in multiline records
address@hidden @code{FS} @subentry in multiline records
address@hidden @code{FS} variable @subentry in multiline records
Now that the input is separated into records, the second step is to
separate the fields in the records. One way to do this is to divide each
of the lines into fields in the normal manner. This happens by default
@@ -8563,7 +8568,7 @@ rule in the program. @xref{Next Statement}.
@node Getline/Variable
@subsection Using @code{getline} into a Variable
address@hidden @code{getline} into a variable
address@hidden @code{getline} command @subentry into a variable
@cindex variables @subentry @code{getline} command into, using
You can use @samp{getline @var{var}} to read the next record from
@@ -8617,7 +8622,7 @@ the value of @code{NF} do not change.
@node Getline/File
@subsection Using @code{getline} from a File
address@hidden @code{getline} from a file
address@hidden @code{getline} command @subentry from a file
@cindex input redirection
@cindex redirection of input
@cindex @code{<} (left angle bracket) @subentry @code{<} operator (I/O)
@@ -8927,7 +8932,7 @@ You can open as many pipelines (and coprocesses) as the
underlying operating
system permits.
@cindex side effects @subentry @code{FILENAME} variable
address@hidden @code{FILENAME} variable, @address@hidden setting with
address@hidden @code{FILENAME} variable @subentry @code{getline}, setting with
@cindex dark corner @subentry @code{FILENAME} variable
@cindex @code{getline} command @subentry @code{FILENAME} variable and
@cindex @code{BEGIN} pattern @subentry @code{getline} and
@@ -9506,7 +9511,7 @@ makes a separate line.
@cindex output @subentry records
@cindex output record separator @address@hidden variable}
@cindex @code{ORS} variable
address@hidden @code{BEGIN} pattern @subentry @code{OFS}/@code{ORS} variables
@subentry assigning values to
address@hidden @code{BEGIN} pattern @subentry @code{OFS}/@code{ORS} variables,
assigning values to
In order to change how output fields and records are separated, assign
new values to the variables @code{OFS} and @code{ORS}. The usual
place to do this is in the @code{BEGIN} rule
@@ -9597,7 +9602,7 @@ if @code{OFMT} contains anything but a floating-point
conversion specification.
@cindex @code{printf} statement
@cindex output @subentry formatted
address@hidden formatting output
address@hidden formatting @subentry output
For more precise control over the output format than what is
provided by @code{print}, use @code{printf}.
With @code{printf} you can
@@ -10392,7 +10397,7 @@ command lines to be fed to the shell.
@cindex error output
@cindex standard error
@cindex file descriptors
address@hidden files, descriptors @seeentry{file descriptors}
address@hidden files @subentry descriptors @seeentry{file descriptors}
Running programs conventionally have three input and output streams
already available to them for reading and writing. These are known
@@ -10453,9 +10458,9 @@ has been ported to, not just those that are
POSIX-compliant:
@cindex common extensions @subentry @code{/dev/stdin} special file
@cindex common extensions @subentry @code{/dev/stdout} special file
@cindex common extensions @subentry @code{/dev/stderr} special file
address@hidden extensions @subentry common, @code{/dev/stdin} special file
address@hidden extensions @subentry common, @code{/dev/stdout} special file
address@hidden extensions @subentry common, @code{/dev/stderr} special file
address@hidden extensions @subentry common @subentry @code{/dev/stdin} special
file
address@hidden extensions @subentry common @subentry @code{/dev/stdout} special
file
address@hidden extensions @subentry common @subentry @code{/dev/stderr} special
file
@cindex file names @subentry standard streams in @command{gawk}
@cindex @code{/dev/@dots{}} special files
@cindex files @subentry @code{/dev/@dots{}} special files
@@ -10584,7 +10589,7 @@ Doing so results in unpredictable behavior.
@node Close Files And Pipes
@section Closing Input and Output Redirections
address@hidden files, output @seeentry{output files}
address@hidden files @subentry output @seeentry{output files}
@cindex input files @subentry closing
@cindex output @subentry files, closing
@cindex pipe @subentry closing
@@ -11102,6 +11107,7 @@ have the same value:
@end example
@cindex string constants
address@hidden constants @subentry string
A @dfn{string constant} consists of a sequence of characters enclosed in
double quotation marks. For example:
@@ -11935,7 +11941,7 @@ in order from the highest precedence to the lowest:
@table @code
@cindex common extensions @subentry @code{**} operator
address@hidden extensions @subentry common, @code{**} operator
address@hidden extensions @subentry common @subentry @code{**} operator
@cindex POSIX @command{awk} @subentry arithmetic operators and
@item @var{x} ^ @var{y}
@itemx @var{x} ** @var{y}
@@ -12359,8 +12365,8 @@ to a number.
@item @var{lvalue} @code{/=} @var{divisor} @tab Divide the value of
@var{lvalue} by @var{divisor}.
@item @var{lvalue} @code{%=} @var{modulus} @tab Set @var{lvalue} to its
remainder by @var{modulus}.
@cindex common extensions @subentry @code{**=} operator
address@hidden extensions @subentry common, @code{**=} operator
address@hidden @command{awk} language, POSIX version
address@hidden extensions @subentry common @subentry @code{**=} operator
address@hidden @command{awk} @subentry language, POSIX version
@cindex POSIX @command{awk}
@item @var{lvalue} @code{^=} @var{power} @tab Raise @var{lvalue} to the power
@var{power}.
@item @var{lvalue} @code{**=} @var{power} @tab Raise @var{lvalue} to the power
@var{power}. @value{COMMONEXT}
@@ -14010,7 +14016,7 @@ pattern. The expression @code{/li/} has the value one
if @samp{li}
appears in the current input record. Thus, as a pattern, @code{/li/}
matches any record containing @samp{li}.
address@hidden Boolean expressions, as patterns
address@hidden Boolean expressions @subentry as patterns
@cindex patterns @subentry Boolean expressions as
Boolean expressions are also commonly used as patterns.
Whether the pattern
@@ -14155,7 +14161,7 @@ $ @kbd{echo Yes | gawk '(/1/,/2/) || /Yes/'}
@end example
@cindex range patterns, line continuation and
address@hidden dark corner @subentry range patterns @subentry line continuation
and
address@hidden dark corner @subentry range patterns, line continuation and
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. @value{DARKCORNER}
@@ -14376,7 +14382,7 @@ either a @code{BEGINFILE} or an @code{ENDFILE} rule.
The @code{nextfile}
statement is allowed only inside a
@code{BEGINFILE} rule, not inside an @code{ENDFILE} rule.
address@hidden @code{getline} statement @subentry
@code{BEGINFILE}/@code{ENDFILE} patterns and
address@hidden @code{getline} command @subentry @code{BEGINFILE}/@code{ENDFILE}
patterns and
The @code{getline} statement (@pxref{Getline}) is restricted inside
both @code{BEGINFILE} and @code{ENDFILE}: only redirected
forms of @code{getline} are allowed.
@@ -15151,8 +15157,8 @@ then the code in any @code{END} rules is executed.
The @code{next} statement is not allowed inside @code{BEGINFILE} and
@code{ENDFILE} rules. @xref{BEGINFILE/ENDFILE}.
address@hidden @cindex @command{awk} language, POSIX version
@c @cindex @code{next}, inside a user-defined function
address@hidden @command{awk} @subentry language, POSIX version
@cindex @code{BEGIN} pattern @subentry @code{next}/@code{nextfile} statements
and
@cindex @code{END} pattern @subentry @code{next}/@code{nextfile} statements and
@cindex POSIX @command{awk} @subentry @code{next}/@code{nextfile} statements
and
@@ -15644,7 +15650,7 @@ program, @command{gawk} automatically sets it to a new
value when it
opens the next file.
@cindex @code{ENVIRON} array
address@hidden environment variables, in @code{ENVIRON} array
address@hidden environment variables @subentry in @code{ENVIRON} array
@item @code{ENVIRON}
An associative array containing the values of the environment. The array
indices are the environment variable names; the elements are the values of
@@ -15683,7 +15689,7 @@ On such systems, the @code{ENVIRON} array is empty
(except for
@cindex @command{gawk} @subentry @code{ERRNO} variable in
@cindex @code{ERRNO} variable
@cindex differences in @command{awk} and @command{gawk} @subentry @code{ERRNO}
variable
address@hidden error handling, @code{ERRNO} variable and
address@hidden error handling @subentry @code{ERRNO} variable and
@item @code{ERRNO #}
If a system error occurs during a redirection for @code{getline}, during
a read for @code{getline}, or during a @code{close()} operation, then
@@ -16092,8 +16098,8 @@ is available as an element within the @code{SYMTAB}
array.
<sidebar><title>Changing @code{NR} and @code{FNR}</title>
@end docbook
address@hidden @code{NR} variable, changing
address@hidden @code{FNR} variable, changing
address@hidden @code{NR} variable @subentry changing
address@hidden @code{FNR} variable @subentry changing
@cindex dark corner @subentry @code{FNR}/@code{NR} variables
@command{awk} increments @code{NR} and @code{FNR}
each time it reads a record, instead of setting them to the absolute
@@ -16132,8 +16138,8 @@ changed.
@center @b{Changing @code{NR} and @code{FNR}}
address@hidden @code{NR} variable, changing
address@hidden @code{FNR} variable, changing
address@hidden @code{NR} variable @subentry changing
address@hidden @code{FNR} variable @subentry changing
@cindex dark corner @subentry @code{FNR}/@code{NR} variables
@command{awk} increments @code{NR} and @code{FNR}
each time it reads a record, instead of setting them to the absolute
@@ -16710,7 +16716,7 @@ is independent of the number of elements in the array.
@subsection Referring to an Array Element
@cindex arrays @subentry referencing elements
@cindex array members
address@hidden elements of arrays
address@hidden elements in arrays
The principal way to use an array is to refer to one of its elements.
An @dfn{array reference} is an expression as follows:
@@ -16921,7 +16927,7 @@ This loop executes @var{body} once for each index in
@var{array} that the
program has previously used, with the variable @var{var} set to that index.
@cindex arrays @subentry @code{for} statement and
address@hidden @code{for} statement, looping over arrays
address@hidden @code{for} statement @subentry looping over arrays
The following program uses this form of the @code{for} statement. The
first rule scans the input records and notes which words appear (at
least once) in the input, by storing a one into the array @code{used} with
@@ -17178,7 +17184,7 @@ sorting arrays; see @ref{Array Sorting Functions}.
@cindex array subscripts @subentry numbers as
@cindex arrays @subentry numeric subscripts
@cindex subscripts in arrays @subentry numbers as
address@hidden @code{CONVFMT} variable, array subscripts and
address@hidden @code{CONVFMT} variable @subentry array subscripts and
An important aspect to remember about arrays is that @emph{array subscripts
are always strings}. When a numeric value is used as a subscript,
it is converted to a string value before being used for subscripting
@@ -17357,11 +17363,11 @@ However, if @option{--lint} is provided on the
command line
is not in the array is deleted.
@cindex common extensions @subentry @code{delete} to delete entire arrays
address@hidden extensions @subentry common, @code{delete} to delete entire
arrays
address@hidden extensions @subentry common @subentry @code{delete} to delete
entire arrays
@cindex arrays @subentry deleting entire contents
@cindex deleting entire arrays
@cindex @code{delete} @var{array}
address@hidden differences in @command{awk} and @command{gawk} @subentry array
elements @subentry deleting
address@hidden differences in @command{awk} and @command{gawk} @subentry array
elements, deleting
All the elements of an array may be deleted with a single statement
by leaving off the subscript in the @code{delete} statement,
as follows:
@@ -17576,7 +17582,7 @@ separate indices is recovered.
@node Arrays of Arrays
@section Arrays of Arrays
address@hidden arrays of arrays
address@hidden arrays @subentry arrays of arrays
@command{gawk} goes beyond standard @command{awk}'s multidimensional
array access and provides true arrays of
@@ -17862,7 +17868,7 @@ convention that always works---no whitespace after a
function name.
@cindex troubleshooting @subentry @command{gawk} @subentry fatal errors,
function arguments
@cindex @command{gawk} @subentry function arguments and
address@hidden differences in @command{awk} and @command{gawk} @subentry
function arguments (@command{gawk})
address@hidden differences in @command{awk} and @command{gawk} @subentry
function arguments
Each built-in function accepts a certain number of arguments.
In some cases, arguments can be omitted. The defaults for omitted
arguments vary from function to function and are described under the
@@ -17881,7 +17887,7 @@ j = sqrt(i++)
@cindex evaluation order @subentry functions
@cindex functions @subentry built-in @subentry evaluation order
address@hidden built-in functions, evaluation order
address@hidden built-in functions @subentry evaluation order
@noindent
the variable @code{i} is incremented to the value five before @code{sqrt()}
is called with a value of four for its actual parameter.
@@ -18315,7 +18321,7 @@ and 525 is then converted to the string @code{"525"},
which has
three characters.
@cindex length of input record
address@hidden input record @subentry length of
address@hidden input record, length of
If no argument is supplied, @code{length()} returns the length of @code{$0}.
@c @cindex historical features
@@ -18352,10 +18358,10 @@ been specified on the command line, @command{gawk}
issues a
warning about this.
@cindex common extensions @subentry @code{length()} applied to an array
address@hidden extensions @subentry common, @code{length()} applied to an array
address@hidden extensions @subentry common @subentry @code{length()} applied to
an array
@cindex differences in @command{awk} and @command{gawk} @subentry
@code{length()} function
@cindex number of array elements
address@hidden array, number of elements
address@hidden arrays @subentry number of elements
With @command{gawk} and several other @command{awk} implementations, when
given an
array argument, the @code{length()} function returns the number of elements
in the array. @value{COMMONEXT}
@@ -18601,7 +18607,7 @@ In POSIX mode (@pxref{Options}), the fourth argument is
not allowed.
@item @code{sprintf(@var{format}, @var{expression1}, @dots{})}
@cindexawkfunc{sprintf}
address@hidden formatting strings
address@hidden formatting @subentry strings
Return (without printing) the string that @code{printf} would
have printed out with the same arguments
(@pxref{Printf}).
@@ -18615,7 +18621,7 @@ pival = sprintf("pi = %.2f (approx.)", 22/7)
assigns the string @address@hidden = 3.14 (approx.)}} to the variable
@code{pival}.
@cindexgawkfunc{strtonum}
address@hidden convert string to number
address@hidden converting @subentry string to number
@item @code{strtonum(@var{str}) #}
Examine @var{str} and return its numeric value. If @var{str}
begins with a leading @samp{0}, @code{strtonum()} assumes that @var{str}
@@ -18801,7 +18807,7 @@ string = substr(string, 1, 2) "CDE" substr(string, 6)
@cindex strings @subentry converting letter case
@item @code{tolower(@var{string})}
@cindexawkfunc{tolower}
address@hidden convert string to lower case
address@hidden converting @subentry string to lower case
Return a copy of @var{string}, with each uppercase character
in the string replaced with its corresponding lowercase character.
Nonalphabetic characters are left unchanged. For example,
@@ -18809,7 +18815,7 @@ Nonalphabetic characters are left unchanged. For
example,
@item @code{toupper(@var{string})}
@cindexawkfunc{toupper}
address@hidden convert string to upper case
address@hidden converting @subentry string to upper case
Return a copy of @var{string}, with each lowercase character
in the string replaced with its corresponding uppercase character.
Nonalphabetic characters are left unchanged. For example,
@@ -18875,7 +18881,7 @@ Although this makes a certain amount of sense, it can
be surprising.
@cindex escape processing @subentry @code{gsub()}/@code{gensub()}/@code{sub()}
functions
@cindex @code{sub()} function @subentry escape processing
@cindex @code{gsub()} function @subentry escape processing
address@hidden @code{gensub()} function (@command{gawk}), escape processing
address@hidden @code{gensub()} function (@command{gawk}) @subentry escape
processing
@cindex @code{\} (backslash) @subentry
@code{gsub()}/@code{gensub()}/@code{sub()} functions and
@cindex backslash (@code{\}) @subentry
@code{gsub()}/@code{gensub()}/@code{sub()} functions and
@cindex @code{&} (ampersand) @subentry
@code{gsub()}/@code{gensub()}/@code{sub()} functions and
@@ -19175,7 +19181,7 @@ to do substitutions.
@node I/O Functions
@subsection Input/Output Functions
address@hidden input/output functions
address@hidden input/output @subentry functions
The following functions relate to input/output (I/O).
Optional parameters are enclosed in square brackets ([ ]):
@@ -19224,7 +19230,7 @@ This is the purpose of the @code{fflush()}
address@hidden also
buffers its output, and the @code{fflush()} function forces
@command{gawk} to flush its buffers.
address@hidden extensions @subentry common, @code{fflush()} function
address@hidden extensions @subentry common @subentry @code{fflush()} function
@cindex Brian Kernighan's @command{awk}
Brian Kernighan added @code{fflush()} to his @command{awk} in April
1992. For two decades, it was a common extension. In December
@@ -19612,7 +19618,7 @@ which is sufficient to represent times through
including negative timestamps that represent times before the
epoch.
address@hidden @command{date} utility, GNU
address@hidden @command{date} utility @subentry GNU
@cindex time @subentry retrieving
In order to make it easier to process such log files and to produce
useful reports, @command{gawk} provides the following functions for
@@ -19810,7 +19816,7 @@ The weekday as a decimal number (1--7). Monday is day
one.
The week number of the year (with the first Sunday as the first day of week
one)
as a decimal number (00--53).
address@hidden @cindex ISO 8601
address@hidden ISO @subentry ISO 8601 date and time standard
@item %V
The week number of the year (with the first Monday as the first
day of week one) as a decimal number (01--53).
@@ -19911,7 +19917,7 @@ The date in VMS format (e.g., @samp{20-JUN-1991}).
Additionally, the alternative representations are recognized but their
normal representations are used.
address@hidden @code{date} utility, POSIX
address@hidden @code{date} utility @subentry POSIX
@cindex POSIX @command{awk} @subentry @code{date} utility and
The following example is an @command{awk} implementation of the POSIX
@command{date} utility. Normally, the @command{date} utility prints the
@@ -20088,7 +20094,7 @@ Operands | 0 | 1 | 0 | 1 | 0 | 1
@end docbook
@end float
address@hidden bitwise complement
address@hidden bitwise @subentry complement
@cindex complement, bitwise
As you can see, the result of an AND operation is 1 only when @emph{both}
bits are 1.
@@ -20117,12 +20123,12 @@ Optional parameters are enclosed in square brackets
([ ]):
@cindex @command{gawk} @subentry bitwise operations in
@table @asis
@cindexgawkfunc{and}
address@hidden bitwise AND
address@hidden bitwise @subentry AND
@item @code{and(address@hidden@code{,} @var{v2} address@hidden,}
@address@hidden)}
Return the bitwise AND of the arguments. There must be at least two.
@cindexgawkfunc{compl}
address@hidden bitwise complement
address@hidden bitwise @subentry complement
@item @code{compl(@var{val})}
Return the bitwise complement of @var{val}.
@@ -20132,7 +20138,7 @@ Return the bitwise complement of @var{val}.
Return the value of @var{val}, shifted left by @var{count} bits.
@cindexgawkfunc{or}
address@hidden bitwise OR
address@hidden bitwise @subentry OR
@item @code{or(address@hidden@code{,} @var{v2} address@hidden,}
@address@hidden)}
Return the bitwise OR of the arguments. There must be at least two.
@@ -20142,7 +20148,7 @@ Return the bitwise OR of the arguments. There must be
at least two.
Return the value of @var{val}, shifted right by @var{count} bits.
@cindexgawkfunc{xor}
address@hidden bitwise XOR
address@hidden bitwise @subentry XOR
@item @code{xor(address@hidden@code{,} @var{v2} address@hidden,}
@address@hidden)}
Return the bitwise XOR of the arguments. There must be at least two.
@end table
@@ -20664,9 +20670,9 @@ Many of the subsequent examples in this @value{SECTION}
use
the @code{return} statement.
@cindex common extensions @subentry @code{func} keyword
address@hidden extensions @subentry common, @code{func} keyword
address@hidden @cindex @command{awk} language, POSIX version
address@hidden extensions @subentry common @subentry @code{func} keyword
@c @cindex POSIX @command{awk}
address@hidden @command{awk} @subentry language, POSIX version
@cindex POSIX @command{awk} @subentry @code{function} keyword in
In many @command{awk} implementations, including @command{gawk},
the keyword @code{function} may be
@@ -21335,7 +21341,8 @@ function calls, you tell @command{gawk} to use the
@emph{value} of a
variable as the @emph{name} of the function to call.
@cindex @code{@@} (at-sign) @subentry @code{@@}-notation for indirect function
calls
address@hidden indirect function calls, @code{@@}-notation
address@hidden at-sign (@code{@@}) @subentry @code{@@}-notation for indirect
function calls
address@hidden indirect function calls @subentry @code{@@}-notation
@cindex function calls @subentry indirect @subentry @code{@@}-notation for
The syntax is similar to that of a regular function call: an identifier
immediately followed by an opening parenthesis, any arguments, and then
@@ -21911,7 +21918,7 @@ The leading capital letter indicates that it is global,
while the fact that
the variable name is not all capital letters indicates that the variable is
not one of @command{awk}'s predefined variables, such as @code{FS}.
address@hidden @option{--dump-variables} option, using for library functions
address@hidden @option{--dump-variables} option @subentry using for library
functions
It is also important that @emph{all} variables in library
functions that do not need to save state are, in fact, declared
address@hidden@command{gawk}'s @option{--dump-variables} command-line
@@ -23188,7 +23195,7 @@ are left alone.
@cindex libraries of @command{awk} functions @subentry command-line options
@cindex functions @subentry library @subentry command-line options
address@hidden command-line options @subentry processing
address@hidden command line @subentry options @subentry processing
@cindex options @subentry command-line @subentry processing
@cindex functions @subentry library @subentry C library
@cindex arguments @subentry processing
@@ -23901,7 +23908,7 @@ uses these functions.
@cindex libraries of @command{awk} functions @subentry group database
@subentry reading
@cindex functions @subentry library @subentry group database, reading
@cindex group database, reading
address@hidden database, group, reading
address@hidden database @subentry group, reading
@cindex @code{PROCINFO} array @subentry group membership and
@cindex @code{getgrent()} function (C library)
@cindex @code{getgrent()} user-defined function
@@ -24195,7 +24202,7 @@ function getgrgid(gid)
The @code{getgruser()} function does not have a C counterpart. It takes a
username and returns the list of groups that have the user as a member:
address@hidden @code{getgruser()} function, user-defined
address@hidden @code{getgruser()} user-defined function
@example
@c file eg/lib/groupawk.in
function getgruser(user)
@@ -25875,7 +25882,7 @@ suggestion.
@c FIXME: One day, update to current POSIX version of wc
address@hidden counting
address@hidden counting words, lines, and characters
@cindex input files @subentry counting elements in
@cindex words @subentry counting
@cindex characters @subentry counting
@@ -28033,7 +28040,7 @@ things considerably. What problem does this engender
though?
@cindex search paths @subentry for source files
@cindex source address@hidden search path for
@cindex files @subentry source, search path for
address@hidden directories @subentry searching
address@hidden directories @subentry searching @subentry for source files
@item
As an additional example of the idea that it is not always necessary to
add new features to a program, consider the idea of having two files in
@@ -28209,7 +28216,7 @@ using this facility could lead to surprising results,
the default is to leave it
disabled. If you want it, you must explicitly request it.
@cindex programming conventions @subentry @code{--non-decimal-data} option
address@hidden @option{--non-decimal-data} option, @code{strtonum()} function
and
address@hidden @option{--non-decimal-data} option @subentry @code{strtonum()}
function and
@cindex @code{strtonum()} function (@command{gawk}), @code{--non-decimal-data}
option and
@quotation CAUTION
@emph{Use of this option is not recommended.}
@@ -28517,7 +28524,8 @@ sorted array traversal is not the default.
@node Array Sorting Functions
@subsection Sorting Array Values and Indices with @command{gawk}
address@hidden arrays @subentry sorting
address@hidden arrays @subentry sorting @subentry @code{asort()} function
(@command{gawk})
address@hidden arrays @subentry sorting @subentry @code{asorti()} function
(@command{gawk})
@cindexgawkfunc{asort}
@cindex @code{asort()} function (@command{gawk}) @subentry arrays, sorting
@cindexgawkfunc{asorti}
@@ -29314,7 +29322,8 @@ which is correct, but possibly unexpected.
@samp{print}, that distinction is retained.)
@cindex profiling @command{awk} programs, dynamically
address@hidden @command{gawk} program @subentry dynamic profiling
address@hidden @command{gawk} @subentry dynamic profiling
address@hidden @command{gawk} @subentry profiling programs
@cindex dynamic profiling
Besides creating profiles when a program has completed,
@command{gawk} can produce a profile while it is running.
@@ -29479,7 +29488,7 @@ As a result, internationalization and localization
of programs and software systems became a common practice.
@cindex internationalization @subentry localization
address@hidden @command{gawk}, internationalization and
@seeentry{internationalization}
address@hidden @command{gawk} @subentry internationalization
@seeentry{internationalization}
@cindex internationalization @subentry localization @subentry @command{gawk}
and
For many years, the ability to provide internationalization
was largely restricted to programs written in C and C++.
@@ -29507,7 +29516,7 @@ a requirement.
@cindex internationalization
@cindex localization @address@hidden localization}
address@hidden localization
address@hidden internationalization @subentry localization
@dfn{Internationalization} means writing (or modifying) a program once,
in such a way that it can use multiple languages without requiring
further source code changes.
@@ -29561,7 +29570,7 @@ by calling the @code{textdomain()} function.
@cindex @code{.pot} files
@cindex files @subentry @code{.pot}
address@hidden portable object template files
address@hidden portable object @subentry template files
@cindex files @subentry portable object template
@item
Messages from the application are extracted from the source code and
@@ -29644,7 +29653,7 @@ printf("%s", _("Don't Panic!\n"));
@end example
@cindex internationalization @subentry localization @subentry locale categories
address@hidden @command{gettext} library, locale categories
address@hidden @command{gettext} library @subentry locale categories
@cindex locale categories
@noindent
This reduces the typing overhead to just three extra characters per string
@@ -29686,7 +29695,9 @@ such as @code{/[[:alnum:]]/}
(@pxref{Bracket Expressions}).
@cindex monetary information, localization
address@hidden currency symbols @subentry localization
address@hidden currency symbols, localization
address@hidden internationalization @subentry localization @subentry monetary
information
address@hidden internationalization @subentry localization @subentry currency
symbols
@cindex @code{LC_MONETARY} locale category
@item LC_MONETARY
Monetary information, such as the currency symbol, and whether the
@@ -29833,8 +29844,8 @@ BEGIN @{
@}
@end example
address@hidden @code{_} (underscore) @subentry translatable string
address@hidden underscore (@code{_}) @subentry translatable string
address@hidden @code{_} (underscore) @subentry translatable strings
address@hidden underscore (@code{_}) @subentry translatable strings
@item
Mark all translatable strings with a leading underscore (@samp{_})
character. It @emph{must} be adjacent to the opening
@@ -29933,7 +29944,7 @@ is covered.
@subsection Extracting Marked Strings
@cindex strings @subentry extracting
@cindex @option{--gen-pot} option
address@hidden command-line options @subentry string extraction
address@hidden command line @subentry options @subentry string extraction
@cindex string extraction (internationalization)
@cindex marked string extraction (internationalization)
@cindex extraction, of marked strings (internationalization)
@@ -30105,9 +30116,9 @@ and @code{bindtextdomain()}, the @command{awk} program
can be made to run, but
all the messages are output in the original language.
For example:
address@hidden @code{bindtextdomain()} function (@command{gawk}), portability
and
address@hidden @code{dcgettext()} function (@command{gawk}), portability and
address@hidden @code{dcngettext()} function (@command{gawk}), portability and
address@hidden @code{bindtextdomain()} function (@command{gawk}) @subentry
portability and
address@hidden @code{dcgettext()} function (@command{gawk}) @subentry
portability and
address@hidden @code{dcngettext()} function (@command{gawk}) @subentry
portability and
@example
@c file eg/lib/libintl.awk
function bindtextdomain(dir, domain)
@@ -30257,7 +30268,7 @@ $ @kbd{mkdir en_US.UTF-8 en_US.UTF-8/LC_MESSAGES}
@cindex @code{.po} files @subentry converting to @code{.mo}
@cindex files @subentry @code{.po} @subentry converting to @code{.mo}
@cindex @code{.mo} files, converting from @code{.po}
address@hidden files @subentry @code{.mo} @subentry converting from @code{.po}
address@hidden files @subentry @code{.mo}, converting from @code{.po}
@cindex portable object files @subentry converting to message object files
@cindex files @subentry portable object @subentry converting to message object
files
@cindex message object files @subentry converting from portable object files
@@ -30358,7 +30369,7 @@ a number of translations for its messages.
@node Debugger
@chapter Debugging @command{awk} Programs
address@hidden debugging @command{awk} programs
address@hidden debugging @subentry @command{awk} programs
@c The original text for this chapter was contributed by Efraim Yawitz.
@@ -30446,7 +30457,7 @@ The following list defines terms used throughout the
rest of
this @value{CHAPTER}:
@table @dfn
address@hidden call stack (debugger)
address@hidden call stack @subentry explanation of
@cindex stack frame (debugger)
@item Stack frame
Programs generally call functions during the course of their execution.
@@ -30633,7 +30644,7 @@ let's see how we got to where we are. At the prompt,
we type @samp{bt}
(short for ``backtrace''), and the debugger responds with a
listing of the current stack frames:
address@hidden debugger @subentry stack frames @subentry showing
address@hidden debugger @subentry stack frames, showing
@cindex debugger @subentry @code{bt} command
@cindex debugger @subentry @code{backtrace} command
@example
@@ -30922,7 +30933,7 @@ it continues executing the program.
@cindex debugger commands @subentry @code{clear}
@cindex @code{clear} debugger command
@cindex delete breakpoint @subentry at location
address@hidden breakpoint at location, how to delete
address@hidden breakpoint @subentry at location, how to delete
@item @code{clear} address@hidden@code{:address@hidden | @var{function}]
Without any argument, delete any breakpoint at the next instruction
to be executed in the selected stack frame. If the program stops at
@@ -30943,7 +30954,7 @@ Delete breakpoint(s) set at entry to function
@var{function}.
@cindex debugger commands @subentry @code{condition}
@cindex @code{condition} debugger command
address@hidden breakpoint condition
address@hidden breakpoint @subentry condition
@item @code{condition} @var{n} @code{"@var{expression}"}
Add a condition to existing breakpoint or watchpoint @var{n}. The
condition is an @command{awk} expression @emph{enclosed in double quotes}
@@ -31027,7 +31038,7 @@ execution of the program than we saw in our earlier
example:
@cindex @code{silent} debugger command
@cindex debugger commands @subentry @code{end}
@cindex @code{end} debugger command
address@hidden breakpoint commands
address@hidden breakpoint @subentry commands to execute at
@cindex commands to execute at breakpoint
@item @code{commands} address@hidden
@itemx @code{silent}
@@ -31292,7 +31303,7 @@ functions that called the one you are in. The commands
for doing this are:
@cindex @code{backtrace} debugger command
@cindex @code{bt} debugger command (alias for @code{backtrace})
@cindex @code{where} debugger command (alias for @code{backtrace})
address@hidden call stack, display in debugger
address@hidden call stack @subentry display in debugger
@cindex traceback, display in debugger
@item @code{backtrace} address@hidden
@itemx @code{bt} address@hidden
@@ -31908,7 +31919,7 @@ and when making indirect function calls
(@pxref{Indirect Calls}).
@cindex namespace @subentry default
@cindex namespace @subentry @code{awk}
address@hidden @code{awk} namespace
address@hidden @code{awk} @subentry namespace
The default namespace, not surprisingly, is @code{awk}.
All of the predefined @command{awk} and @command{gawk} variables
are in this namespace, and thus have qualified names like
@@ -31927,6 +31938,7 @@ It also keeps your code looking natural.
@cindex namespaces @subentry changing
@cindex @code{@@} (at-sign) @subentry @code{@@namespace} directive
address@hidden at-sign (@code{@@}) @subentry @code{@@namespace} directive
In order to set the current namespace, use an @code{@@namespace} directive
at the top level of your program:
@@ -31958,7 +31970,7 @@ an implicit @samp{@@namespace "awk"}. Similarly, each
chunk of
command-line code supplied with @option{-e} has such an implicit
initial statement (@pxref{Options}).
address@hidden current namespace @subentry pushing and popping
address@hidden current namespace, pushing and popping
@cindex namespace @subentry pushing and popping
Files included with @code{@@include} (@pxref{Include Files}) ``push''
and ``pop'' the current namespace. That is, each @code{@@include} saves
@@ -31968,7 +31980,8 @@ directive is seen. When @command{gawk} finishes
processing the included
file, the saved namespace is restored and processing continues where it
left off in the original file.
address@hidden @code{@@} (at-sign) @subentry @code{@@namespace}, no effect on
@address@hidden @address@hidden @address@hidden and @code{ENDFILE}
address@hidden @code{@@} (at-sign) @subentry @code{@@namespace} directive
@subentry no effect on @code{BEGIN}, @code{BEGINFILE}, @code{END}, and
@code{ENDFILE}
address@hidden at-sign (@code{@@}) @subentry @code{@@namespace} directive
@subentry no effect on @code{BEGIN}, @code{BEGINFILE}, @code{END}, and
@code{ENDFILE}
@cindex @code{BEGIN} pattern @subentry execution order not affected by
@code{@@namespace}
@cindex @code{BEGINFILE} pattern @subentry execution order not affected by
@code{@@namespace}
@cindex @code{END} pattern @subentry execution order not affected by
@code{@@namespace}
@@ -31981,7 +31994,7 @@ of @code{BEGIN}, @code{BEGINFILE}, @code{END}, and
@code{ENDFILE} rules.
@cindex naming rules, namespaces and component names
@cindex namespace names, naming rules
address@hidden component names, naming rules
address@hidden component names @subentry naming rules
A number of rules apply to the namespace and component names, as follows.
@itemize @bullet
@@ -32048,8 +32061,8 @@ $ @kbd{gawk -f systime.awk}
@section Internal Name Management
@cindex name management
address@hidden @code{awk} namespace @subentry identifier name storage
address@hidden @code{awk} namespace @subentry use for indirect function calls
address@hidden @code{awk} @subentry namespace @subentry identifier name storage
address@hidden @code{awk} @subentry namespace @subentry use for indirect
function calls
For backwards compatibility, all identifiers in the @code{awk} namespace
are stored internally as unadorned identifiers (that is, without a
leading @samp{awk::}). This is mainly relevant
@@ -32225,7 +32238,7 @@ in order to accommodate namespaces, and the debugger's
@code{dump} command
was adjusted to match.
@cindex namespaces @subentry interaction with extension API
address@hidden extension API interaction with namespaces
address@hidden extension API @subentry interaction with namespaces
The extension API (@pxref{Dynamic Extensions}) has always allowed for
placing functions into a different namespace, although this was not
previously implemented. However, the symbol lookup and symbol update
@@ -32275,7 +32288,7 @@ version of @command{gawk}.
@cindex arbitrary precision
@cindex multiple precision
@cindex infinite precision
address@hidden floating-point @subentry numbers, arbitrary-precision
address@hidden floating-point @subentry numbers @subentry arbitrary-precision
This @value{CHAPTER} introduces some basic concepts relating to
how computers do arithmetic and defines some important terms.
@@ -32366,9 +32379,9 @@ Modern systems support floating-point arithmetic in
hardware, with a
limited range of values. There are software libraries that allow
the use of arbitrary-precision floating-point calculations.
address@hidden floating-point @subentry numbers, single-precision
address@hidden floating-point @subentry numbers, double-precision
address@hidden floating-point @subentry numbers, arbitrary-precision
address@hidden floating-point @subentry numbers @subentry single-precision
address@hidden floating-point @subentry numbers @subentry double-precision
address@hidden floating-point @subentry numbers @subentry arbitrary-precision
@cindex single-precision
@cindex double-precision
@cindex arbitrary precision
@@ -34169,7 +34182,7 @@ process and reduces the time needed to create the value.
@node Memory Allocation Functions
@subsection Memory Allocation Functions and Convenience Macros
@cindex allocating memory for extensions
address@hidden extensions @subentry allocating memory
address@hidden extensions @subentry loadable @subentry allocating memory
@cindex memory, allocating for extensions
The API provides a number of @dfn{memory allocation} functions for
@@ -34363,7 +34376,7 @@ to be a @samp{char *} value pointing to data previously
obtained from
@node Registration Functions
@subsection Registration Functions
@cindex register extension
address@hidden extension registration
address@hidden extensions @subentry loadable @subentry registration
This @value{SECTION} describes the API functions for
registering parts of your extension with @command{gawk}.
@@ -35591,7 +35604,7 @@ you should release any cached values that you created,
using
@node Array Manipulation
@subsection Array Manipulation
@cindex array manipulation in extensions
address@hidden extensions @subentry array manipulation in
address@hidden extensions @subentry loadable @subentry array manipulation in
The primary data address@hidden, the only data structure.} in @command{awk}
is the associative array (@pxref{Arrays}).
@@ -36267,8 +36280,8 @@ information about how @command{gawk} was invoked.
@node Extension Versioning
@subsubsection API Version Constants and Variables
address@hidden API version
address@hidden extension API version
address@hidden API @subentry version
address@hidden extension API @subentry version
The API provides both a ``major'' and a ``minor'' version number.
The API versions are available at compile time as C preprocessor defines
@@ -36368,8 +36381,8 @@ calls @code{check_mpfr_version()}.
@node Extension API Informational Variables
@subsubsection Informational Variables
address@hidden API informational variables
address@hidden extension API informational variables
address@hidden API @subentry informational variables
address@hidden extension API @subentry informational variables
The API provides access to several variables that describe
whether the corresponding command-line options were enabled when
@@ -36581,7 +36594,7 @@ The @code{get_file()} API is new
@node Finding Extensions
@section How @command{gawk} Finds Extensions
address@hidden extension search path
address@hidden extensions @subentry loadable @subentry search path
@cindex finding extensions
Compiled extensions have to be installed in a directory where
@@ -36593,7 +36606,7 @@ path with a list of directories to search for compiled
extensions.
@node Extension Example
@section Example: Some File Functions
address@hidden extension example
address@hidden extensions @subentry loadable @subentry example
@quotation
@i{No matter where you go, there you are.}
@@ -37231,7 +37244,7 @@ $ @kbd{AWKLIBPATH=$PWD gawk -f testff.awk}
@node Extension Samples
@section The Sample Extensions in the @command{gawk} Distribution
address@hidden extensions distributed with @command{gawk}
address@hidden extensions @subentry loadable @subentry distributed with
@command{gawk}
This @value{SECTION} provides a brief overview of the sample extensions
that come in the @command{gawk} distribution. Some of them are intended
@@ -37935,8 +37948,7 @@ for more information.
@node gawkextlib
@section The @code{gawkextlib} Project
address@hidden @code{gawkextlib}
address@hidden extensions @subentry where to find
address@hidden extensions @subentry loadable @subentry @code{gawkextlib} project
@cindex @code{gawkextlib} project
The @uref{https://sourceforge.net/projects/gawkextlib/, @code{gawkextlib}}
@@ -38503,7 +38515,7 @@ available in his @command{awk}.
@appendixsec Extensions in @command{gawk} Not in POSIX @command{awk}
@cindex compatibility mode (@command{gawk}) @subentry extensions
address@hidden extensions @subentry in @command{gawk} @subentry not in POSIX
@command{awk}
address@hidden extensions @subentry in @command{gawk}, not in POSIX
@command{awk}
@cindex POSIX @subentry @command{gawk} extensions not included in
The GNU implementation, @command{gawk}, adds a large number of features.
They can all be disabled with either the @option{--traditional} or
@@ -40641,6 +40653,7 @@ See also the @file{README_d/README.pc} file in the
distribution.
@node PC Binary Installation
@appendixsubsubsec Installing a Prepared Distribution for MS-Windows Systems
address@hidden installation @subentry MS-Windows
The only supported binary distribution for MS-Windows systems
is that provided by Eli Zaretskii's
@uref{https://sourceforge.net/projects/ezwinports/,
@@ -40654,7 +40667,7 @@ The file @file{README_d/README.pc} in the
@command{gawk} distribution
contains additional notes, and @file{pc/Makefile} contains important
information on compilation options.
address@hidden compiling @command{gawk} for MS-Windows
address@hidden compiling @command{gawk} @subentry for MS-Windows
To build @command{gawk} for Windows32, copy the files in
the @file{pc} directory (@emph{except} for @file{ChangeLog}) to the
directory with the rest of the @command{gawk} sources, then invoke
@@ -40696,7 +40709,7 @@ variable. If @env{AWKPATH} is not set or is empty,
then the default
search path is @address@hidden;c:/lib/awk;c:/gnu/lib/awk}}.
@cindex common extensions @subentry @code{BINMODE} variable
address@hidden extensions @subentry common, @code{BINMODE} variable
address@hidden extensions @subentry common @subentry @code{BINMODE} variable
@cindex differences in @command{awk} and @command{gawk} @subentry
@code{BINMODE} variable
@cindex @code{BINMODE} variable
Under MS-Windows,
@@ -40793,7 +40806,7 @@ moved into the @code{BEGIN} rule.
@node Cygwin
@appendixsubsubsec Using @command{gawk} In The Cygwin Environment
address@hidden compiling @command{gawk} for Cygwin
address@hidden compiling @command{gawk} @subentry for Cygwin
@command{gawk} can be built and used ``out of the box'' under MS-Windows
if you are using the @uref{http://www.cygwin.com, Cygwin environment}.
@@ -40813,6 +40826,10 @@ When compared to GNU/Linux on the same system, the
@samp{configure}
step on Cygwin takes considerably longer. However, it does finish,
and then the @samp{make} proceeds as usual.
address@hidden installation @subentry Cygwin
+You may also install @command{gawk} using the regular Cygwin installer.
+In general Cygwin supplies the latest released version.
+
Recent versions of Cygwin open all files in binary mode. This means
that you should use @samp{RS = "\r?\n"} in order to be able to
handle standard MS-Windows text files with carriage-return plus
@@ -40841,7 +40858,7 @@ translation of @code{"\r\n"}, because it won't.
@c now address@hidden
@cindex @command{gawk} @subentry VMS version of
address@hidden installation, VMS
address@hidden installation @subentry VMS
This @value{SUBSECTION} describes how to compile and install @command{gawk}
under VMS.
The older designation ``VMS'' is used throughout to refer to OpenVMS.
@@ -40857,7 +40874,7 @@ The older designation ``VMS'' is used throughout to
refer to OpenVMS.
@node VMS Compilation
@appendixsubsubsec Compiling @command{gawk} on VMS
address@hidden compiling @command{gawk} for VMS
address@hidden compiling @command{gawk} @subentry for VMS
To compile @command{gawk} under VMS, there is a @code{DCL} command procedure
that issues all the necessary @code{CC} and @code{LINK} commands. There is
@@ -41081,7 +41098,7 @@ Older versions of @command{gawk} for VMS treated a Unix
exit code 0 as 1,
a failure as 2, a fatal error as 4, and passed all the other numbers through.
This violated the VMS exit status coding requirements.
address@hidden floating-point @subentry VAX/VMS
address@hidden floating-point @subentry numbers @subentry VAX/VMS
VAX/VMS floating point uses unbiased rounding. @xref{Round Function}.
VMS reports time values in GMT unless one of the @code{SYS$TIMEZONE_RULE}
@@ -41219,7 +41236,7 @@ recommend compiling and using the current version.
@end quotation
@c the radio show, not the book. :-)
address@hidden debugging @command{gawk} @subentry bug reports
address@hidden debugging @command{gawk}, bug reports
@cindex troubleshooting @subentry @command{gawk} @subentry bug reports
If you have problems with @command{gawk} or think that you have found a bug,
report it to the developers; we cannot promise to do anything,
@@ -41535,7 +41552,6 @@ with 1--2 hours of work. Making it more generally
portable (using
GNU Autoconf and/or Automake) would take more work, and this
has not been done, at least to our knowledge.
address@hidden Illumos
@cindex Illumos, POSIX-compliant @command{awk}
@cindex source code @subentry Illumos @command{awk}
The source code used to be available from the OpenSolaris website.
@@ -41676,7 +41692,7 @@ maintainers of @command{gawk}. Everything in it
applies specifically to
@cindex @command{gawk} @subentry implementation issues @subentry downward
compatibility
@cindex @command{gawk} @subentry implementation issues @subentry debugging
@cindex troubleshooting @subentry @command{gawk}
address@hidden implementation address@hidden @command{gawk}, debugging
address@hidden implementation issues @subentry @command{gawk} @subentry
debugging
@xref{POSIX/GNU},
for a summary of the GNU extensions to the @command{awk} language and program.
@@ -42849,6 +42865,7 @@ Software Engineering practices.
@cindex Spencer, Henry
@cindex @command{sed} utility
@cindex amazing @command{awk} assembler (@command{aaa})
address@hidden @command{aaa} (amazing @command{awk} assembler) program
@item Amazing @command{awk} Assembler
Henry Spencer at the University of Toronto wrote a retargetable assembler
completely as @command{sed} and @command{awk} scripts. It is thousands
@@ -43075,8 +43092,8 @@ See ``Bracket Expression.''
See ``Bracket Expression.''
@cindex ASCII
address@hidden ISO 8859-1
address@hidden ISO Latin-1
address@hidden ISO @subentry ISO 8859-1 character set
address@hidden ISO @subentry ISO Latin-1 character set
@cindex character sets (machine character encodings)
@cindex Unicode
@item Character Set
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index fc65e3f..18dab2b 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -1318,6 +1318,7 @@ rest of the file alone. Such jobs are often easy with
@command{awk}.
The @command{awk} utility interprets a special-purpose programming
language that makes it easy to handle simple data-reformatting jobs.
address@hidden @command{gawk}
The GNU implementation of @command{awk} is called @command{gawk}; if you
invoke it with the proper options or environment variables,
it is fully compatible with
@@ -2473,7 +2474,7 @@ which usually means whatever you type on the keyboard.
This continues
until you indicate end-of-file by typing @kbd{Ctrl-d}.
(On non-POSIX operating systems, the end-of-file character may be different.)
address@hidden files, input @seeentry{input files}
address@hidden files @subentry input @seeentry{input files}
@cindex input files @subentry running @command{awk} without
@cindex @command{awk} programs @subentry running @subentry without input files
As an example, the following program prints a friendly piece of advice
@@ -3840,7 +3841,7 @@ Also see
@itemx @option{--copyright}
@cindex @option{-C} option
@cindex @option{--copyright} option
address@hidden GPL (General Public License), printing
address@hidden GPL (General Public License) @subentry printing
Print the short version of the General Public License and then exit.
@item @address@hidden
@@ -3968,7 +3969,7 @@ for information about this option.
@itemx @option{--help}
@cindex @option{-h} option
@cindex @option{--help} option
address@hidden GNU long options, printing list of
address@hidden GNU long options @subentry printing list of
@cindex options @subentry printing list of
@cindex printing @subentry list of options
Print a ``usage'' message summarizing the short- and long-style options
@@ -4202,7 +4203,7 @@ Warn about constructs that are not available in the
original version of
@itemx @option{--version}
@cindex @option{-V} option
@cindex @option{--version} option
address@hidden @command{gawk} @subentry versions of @subentry information
about, printing
address@hidden @command{gawk} @subentry versions of, printing information about
Print version information for this particular copy of @command{gawk}.
This allows you to determine if your copy of @command{gawk} is up to date
with respect to whatever the Free Software Foundation is currently
@@ -4211,6 +4212,7 @@ It is also useful for bug reports
(@pxref{Bugs}).
@cindex @code{-} (hyphen) @subentry @code{--} end of options marker
address@hidden hyphen (@code{-}) @subentry @code{--} end of options marker
@item @code{--}
Mark the end of all options.
Any command-line arguments following @code{--} are placed in @code{ARGV},
@@ -4802,7 +4804,7 @@ This @value{SECTION} describes a feature that is specific
to @command{gawk}.
@cindex @code{@@} (at-sign) @subentry @code{@@load} directive
@cindex at-sign (@code{@@}) @subentry @code{@@load} directive
@cindex loading extensions, @code{@@load} directive
address@hidden extensions @subentry loading @subentry @code{@@load} directive
address@hidden extensions @subentry loadable @subentry loading, @code{@@load}
directive
The @code{@@load} keyword can be used to read external @command{awk} extensions
(stored as system shared libraries).
This allows you to link in compiled code that may offer superior
@@ -5233,7 +5235,7 @@ between @samp{0} and @samp{7}. For example, the code for
the ASCII ESC
@cindex @code{\} (backslash) @subentry @code{\x} escape sequence
@cindex backslash (@code{\}) @subentry @code{\x} escape sequence
@cindex common extensions @subentry @code{\x} escape sequence
address@hidden extensions @subentry common, @code{\x} escape sequence
address@hidden extensions @subentry common @subentry @code{\x} escape sequence
@item address@hidden@dots{}
The hexadecimal value @var{hh}, where @var{hh} stands for a sequence
of hexadecimal digits (@address@hidden, and either @address@hidden
@@ -6090,7 +6092,7 @@ method of using @samp{\y} for the GNU @samp{\b} appears
to be the
lesser of two evils.
@cindex regular expressions @subentry @command{gawk} @subentry command-line
options
address@hidden @command{gawk} @subentry command-line options @subentry and
regular expressions
address@hidden @command{gawk} @subentry command-line options, regular
expressions and
The various command-line options
(@pxref{Options})
control how @command{gawk} interprets characters in regexps:
@@ -6530,7 +6532,7 @@ sets the variable @code{RT} to the text in the input that
matched
@subsection Record Splitting with @command{gawk}
@cindex common extensions @subentry @code{RS} as a regexp
address@hidden extensions @subentry common, @code{RS} as a regexp
address@hidden extensions @subentry common @subentry @code{RS} as a regexp
When using @command{gawk}, the value of @code{RS} is not limited to a
one-character string. If it contains more than one character, it is
treated as a regular expression
@@ -7177,7 +7179,7 @@ Because the leading whitespace was ignored when finding
@code{$1},
it is not part of the new @code{$0}. Finally, the last @code{print}
statement prints the new @code{$0}.
address@hidden @code{FS} @subentry containing @code{^}
address@hidden @code{FS} variable @subentry containing @code{^}
@cindex @code{^} (caret) @subentry in @code{FS}
@cindex dark corner @subentry @code{^}, in @code{FS}
There is an additional subtlety to be aware of when using regular expressions
@@ -7208,7 +7210,7 @@ $ @kbd{echo 'xxAA xxBxx C' |}
@subsection Making Each Character a Separate Field
@cindex common extensions @subentry single character fields
address@hidden extensions @subentry common, single character fields
address@hidden extensions @subentry common @subentry single character fields
@cindex differences in @command{awk} and @command{gawk} @subentry
single-character fields
@cindex single-character fields
@cindex fields @subentry single-character
@@ -7889,7 +7891,7 @@ In the second case, this special processing is not done.
@value{DARKCORNER}
@cindex field separator @subentry in multiline records
address@hidden @code{FS} @subentry in multiline records
address@hidden @code{FS} variable @subentry in multiline records
Now that the input is separated into records, the second step is to
separate the fields in the records. One way to do this is to divide each
of the lines into fields in the normal manner. This happens by default
@@ -8164,7 +8166,7 @@ rule in the program. @xref{Next Statement}.
@node Getline/Variable
@subsection Using @code{getline} into a Variable
address@hidden @code{getline} into a variable
address@hidden @code{getline} command @subentry into a variable
@cindex variables @subentry @code{getline} command into, using
You can use @samp{getline @var{var}} to read the next record from
@@ -8218,7 +8220,7 @@ the value of @code{NF} do not change.
@node Getline/File
@subsection Using @code{getline} from a File
address@hidden @code{getline} from a file
address@hidden @code{getline} command @subentry from a file
@cindex input redirection
@cindex redirection of input
@cindex @code{<} (left angle bracket) @subentry @code{<} operator (I/O)
@@ -8528,7 +8530,7 @@ You can open as many pipelines (and coprocesses) as the
underlying operating
system permits.
@cindex side effects @subentry @code{FILENAME} variable
address@hidden @code{FILENAME} variable, @address@hidden setting with
address@hidden @code{FILENAME} variable @subentry @code{getline}, setting with
@cindex dark corner @subentry @code{FILENAME} variable
@cindex @code{getline} command @subentry @code{FILENAME} variable and
@cindex @code{BEGIN} pattern @subentry @code{getline} and
@@ -9198,7 +9200,7 @@ if @code{OFMT} contains anything but a floating-point
conversion specification.
@cindex @code{printf} statement
@cindex output @subentry formatted
address@hidden formatting output
address@hidden formatting @subentry output
For more precise control over the output format than what is
provided by @code{print}, use @code{printf}.
With @code{printf} you can
@@ -9952,7 +9954,7 @@ command lines to be fed to the shell.
@cindex error output
@cindex standard error
@cindex file descriptors
address@hidden files, descriptors @seeentry{file descriptors}
address@hidden files @subentry descriptors @seeentry{file descriptors}
Running programs conventionally have three input and output streams
already available to them for reading and writing. These are known
@@ -10013,9 +10015,9 @@ has been ported to, not just those that are
POSIX-compliant:
@cindex common extensions @subentry @code{/dev/stdin} special file
@cindex common extensions @subentry @code{/dev/stdout} special file
@cindex common extensions @subentry @code{/dev/stderr} special file
address@hidden extensions @subentry common, @code{/dev/stdin} special file
address@hidden extensions @subentry common, @code{/dev/stdout} special file
address@hidden extensions @subentry common, @code{/dev/stderr} special file
address@hidden extensions @subentry common @subentry @code{/dev/stdin} special
file
address@hidden extensions @subentry common @subentry @code{/dev/stdout} special
file
address@hidden extensions @subentry common @subentry @code{/dev/stderr} special
file
@cindex file names @subentry standard streams in @command{gawk}
@cindex @code{/dev/@dots{}} special files
@cindex files @subentry @code{/dev/@dots{}} special files
@@ -10144,7 +10146,7 @@ Doing so results in unpredictable behavior.
@node Close Files And Pipes
@section Closing Input and Output Redirections
address@hidden files, output @seeentry{output files}
address@hidden files @subentry output @seeentry{output files}
@cindex input files @subentry closing
@cindex output @subentry files, closing
@cindex pipe @subentry closing
@@ -11366,7 +11368,7 @@ in order from the highest precedence to the lowest:
@table @code
@cindex common extensions @subentry @code{**} operator
address@hidden extensions @subentry common, @code{**} operator
address@hidden extensions @subentry common @subentry @code{**} operator
@cindex POSIX @command{awk} @subentry arithmetic operators and
@item @var{x} ^ @var{y}
@itemx @var{x} ** @var{y}
@@ -11790,7 +11792,7 @@ to a number.
@item @var{lvalue} @code{/=} @var{divisor} @tab Divide the value of
@var{lvalue} by @var{divisor}.
@item @var{lvalue} @code{%=} @var{modulus} @tab Set @var{lvalue} to its
remainder by @var{modulus}.
@cindex common extensions @subentry @code{**=} operator
address@hidden extensions @subentry common, @code{**=} operator
address@hidden extensions @subentry common @subentry @code{**=} operator
@cindex @command{awk} @subentry language, POSIX version
@cindex POSIX @command{awk}
@item @var{lvalue} @code{^=} @var{power} @tab Raise @var{lvalue} to the power
@var{power}.
@@ -13697,7 +13699,7 @@ either a @code{BEGINFILE} or an @code{ENDFILE} rule.
The @code{nextfile}
statement is allowed only inside a
@code{BEGINFILE} rule, not inside an @code{ENDFILE} rule.
address@hidden @code{getline} statement @subentry
@code{BEGINFILE}/@code{ENDFILE} patterns and
address@hidden @code{getline} command @subentry @code{BEGINFILE}/@code{ENDFILE}
patterns and
The @code{getline} statement (@pxref{Getline}) is restricted inside
both @code{BEGINFILE} and @code{ENDFILE}: only redirected
forms of @code{getline} are allowed.
@@ -15408,8 +15410,8 @@ is available as an element within the @code{SYMTAB}
array.
@end table
@sidebar Changing @code{NR} and @code{FNR}
address@hidden @code{NR} variable, changing
address@hidden @code{FNR} variable, changing
address@hidden @code{NR} variable @subentry changing
address@hidden @code{FNR} variable @subentry changing
@cindex dark corner @subentry @code{FNR}/@code{NR} variables
@command{awk} increments @code{NR} and @code{FNR}
each time it reads a record, instead of setting them to the absolute
@@ -16196,7 +16198,7 @@ This loop executes @var{body} once for each index in
@var{array} that the
program has previously used, with the variable @var{var} set to that index.
@cindex arrays @subentry @code{for} statement and
address@hidden @code{for} statement, looping over arrays
address@hidden @code{for} statement @subentry looping over arrays
The following program uses this form of the @code{for} statement. The
first rule scans the input records and notes which words appear (at
least once) in the input, by storing a one into the array @code{used} with
@@ -16632,7 +16634,7 @@ However, if @option{--lint} is provided on the command
line
is not in the array is deleted.
@cindex common extensions @subentry @code{delete} to delete entire arrays
address@hidden extensions @subentry common, @code{delete} to delete entire
arrays
address@hidden extensions @subentry common @subentry @code{delete} to delete
entire arrays
@cindex arrays @subentry deleting entire contents
@cindex deleting entire arrays
@cindex @code{delete} @var{array}
@@ -17590,7 +17592,7 @@ and 525 is then converted to the string @code{"525"},
which has
three characters.
@cindex length of input record
address@hidden input record @subentry length of
address@hidden input record, length of
If no argument is supplied, @code{length()} returns the length of @code{$0}.
@c @cindex historical features
@@ -17627,7 +17629,7 @@ been specified on the command line, @command{gawk}
issues a
warning about this.
@cindex common extensions @subentry @code{length()} applied to an array
address@hidden extensions @subentry common, @code{length()} applied to an array
address@hidden extensions @subentry common @subentry @code{length()} applied to
an array
@cindex differences in @command{awk} and @command{gawk} @subentry
@code{length()} function
@cindex number of array elements
@cindex arrays @subentry number of elements
@@ -17876,7 +17878,7 @@ In POSIX mode (@pxref{Options}), the fourth argument is
not allowed.
@item @code{sprintf(@var{format}, @var{expression1}, @dots{})}
@cindexawkfunc{sprintf}
address@hidden formatting strings
address@hidden formatting @subentry strings
Return (without printing) the string that @code{printf} would
have printed out with the same arguments
(@pxref{Printf}).
@@ -18117,7 +18119,7 @@ Although this makes a certain amount of sense, it can
be surprising.
@cindex escape processing @subentry @code{gsub()}/@code{gensub()}/@code{sub()}
functions
@cindex @code{sub()} function @subentry escape processing
@cindex @code{gsub()} function @subentry escape processing
address@hidden @code{gensub()} function (@command{gawk}), escape processing
address@hidden @code{gensub()} function (@command{gawk}) @subentry escape
processing
@cindex @code{\} (backslash) @subentry
@code{gsub()}/@code{gensub()}/@code{sub()} functions and
@cindex backslash (@code{\}) @subentry
@code{gsub()}/@code{gensub()}/@code{sub()} functions and
@cindex @code{&} (ampersand) @subentry
@code{gsub()}/@code{gensub()}/@code{sub()} functions and
@@ -18417,7 +18419,7 @@ to do substitutions.
@node I/O Functions
@subsection Input/Output Functions
address@hidden input/output functions
address@hidden input/output @subentry functions
The following functions relate to input/output (I/O).
Optional parameters are enclosed in square brackets ([ ]):
@@ -18466,7 +18468,7 @@ This is the purpose of the @code{fflush()}
address@hidden also
buffers its output, and the @code{fflush()} function forces
@command{gawk} to flush its buffers.
address@hidden extensions @subentry common, @code{fflush()} function
address@hidden extensions @subentry common @subentry @code{fflush()} function
@cindex Brian Kernighan's @command{awk}
Brian Kernighan added @code{fflush()} to his @command{awk} in April
1992. For two decades, it was a common extension. In December
@@ -18924,7 +18926,7 @@ The weekday as a decimal number (1--7). Monday is day
one.
The week number of the year (with the first Sunday as the first day of week
one)
as a decimal number (00--53).
address@hidden @cindex ISO 8601
address@hidden ISO @subentry ISO 8601 date and time standard
@item %V
The week number of the year (with the first Monday as the first
day of week one) as a decimal number (01--53).
@@ -19710,7 +19712,7 @@ Many of the subsequent examples in this @value{SECTION}
use
the @code{return} statement.
@cindex common extensions @subentry @code{func} keyword
address@hidden extensions @subentry common, @code{func} keyword
address@hidden extensions @subentry common @subentry @code{func} keyword
@c @cindex POSIX @command{awk}
@cindex @command{awk} @subentry language, POSIX version
@cindex POSIX @command{awk} @subentry @code{function} keyword in
@@ -20382,7 +20384,7 @@ variable as the @emph{name} of the function to call.
@cindex @code{@@} (at-sign) @subentry @code{@@}-notation for indirect function
calls
@cindex at-sign (@code{@@}) @subentry @code{@@}-notation for indirect function
calls
address@hidden indirect function calls, @code{@@}-notation
address@hidden indirect function calls @subentry @code{@@}-notation
@cindex function calls @subentry indirect @subentry @code{@@}-notation for
The syntax is similar to that of a regular function call: an identifier
immediately followed by an opening parenthesis, any arguments, and then
@@ -23212,7 +23214,7 @@ function getgrgid(gid)
The @code{getgruser()} function does not have a C counterpart. It takes a
username and returns the list of groups that have the user as a member:
address@hidden @code{getgruser()} function, user-defined
address@hidden @code{getgruser()} user-defined function
@example
@c file eg/lib/groupawk.in
function getgruser(user)
@@ -28332,7 +28334,8 @@ which is correct, but possibly unexpected.
@samp{print}, that distinction is retained.)
@cindex profiling @command{awk} programs, dynamically
address@hidden @command{gawk} program @subentry dynamic profiling
address@hidden @command{gawk} @subentry dynamic profiling
address@hidden @command{gawk} @subentry profiling programs
@cindex dynamic profiling
Besides creating profiles when a program has completed,
@command{gawk} can produce a profile while it is running.
@@ -28497,7 +28500,7 @@ As a result, internationalization and localization
of programs and software systems became a common practice.
@cindex internationalization @subentry localization
address@hidden @command{gawk}, internationalization and
@seeentry{internationalization}
address@hidden @command{gawk} @subentry internationalization
@seeentry{internationalization}
@cindex internationalization @subentry localization @subentry @command{gawk}
and
For many years, the ability to provide internationalization
was largely restricted to programs written in C and C++.
@@ -28579,7 +28582,7 @@ by calling the @code{textdomain()} function.
@cindex @code{.pot} files
@cindex files @subentry @code{.pot}
address@hidden portable object template files
address@hidden portable object @subentry template files
@cindex files @subentry portable object template
@item
Messages from the application are extracted from the source code and
@@ -28662,7 +28665,7 @@ printf("%s", _("Don't Panic!\n"));
@end example
@cindex internationalization @subentry localization @subentry locale categories
address@hidden @command{gettext} library, locale categories
address@hidden @command{gettext} library @subentry locale categories
@cindex locale categories
@noindent
This reduces the typing overhead to just three extra characters per string
@@ -29277,7 +29280,7 @@ $ @kbd{mkdir en_US.UTF-8 en_US.UTF-8/LC_MESSAGES}
@cindex @code{.po} files @subentry converting to @code{.mo}
@cindex files @subentry @code{.po} @subentry converting to @code{.mo}
@cindex @code{.mo} files, converting from @code{.po}
address@hidden files @subentry @code{.mo} @subentry converting from @code{.po}
address@hidden files @subentry @code{.mo}, converting from @code{.po}
@cindex portable object files @subentry converting to message object files
@cindex files @subentry portable object @subentry converting to message object
files
@cindex message object files @subentry converting from portable object files
@@ -31297,7 +31300,7 @@ version of @command{gawk}.
@cindex arbitrary precision
@cindex multiple precision
@cindex infinite precision
address@hidden floating-point @subentry numbers, arbitrary-precision
address@hidden floating-point @subentry numbers @subentry arbitrary-precision
This @value{CHAPTER} introduces some basic concepts relating to
how computers do arithmetic and defines some important terms.
@@ -31388,9 +31391,9 @@ Modern systems support floating-point arithmetic in
hardware, with a
limited range of values. There are software libraries that allow
the use of arbitrary-precision floating-point calculations.
address@hidden floating-point @subentry numbers, single-precision
address@hidden floating-point @subentry numbers, double-precision
address@hidden floating-point @subentry numbers, arbitrary-precision
address@hidden floating-point @subentry numbers @subentry single-precision
address@hidden floating-point @subentry numbers @subentry double-precision
address@hidden floating-point @subentry numbers @subentry arbitrary-precision
@cindex single-precision
@cindex double-precision
@cindex arbitrary precision
@@ -33152,7 +33155,7 @@ process and reduces the time needed to create the value.
@node Memory Allocation Functions
@subsection Memory Allocation Functions and Convenience Macros
@cindex allocating memory for extensions
address@hidden extensions @subentry allocating memory
address@hidden extensions @subentry loadable @subentry allocating memory
@cindex memory, allocating for extensions
The API provides a number of @dfn{memory allocation} functions for
@@ -33346,7 +33349,7 @@ to be a @samp{char *} value pointing to data previously
obtained from
@node Registration Functions
@subsection Registration Functions
@cindex register extension
address@hidden extension registration
address@hidden extensions @subentry loadable @subentry registration
This @value{SECTION} describes the API functions for
registering parts of your extension with @command{gawk}.
@@ -34574,7 +34577,7 @@ you should release any cached values that you created,
using
@node Array Manipulation
@subsection Array Manipulation
@cindex array manipulation in extensions
address@hidden extensions @subentry array manipulation in
address@hidden extensions @subentry loadable @subentry array manipulation in
The primary data address@hidden, the only data structure.} in @command{awk}
is the associative array (@pxref{Arrays}).
@@ -35564,7 +35567,7 @@ The @code{get_file()} API is new
@node Finding Extensions
@section How @command{gawk} Finds Extensions
address@hidden extension search path
address@hidden extensions @subentry loadable @subentry search path
@cindex finding extensions
Compiled extensions have to be installed in a directory where
@@ -35576,7 +35579,7 @@ path with a list of directories to search for compiled
extensions.
@node Extension Example
@section Example: Some File Functions
address@hidden extension example
address@hidden extensions @subentry loadable @subentry example
@quotation
@i{No matter where you go, there you are.}
@@ -36214,7 +36217,7 @@ $ @kbd{AWKLIBPATH=$PWD gawk -f testff.awk}
@node Extension Samples
@section The Sample Extensions in the @command{gawk} Distribution
address@hidden extensions distributed with @command{gawk}
address@hidden extensions @subentry loadable @subentry distributed with
@command{gawk}
This @value{SECTION} provides a brief overview of the sample extensions
that come in the @command{gawk} distribution. Some of them are intended
@@ -36918,8 +36921,7 @@ for more information.
@node gawkextlib
@section The @code{gawkextlib} Project
address@hidden @code{gawkextlib}
address@hidden extensions @subentry where to find
address@hidden extensions @subentry loadable @subentry @code{gawkextlib} project
@cindex @code{gawkextlib} project
The @uref{https://sourceforge.net/projects/gawkextlib/, @code{gawkextlib}}
@@ -37486,7 +37488,7 @@ available in his @command{awk}.
@appendixsec Extensions in @command{gawk} Not in POSIX @command{awk}
@cindex compatibility mode (@command{gawk}) @subentry extensions
address@hidden extensions @subentry in @command{gawk} @subentry not in POSIX
@command{awk}
address@hidden extensions @subentry in @command{gawk}, not in POSIX
@command{awk}
@cindex POSIX @subentry @command{gawk} extensions not included in
The GNU implementation, @command{gawk}, adds a large number of features.
They can all be disabled with either the @option{--traditional} or
@@ -39624,6 +39626,7 @@ See also the @file{README_d/README.pc} file in the
distribution.
@node PC Binary Installation
@appendixsubsubsec Installing a Prepared Distribution for MS-Windows Systems
address@hidden installation @subentry MS-Windows
The only supported binary distribution for MS-Windows systems
is that provided by Eli Zaretskii's
@uref{https://sourceforge.net/projects/ezwinports/,
@@ -39679,7 +39682,7 @@ variable. If @env{AWKPATH} is not set or is empty,
then the default
search path is @address@hidden;c:/lib/awk;c:/gnu/lib/awk}}.
@cindex common extensions @subentry @code{BINMODE} variable
address@hidden extensions @subentry common, @code{BINMODE} variable
address@hidden extensions @subentry common @subentry @code{BINMODE} variable
@cindex differences in @command{awk} and @command{gawk} @subentry
@code{BINMODE} variable
@cindex @code{BINMODE} variable
Under MS-Windows,
@@ -39796,6 +39799,10 @@ When compared to GNU/Linux on the same system, the
@samp{configure}
step on Cygwin takes considerably longer. However, it does finish,
and then the @samp{make} proceeds as usual.
address@hidden installation @subentry Cygwin
+You may also install @command{gawk} using the regular Cygwin installer.
+In general Cygwin supplies the latest released version.
+
Recent versions of Cygwin open all files in binary mode. This means
that you should use @samp{RS = "\r?\n"} in order to be able to
handle standard MS-Windows text files with carriage-return plus
@@ -39824,7 +39831,7 @@ translation of @code{"\r\n"}, because it won't.
@c now address@hidden
@cindex @command{gawk} @subentry VMS version of
address@hidden installation, VMS
address@hidden installation @subentry VMS
This @value{SUBSECTION} describes how to compile and install @command{gawk}
under VMS.
The older designation ``VMS'' is used throughout to refer to OpenVMS.
@@ -40064,7 +40071,7 @@ Older versions of @command{gawk} for VMS treated a Unix
exit code 0 as 1,
a failure as 2, a fatal error as 4, and passed all the other numbers through.
This violated the VMS exit status coding requirements.
address@hidden floating-point @subentry VAX/VMS
address@hidden floating-point @subentry numbers @subentry VAX/VMS
VAX/VMS floating point uses unbiased rounding. @xref{Round Function}.
VMS reports time values in GMT unless one of the @code{SYS$TIMEZONE_RULE}
@@ -40518,7 +40525,6 @@ with 1--2 hours of work. Making it more generally
portable (using
GNU Autoconf and/or Automake) would take more work, and this
has not been done, at least to our knowledge.
address@hidden Illumos
@cindex Illumos, POSIX-compliant @command{awk}
@cindex source code @subentry Illumos @command{awk}
The source code used to be available from the OpenSolaris website.
@@ -40659,7 +40665,7 @@ maintainers of @command{gawk}. Everything in it
applies specifically to
@cindex @command{gawk} @subentry implementation issues @subentry downward
compatibility
@cindex @command{gawk} @subentry implementation issues @subentry debugging
@cindex troubleshooting @subentry @command{gawk}
address@hidden implementation address@hidden @command{gawk}, debugging
address@hidden implementation issues @subentry @command{gawk} @subentry
debugging
@xref{POSIX/GNU},
for a summary of the GNU extensions to the @command{awk} language and program.
@@ -42059,8 +42065,8 @@ See ``Bracket Expression.''
See ``Bracket Expression.''
@cindex ASCII
address@hidden ISO 8859-1
address@hidden ISO Latin-1
address@hidden ISO @subentry ISO 8859-1 character set
address@hidden ISO @subentry ISO Latin-1 character set
@cindex character sets (machine character encodings)
@cindex Unicode
@item Character Set
-----------------------------------------------------------------------
Summary of changes:
doc/gawk.texi | 303 ++++++++++++++++++++++++++++++--------------------------
doc/gawktexi.in | 130 ++++++++++++------------
2 files changed, 228 insertions(+), 205 deletions(-)
hooks/post-receive
--
gawk
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gawk-diffs] [SCM] gawk branch, feature/better-index, updated. gawk-4.1.0-3719-g8ded83c,
Arnold Robbins <=