aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/ChangeLog1
-rw-r--r--doc/gawk.texi364
-rw-r--r--doc/gawktexi.in364
3 files changed, 1 insertions, 728 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 63f6cd02..b78fcb6f 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,6 +1,7 @@
2015-01-21 Arnold D. Robbins <arnold@skeeve.com>
* gawktexi.in: O'Reilly fixes.
+ Remove obsolete start/end of range indexing comments.
2015-01-20 Arnold D. Robbins <arnold@skeeve.com>
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 07630edf..ad4bae1e 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -2596,9 +2596,7 @@ for programs that are provided on the @command{awk} command line.
(Also, placing the program in a file allows us to use a literal single quote in the program
text, instead of the magic @samp{\47}.)
-@c STARTOFRANGE sq1x
@cindex single quote (@code{'}) in @command{gawk} command lines
-@c STARTOFRANGE qs2x
@cindex @code{'} (single quote) in @command{gawk} command lines
If you want to clearly identify an @command{awk} program file as such,
you can add the extension @file{.awk} to the @value{FN}. This doesn't
@@ -2972,8 +2970,6 @@ $ @kbd{awk "BEGIN @{ print \"Here is a single quote <'>\" @}"}
@end example
@noindent
-@c ENDOFRANGE sq1x
-@c ENDOFRANGE qs2x
This option is also painful, because double quotes, backslashes, and dollar signs
are very common in more advanced @command{awk} programs.
@@ -3738,13 +3734,9 @@ warning that the program is empty.
@node Options
@section Command-Line Options
-@c STARTOFRANGE ocl
@cindex options, command-line
-@c STARTOFRANGE clo
@cindex command line, options
-@c STARTOFRANGE gnulo
@cindex GNU long options
-@c STARTOFRANGE longo
@cindex options, long
Options begin with a dash and consist of a single character.
@@ -3833,8 +3825,6 @@ by the user that could start with @samp{-}.
It is also useful for passing options on to the @command{awk}
program; see @ref{Getopt Function}.
@end table
-@c ENDOFRANGE gnulo
-@c ENDOFRANGE longo
The following list describes @command{gawk}-specific options:
@@ -4290,8 +4280,6 @@ setenv POSIXLY_CORRECT true
Having @env{POSIXLY_CORRECT} set is not recommended for daily use,
but it is good for testing the portability of your programs to other
environments.
-@c ENDOFRANGE ocl
-@c ENDOFRANGE clo
@node Other Arguments
@section Other Command-Line Arguments
@@ -4961,7 +4949,6 @@ or C++ using the @code{@@load} statement and/or the @option{-l} option.
@node Regexp
@chapter Regular Expressions
@cindex regexp
-@c STARTOFRANGE regexp
@cindex regular expressions
A @dfn{regular expression}, or @dfn{regexp}, is a way of describing a
@@ -5400,7 +5387,6 @@ escape sequences literally when used in regexp constants. Thus,
@node Regexp Operators
@section Regular Expression Operators
-@c STARTOFRANGE regexpo
@cindex regular expressions, operators
@cindex metacharacters in regular expressions
@@ -5632,11 +5618,9 @@ usage as a syntax error.
If @command{gawk} is in compatibility mode (@pxref{Options}), interval
expressions are not available in regular expressions.
-@c ENDOFRANGE regexpo
@node Bracket Expressions
@section Using Bracket Expressions
-@c STARTOFRANGE charlist
@cindex bracket expressions
@cindex bracket expressions, range expressions
@cindex range expressions (regexps)
@@ -5780,7 +5764,6 @@ expression matching currently recognize only POSIX character classes;
they do not recognize collating symbols or equivalence classes.
@end quotation
@c maybe one day ...
-@c ENDOFRANGE charlist
@node Leftmost Longest
@section How Much Text Matches?
@@ -5824,9 +5807,7 @@ and also @pxref{Field Separators}).
@node Computed Regexps
@section Using Dynamic Regexps
-@c STARTOFRANGE dregexp
@cindex regular expressions, computed
-@c STARTOFRANGE regexpd
@cindex regular expressions, dynamic
@cindex @code{~} (tilde), @code{~} operator
@cindex tilde (@code{~}), @code{~} operator
@@ -5977,17 +5958,13 @@ $ @kbd{awk '$0 ~ /[ \t\n]/'}
occur often in practice, but it's worth noting for future reference.
@end cartouche
@end ifnotdocbook
-@c ENDOFRANGE dregexp
-@c ENDOFRANGE regexpd
@node GNU Regexp Operators
@section @command{gawk}-Specific Regexp Operators
@c This section adapted (long ago) from the regex-0.12 manual
-@c STARTOFRANGE regexpg
@cindex regular expressions, operators, @command{gawk}
-@c STARTOFRANGE gregexp
@cindex @command{gawk}, regular expressions, operators
@cindex operators, GNU-specific
@cindex regular expressions, operators, for words
@@ -6152,15 +6129,11 @@ Allow interval expressions in regexps, if @option{--traditional}
has been provided.
Otherwise, interval expressions are available by default.
@end table
-@c ENDOFRANGE gregexp
-@c ENDOFRANGE regexpg
@node Case-sensitivity
@section Case Sensitivity in Matching
-@c STARTOFRANGE regexpcs
@cindex regular expressions, case sensitivity
-@c STARTOFRANGE csregexp
@cindex case sensitivity, regexps and
Case is normally significant in regular expressions, both when matching
ordinary characters (i.e., not metacharacters) and inside bracket
@@ -6252,8 +6225,6 @@ the right thing.}
The value of @code{IGNORECASE} has no effect if @command{gawk} is in
compatibility mode (@pxref{Options}).
Case is always significant in compatibility mode.
-@c ENDOFRANGE csregexp
-@c ENDOFRANGE regexpcs
@node Regexp Summary
@section Summary
@@ -6300,12 +6271,10 @@ versions, use @code{tolower()} or @code{toupper()}.
@end itemize
-@c ENDOFRANGE regexp
@node Reading Files
@chapter Reading Input Files
-@c STARTOFRANGE infir
@cindex reading input files
@cindex input files, reading
@cindex input files
@@ -6356,9 +6325,7 @@ used with it do not have to be named on the @command{awk} command line
@node Records
@section How Input Is Split into Records
-@c STARTOFRANGE inspl
@cindex input, splitting into records
-@c STARTOFRANGE recspl
@cindex records, splitting input into
@cindex @code{NR} variable
@cindex @code{FNR} variable
@@ -6715,8 +6682,6 @@ whole files. If you are using @command{gawk}, see @DBREF{Extension Sample
Readfile} for another option.
@end cartouche
@end ifnotdocbook
-@c ENDOFRANGE inspl
-@c ENDOFRANGE recspl
@node Fields
@section Examining Fields
@@ -6724,7 +6689,6 @@ Readfile} for another option.
@cindex examining fields
@cindex fields
@cindex accessing fields
-@c STARTOFRANGE fiex
@cindex fields, examining
@cindex POSIX @command{awk}, field separators and
@cindex field separators, POSIX and
@@ -6805,7 +6769,6 @@ $ @kbd{awk '/li/ @{ print $1, $NF @}' mail-list}
@print{} Julie F
@print{} Samuel A
@end example
-@c ENDOFRANGE fiex
@node Nonconstant Fields
@section Nonconstant Field Numbers
@@ -6866,7 +6829,6 @@ evaluating @code{NF} and using its value as a field number.
@node Changing Fields
@section Changing the Contents of a Field
-@c STARTOFRANGE ficon
@cindex fields, changing contents of
The contents of a field, as seen by @command{awk}, can be changed within an
@command{awk} program; this changes what @command{awk} perceives as the
@@ -7089,7 +7051,6 @@ with a statement such as @samp{$1 = $1}, as described earlier.
@end cartouche
@end ifnotdocbook
-@c ENDOFRANGE ficon
@node Field Separators
@section Specifying How Fields Are Separated
@@ -7105,9 +7066,7 @@ with a statement such as @samp{$1 = $1}, as described earlier.
@cindex @code{FS} variable
@cindex fields, separating
-@c STARTOFRANGE fisepr
@cindex field separators
-@c STARTOFRANGE fisepg
@cindex fields, separating
The @dfn{field separator}, which is either a single character or a regular
expression, controls the way @command{awk} splits an input record into fields.
@@ -7207,9 +7166,7 @@ rules.
@node Regexp Field Splitting
@subsection Using Regular Expressions to Separate Fields
-@c STARTOFRANGE regexpfs
@cindex regular expressions, as field separators
-@c STARTOFRANGE fsregexp
@cindex field separators, regular expressions as
The previous @value{SUBSECTION}
discussed the use of single characters or simple strings as the
@@ -7313,8 +7270,6 @@ $ @kbd{echo 'xxAA xxBxx C' |}
@print{} -->xxBxx<--
@print{} -->C<--
@end example
-@c ENDOFRANGE regexpfs
-@c ENDOFRANGE fsregexp
@node Single Character Fields
@subsection Making Each Character a Separate Field
@@ -7670,8 +7625,6 @@ will take effect.
@end cartouche
@end ifnotdocbook
-@c ENDOFRANGE fisepr
-@c ENDOFRANGE fisepg
@node Constant Size
@section Reading Fixed-Width Data
@@ -7935,11 +7888,8 @@ last assigned to.
@section Multiple-Line Records
@cindex multiple-line records
-@c STARTOFRANGE recm
@cindex records, multiline
-@c STARTOFRANGE imr
@cindex input, multiline records
-@c STARTOFRANGE frm
@cindex files, reading, multiline records
@cindex input, files, See input files
In some databases, a single line cannot conveniently hold all the
@@ -8106,16 +8056,11 @@ If not in compatibility mode (@pxref{Options}), @command{gawk} sets
@code{RT} to the input text that matched the value specified by @code{RS}.
But if the input file ended without any text that matches @code{RS},
then @command{gawk} sets @code{RT} to the null string.
-@c ENDOFRANGE recm
-@c ENDOFRANGE imr
-@c ENDOFRANGE frm
@node Getline
@section Explicit Input with @code{getline}
-@c STARTOFRANGE getl
@cindex @code{getline} command, explicit input with
-@c STARTOFRANGE inex
@cindex input, explicit
So far we have been getting our input data from @command{awk}'s main
input stream---either the standard input (usually your keyboard, sometimes
@@ -8705,9 +8650,6 @@ Note: for each variant, @command{gawk} sets the @code{RT} predefined variable.
@item @var{command} @code{|& getline} @var{var} @tab Sets @var{var} and @code{RT} @tab @command{gawk}
@end multitable
@end float
-@c ENDOFRANGE getl
-@c ENDOFRANGE inex
-@c ENDOFRANGE infir
@node Read Timeout
@section Reading Input with a Timeout
@@ -8942,7 +8884,6 @@ That can be fixed by making one simple change. What is it?
@node Printing
@chapter Printing Output
-@c STARTOFRANGE prnt
@cindex printing
@cindex output, printing, See printing
One of the most common programming actions is to @dfn{print}, or output,
@@ -8958,7 +8899,6 @@ columns, whether to use exponential notation or not, and so on.
For printing with specifications, you need the @code{printf} statement
(@pxref{Printf}).
-@c STARTOFRANGE prnts
@cindex @code{print} statement
@cindex @code{printf} statement
Besides basic and formatted printing, this @value{CHAPTER}
@@ -9138,7 +9078,6 @@ You can continue either a @code{print} or
@code{printf} statement simply by putting a newline after any comma
(@pxref{Statements/Lines}).
@end quotation
-@c ENDOFRANGE prnts
@node Output Separators
@section Output Separators
@@ -9251,7 +9190,6 @@ if @code{OFMT} contains anything but a floating-point conversion specification.
@node Printf
@section Using @code{printf} Statements for Fancier Printing
-@c STARTOFRANGE printfs
@cindex @code{printf} statement
@cindex output, formatted
@cindex formatting output
@@ -9449,7 +9387,6 @@ values or do something else entirely.
@node Format Modifiers
@subsection Modifiers for @code{printf} Formats
-@c STARTOFRANGE pfm
@cindex @code{printf} statement, modifiers
@cindex modifiers@comma{} in format specifiers
A format specification can also include @dfn{modifiers} that can control
@@ -9655,7 +9592,6 @@ format strings. These are not valid in @command{awk}. Most @command{awk}
implementations silently ignore them. If @option{--lint} is provided
on the command line (@pxref{Options}), @command{gawk} warns about their
use. If @option{--posix} is supplied, their use is a fatal error.
-@c ENDOFRANGE pfm
@node Printf Examples
@subsection Examples Using @code{printf}
@@ -9736,14 +9672,11 @@ awk 'BEGIN @{ format = "%-10s %s\n"
@{ printf format, $1, $2 @}' mail-list
@end example
-@c ENDOFRANGE printfs
@node Redirection
@section Redirecting Output of @code{print} and @code{printf}
-@c STARTOFRANGE outre
@cindex output redirection
-@c STARTOFRANGE reout
@cindex redirection of output
@cindex @option{--sandbox} option, output redirection with @code{print}, @code{printf}
So far, the output from @code{print} and @code{printf} has gone
@@ -10001,8 +9934,6 @@ It then sends the list to the shell for execution.
command lines to be fed to the shell.
@end cartouche
@end ifnotdocbook
-@c ENDOFRANGE outre
-@c ENDOFRANGE reout
@node Special FD
@section Special Files for Standard Pre-Opened Data Streams
@@ -10112,7 +10043,6 @@ invoked with the @option{--traditional} option (@pxref{Options}).
@node Special Files
@section Special @value{FFN}s in @command{gawk}
-@c STARTOFRANGE gfn
@cindex @command{gawk}, file names in
Besides access to standard input, standard output, and standard error,
@@ -10203,18 +10133,13 @@ the time this does not matter; however, it is important to @emph{not}
close any of the files related to file descriptors 0, 1, and 2.
Doing so results in unpredictable behavior.
@end itemize
-@c ENDOFRANGE gfn
@node Close Files And Pipes
@section Closing Input and Output Redirections
@cindex files, output, See output files
-@c STARTOFRANGE ifc
@cindex input files, closing
-@c STARTOFRANGE ofc
@cindex output, files@comma{} closing
-@c STARTOFRANGE pc
@cindex pipe, closing
-@c STARTOFRANGE cc
@cindex coprocesses, closing
@cindex @code{getline} command, coprocesses@comma{} using from
@@ -10491,10 +10416,6 @@ when closing a pipe.
@end cartouche
@end ifnotdocbook
-@c ENDOFRANGE ifc
-@c ENDOFRANGE ofc
-@c ENDOFRANGE pc
-@c ENDOFRANGE cc
@node Output Summary
@section Summary
@@ -10558,11 +10479,9 @@ BEGIN @{ print "Serious error detected!" > /dev/stderr @}
@end enumerate
@c EXCLUDE END
-@c ENDOFRANGE prnt
@node Expressions
@chapter Expressions
-@c STARTOFRANGE exps
@cindex expressions
Expressions are the basic building blocks of @command{awk} patterns
@@ -10605,7 +10524,6 @@ which provide the values used in expressions.
@node Constants
@subsection Constant Expressions
-@c STARTOFRANGE cnst
@cindex constants, types of
The simplest type of expression is the @dfn{constant}, which always has
@@ -10791,7 +10709,6 @@ $ @kbd{gawk 'BEGIN @{ printf "0x11 is <%s>\n", 0x11 @}'}
@node Regexp Constants
@subsubsection Regular Expression Constants
-@c STARTOFRANGE rec
@cindex regexp constants
@cindex @code{~} (tilde), @code{~} operator
@cindex tilde (@code{~}), @code{~} operator
@@ -10803,7 +10720,6 @@ slashes, such as @code{@w{/^beginning and end$/}}. Most regexps used in
matching operators can also match computed or dynamic regexps
(which are typically just ordinary strings or variables that contain a regexp,
but could be a more complex expression).
-@c ENDOFRANGE cnst
@node Using Constant Regexps
@subsection Using Regular Expression Constants
@@ -10914,7 +10830,6 @@ or not @code{$0} matches @code{/hi/}.
@command{gawk} issues a warning when it sees a regexp constant used as
a parameter to a user-defined function, because passing a truth value in
this way is probably not what was intended.
-@c ENDOFRANGE rec
@node Variables
@subsection Variables
@@ -11509,11 +11424,8 @@ you're never quite sure what you'll get.
@node Assignment Ops
@subsection Assignment Expressions
-@c STARTOFRANGE asop
@cindex assignment operators
-@c STARTOFRANGE opas
@cindex operators, assignment
-@c STARTOFRANGE exas
@cindex expressions, assignment
@cindex @code{=} (equals sign), @code{=} operator
@cindex equals sign (@code{=}), @code{=} operator
@@ -11819,16 +11731,11 @@ awk '/[=]=/' /dev/null
and @command{mawk} also do not.
@end cartouche
@end ifnotdocbook
-@c ENDOFRANGE exas
-@c ENDOFRANGE opas
-@c ENDOFRANGE asop
@node Increment Ops
@subsection Increment and Decrement Operators
-@c STARTOFRANGE inop
@cindex increment operators
-@c STARTOFRANGE opde
@cindex operators, decrement/increment
@dfn{Increment} and @dfn{decrement operators} increase or decrease the value of
a variable by one. An assignment operator can do the same thing, so
@@ -11876,7 +11783,6 @@ just like variables. (Use @samp{$(i++)} when you want to do a field reference
and a variable increment at the same time. The parentheses are necessary
because of the precedence of the field reference operator @samp{$}.)
-@c STARTOFRANGE deop
@cindex decrement operators
The decrement operator @samp{--} works just like @samp{++}, except that
it subtracts one instead of adding it. As with @samp{++}, it can be used before
@@ -12010,9 +11916,6 @@ You should avoid such things in your own programs.
@c in the mirror in the morning.
@end cartouche
@end ifnotdocbook
-@c ENDOFRANGE inop
-@c ENDOFRANGE opde
-@c ENDOFRANGE deop
@node Truth Values and Conditions
@section Truth Values and Conditions
@@ -12077,17 +11980,13 @@ the string constant @code{"0"} is actually true, because it is non-null.
@author Douglas Adams, @cite{The Hitchhiker's Guide to the Galaxy}
@end quotation
-@c STARTOFRANGE comex
@cindex comparison expressions
-@c STARTOFRANGE excom
@cindex expressions, comparison
@cindex expressions, matching, See comparison expressions
@cindex matching, expressions, See comparison expressions
@cindex relational operators, See comparison operators
@cindex operators, relational, See operators@comma{} comparison
-@c STARTOFRANGE varting
@cindex variable typing
-@c STARTOFRANGE vartypc
@cindex variables, types of, comparison expressions and
Unlike other programming languages, @command{awk} variables do not have a
fixed type. Instead, they can be either a number or a string, depending
@@ -12487,19 +12386,13 @@ $ @kbd{gawk --posix 'BEGIN @{ printf("ABC < abc = %s\n",}
@print{} ABC < abc = FALSE
@end example
-@c ENDOFRANGE comex
-@c ENDOFRANGE excom
-@c ENDOFRANGE vartypc
-@c ENDOFRANGE varting
@node Boolean Ops
@subsection Boolean Expressions
@cindex and Boolean-logic operator
@cindex or Boolean-logic operator
@cindex not Boolean-logic operator
-@c STARTOFRANGE exbo
@cindex expressions, Boolean
-@c STARTOFRANGE boex
@cindex Boolean expressions
@cindex operators, Boolean, See Boolean expressions
@cindex Boolean operators, See Boolean expressions
@@ -12645,8 +12538,6 @@ next record, and start processing the rules over again at the top.
The reason it's there is to avoid printing the bracketing
@samp{START} and @samp{END} lines.
@end quotation
-@c ENDOFRANGE exbo
-@c ENDOFRANGE boex
@node Conditional Exp
@subsection Conditional Expressions
@@ -12825,9 +12716,7 @@ $ @kbd{awk -f matchit.awk}
@node Precedence
@section Operator Precedence (How Operators Nest)
-@c STARTOFRANGE prec
@cindex precedence
-@c STARTOFRANGE oppr
@cindex operators, precedence
@dfn{Operator precedence} determines how operators are grouped when
@@ -13012,8 +12901,6 @@ Assignment. These operators group right-to-left.
The @samp{|&}, @samp{**}, and @samp{**=} operators are not specified by POSIX.
For maximum portability, do not use them.
@end quotation
-@c ENDOFRANGE prec
-@c ENDOFRANGE oppr
@node Locales
@section Where You Are Makes a Difference
@@ -13117,11 +13004,9 @@ program, and occasionally the format for data read as input.
@end itemize
-@c ENDOFRANGE exps
@node Patterns and Actions
@chapter Patterns, Actions, and Variables
-@c STARTOFRANGE pat
@cindex patterns
As you have already seen, each @command{awk} statement consists of
@@ -13417,9 +13302,7 @@ a range pattern. @value{DARKCORNER}
@node BEGIN/END
@subsection The @code{BEGIN} and @code{END} Special Patterns
-@c STARTOFRANGE beg
@cindex @code{BEGIN} pattern
-@c STARTOFRANGE end
@cindex @code{END} pattern
All the patterns described so far are for matching input records.
The @code{BEGIN} and @code{END} special patterns are different.
@@ -13557,8 +13440,6 @@ are not valid in an @code{END} rule, because all the input has been read.
@ifdocbook
@DBREF{Nextfile Statement}.)
@end ifdocbook
-@c ENDOFRANGE beg
-@c ENDOFRANGE end
@node BEGINFILE/ENDFILE
@subsection The @code{BEGINFILE} and @code{ENDFILE} Special Patterns
@@ -13679,7 +13560,6 @@ awk '@{ print $1 @}' mail-list
@noindent
prints the first field of every record.
-@c ENDOFRANGE pat
@node Using Shell Variables
@section Using Shell Variables in Programs
@@ -13828,11 +13708,8 @@ For deleting array elements.
@node Statements
@section Control Statements in Actions
-@c STARTOFRANGE csta
@cindex control statements
-@c STARTOFRANGE acs
@cindex statements, control, in actions
-@c STARTOFRANGE accs
@cindex actions, control statements in
@dfn{Control statements}, such as @code{if}, @code{while}, and so on,
@@ -14550,15 +14427,10 @@ Negative values, and values of 127 or greater, may not produce consistent
results across different operating systems.
@end quotation
-@c ENDOFRANGE csta
-@c ENDOFRANGE acs
-@c ENDOFRANGE accs
@node Built-in Variables
@section Predefined Variables
-@c STARTOFRANGE bvar
@cindex predefined variables
-@c STARTOFRANGE varb
@cindex variables, predefined
Most @command{awk} variables are available to use for your own
@@ -14585,9 +14457,7 @@ their areas of activity.
@node User-modified
@subsection Built-In Variables That Control @command{awk}
-@c STARTOFRANGE bvaru
@cindex predefined variables, user-modifiable
-@c STARTOFRANGE nmbv
@cindex user-modifiable variables
The following is an alphabetical list of variables that you can change to
@@ -14814,17 +14684,11 @@ marked string constants in the source text, as well as for the
(@pxref{Internationalization}).
The default value of @code{TEXTDOMAIN} is @code{"messages"}.
@end table
-@c ENDOFRANGE bvar
-@c ENDOFRANGE varb
-@c ENDOFRANGE bvaru
-@c ENDOFRANGE nmbv
@node Auto-set
@subsection Built-In Variables That Convey Information
-@c STARTOFRANGE bvconi
@cindex predefined variables, conveying information
-@c STARTOFRANGE vbconi
@cindex variables, predefined conveying information
The following is an alphabetical list of variables that @command{awk}
sets automatically on certain occasions in order to provide
@@ -15232,8 +15096,6 @@ implementation issues.} neither @code{FUNCTAB} nor @code{SYMTAB}
are available as elements within the @code{SYMTAB} array.
@end quotation
@end table
-@c ENDOFRANGE bvconi
-@c ENDOFRANGE vbconi
@cindex sidebar, Changing @code{NR} and @code{FNR}
@ifdocbook
@@ -15526,7 +15388,6 @@ control how @command{awk} will process the provided @value{DF}s.
@node Arrays
@chapter Arrays in @command{awk}
-@c STARTOFRANGE arrs
@cindex arrays
An @dfn{array} is a table of values called @dfn{elements}. The
@@ -15648,9 +15509,7 @@ Only the values are stored; the indices are implicit from the order of
the values. Here, 8 is the value at index zero, because 8 appears in the
position with zero elements before it.
-@c STARTOFRANGE arrin
@cindex arrays, indexing
-@c STARTOFRANGE inarr
@cindex indexing arrays
@cindex associative arrays
@cindex arrays, associative
@@ -15853,8 +15712,6 @@ that array's indices are consecutive integers starting at one.
@command{awk}'s arrays are efficient---the time to access an element
is independent of the number of elements in the array.
-@c ENDOFRANGE arrin
-@c ENDOFRANGE inarr
@node Reference to Elements
@subsection Referring to an Array Element
@@ -16907,14 +16764,11 @@ element is itself a subarray.
@end itemize
-@c ENDOFRANGE arrs
@node Functions
@chapter Functions
-@c STARTOFRANGE funcbi
@cindex functions, built-in
-@c STARTOFRANGE bifunc
@cindex built-in functions
This @value{CHAPTER} describes @command{awk}'s built-in functions,
which fall into three categories: numeric, string, and I/O.
@@ -18621,13 +18475,9 @@ you would see the latter (undesirable) output.
@subsection Time Functions
@cindex time functions
-@c STARTOFRANGE tst
@cindex timestamps
-@c STARTOFRANGE logftst
@cindex log files, timestamps in
-@c STARTOFRANGE filogtst
@cindex files, log@comma{} timestamps in
-@c STARTOFRANGE gawtst
@cindex @command{gawk}, timestamps
@cindex POSIX @command{awk}, timestamps and
@code{awk} programs are commonly used to process log files
@@ -18705,7 +18555,6 @@ is out of range, @code{mktime()} returns @minus{}1.
@cindex @command{gawk}, @code{PROCINFO} array in
@cindex @code{PROCINFO} array
@item @code{strftime(}[@var{format} [@code{,} @var{timestamp} [@code{,} @var{utc-flag}] ] ]@code{)}
-@c STARTOFRANGE strf
@cindexgawkfunc{strftime}
@cindex format time string
Format the time specified by @var{timestamp}
@@ -18954,7 +18803,6 @@ The time as a decimal timestamp in seconds since the epoch.
The date in VMS format (e.g., @samp{20-JUN-1991}).
@end ignore
@end table
-@c ENDOFRANGE strf
Additionally, the alternative representations are recognized but their
normal representations are used.
@@ -19005,23 +18853,14 @@ gawk 'BEGIN @{
exit exitval
@}' "$@@"
@end example
-@c ENDOFRANGE tst
-@c ENDOFRANGE logftst
-@c ENDOFRANGE filogtst
-@c ENDOFRANGE gawtst
@node Bitwise Functions
@subsection Bit-Manipulation Functions
@cindex bit-manipulation functions
-@c STARTOFRANGE bit
@cindex bitwise, operations
-@c STARTOFRANGE and
@cindex AND bitwise operation
-@c STARTOFRANGE oro
@cindex OR bitwise operation
-@c STARTOFRANGE xor
@cindex XOR bitwise operation
-@c STARTOFRANGE opbit
@cindex operations, bitwise
@quotation
@i{I can explain it for you, but I can't understand it for you.}
@@ -19313,11 +19152,6 @@ decimal and octal values for the same numbers
(@pxref{Nondecimal-numbers}),
and then demonstrates the
results of the @code{compl()}, @code{lshift()}, and @code{rshift()} functions.
-@c ENDOFRANGE bit
-@c ENDOFRANGE and
-@c ENDOFRANGE oro
-@c ENDOFRANGE xor
-@c ENDOFRANGE opbit
@node Type Functions
@subsection Getting Type Information
@@ -19397,15 +19231,11 @@ variant of the same message.
The default value for @var{domain} is the current value of @code{TEXTDOMAIN}.
The default value for @var{category} is @code{"LC_MESSAGES"}.
@end table
-@c ENDOFRANGE funcbi
-@c ENDOFRANGE bifunc
@node User-defined
@section User-Defined Functions
-@c STARTOFRANGE udfunc
@cindex user-defined functions
-@c STARTOFRANGE funcud
@cindex functions, user-defined
Complicated @command{awk} programs can often be simplified by defining
your own functions. User-defined functions can be called just like
@@ -19430,7 +19260,6 @@ variable definitions is appallingly awful.}
@author Brian Kernighan
@end quotation
-@c STARTOFRANGE fdef
@cindex functions, defining
Definitions of functions can appear anywhere between the rules of an
@command{awk} program. Thus, the general form of an @command{awk} program is
@@ -19677,12 +19506,10 @@ You might think that @code{ctime()} could use @code{PROCINFO["strftime"]}
for its format string. That would be a mistake, because @code{ctime()} is
supposed to return the time formatted in a standard fashion, and user-level
code could have changed @code{PROCINFO["strftime"]}.
-@c ENDOFRANGE fdef
@node Function Caveats
@subsection Calling User-Defined Functions
-@c STARTOFRANGE fudc
@cindex functions, user-defined, calling
@dfn{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
@@ -19974,7 +19801,6 @@ or the @code{nextfile} statement
@end ifnotdocbook
inside a user-defined function.
@command{gawk} does not have this limitation.
-@c ENDOFRANGE fudc
@node Return Statement
@subsection The @code{return} Statement
@@ -20102,7 +19928,6 @@ does report the second error.
Usually, such things aren't a big issue, but it's worth
being aware of them.
-@c ENDOFRANGE udfunc
@node Indirect Calls
@section Indirect Function Calls
@@ -20595,7 +20420,6 @@ program. This is equivalent to function pointers in C and C++.
@end itemize
-@c ENDOFRANGE funcud
@ifnotinfo
@part @value{PART2}Problem Solving with @command{awk}
@@ -20617,11 +20441,8 @@ It contains the following chapters:
@node Library Functions
@chapter A Library of @command{awk} Functions
-@c STARTOFRANGE libf
@cindex libraries of @command{awk} functions
-@c STARTOFRANGE flib
@cindex functions, library
-@c STARTOFRANGE fudlib
@cindex functions, user-defined, library of
@DBREF{User-defined} describes how to write
@@ -20944,13 +20765,9 @@ be tested with @command{gawk} and the results compared to the built-in
@node Assert Function
@subsection Assertions
-@c STARTOFRANGE asse
@cindex assertions
-@c STARTOFRANGE assef
@cindex @code{assert()} function (C library)
-@c STARTOFRANGE libfass
@cindex libraries of @command{awk} functions, assertions
-@c STARTOFRANGE flibass
@cindex functions, library, assertions
@cindex @command{awk} programs, lengthy, assertions
When writing large programs, it is often useful to know
@@ -21066,10 +20883,6 @@ most likely causing the program to hang as it waits for input.
There is a simple workaround to this:
make sure that such a @code{BEGIN} rule always ends
with an @code{exit} statement.
-@c ENDOFRANGE asse
-@c ENDOFRANGE assef
-@c ENDOFRANGE flibass
-@c ENDOFRANGE libfass
@node Round Function
@subsection Rounding Numbers
@@ -21627,11 +21440,8 @@ function shell_quote(s, # parameter
@node Data File Management
@section @value{DDF} Management
-@c STARTOFRANGE dataf
@cindex files, managing
-@c STARTOFRANGE libfdataf
@cindex libraries of @command{awk} functions, managing, data files
-@c STARTOFRANGE flibdataf
@cindex functions, library, managing data files
This @value{SECTION} presents functions that are useful for managing
command-line @value{DF}s.
@@ -22023,22 +21833,14 @@ The use of @code{No_command_assign} allows you to disable command-line
assignments at invocation time, by giving the variable a true value.
When not set, it is initially zero (i.e., false), so the command-line arguments
are left alone.
-@c ENDOFRANGE dataf
-@c ENDOFRANGE flibdataf
-@c ENDOFRANGE libfdataf
@node Getopt Function
@section Processing Command-Line Options
-@c STARTOFRANGE libfclo
@cindex libraries of @command{awk} functions, command-line options
-@c STARTOFRANGE flibclo
@cindex functions, library, command-line options
-@c STARTOFRANGE clop
@cindex command-line options, processing
-@c STARTOFRANGE oclp
@cindex options, command-line, processing
-@c STARTOFRANGE clibf
@cindex functions, library, C library
@cindex arguments, processing
Most utilities on POSIX-compatible systems take options on
@@ -22390,21 +22192,13 @@ further options
Several of the sample programs presented in
@ref{Sample Programs},
use @code{getopt()} to process their arguments.
-@c ENDOFRANGE libfclo
-@c ENDOFRANGE flibclo
-@c ENDOFRANGE clop
-@c ENDOFRANGE oclp
@node Passwd Functions
@section Reading the User Database
-@c STARTOFRANGE libfudata
@cindex libraries of @command{awk} functions, user database, reading
-@c STARTOFRANGE flibudata
@cindex functions, library, user database@comma{} reading
-@c STARTOFRANGE udatar
@cindex user database@comma{} reading
-@c STARTOFRANGE dataur
@cindex database, users@comma{} reading
@cindex @code{PROCINFO} array
The @code{PROCINFO} array
@@ -22751,21 +22545,13 @@ and such a change would clutter up the code.
The @command{id} program in @DBREF{Id Program}
uses these functions.
-@c ENDOFRANGE libfudata
-@c ENDOFRANGE flibudata
-@c ENDOFRANGE udatar
-@c ENDOFRANGE dataur
@node Group Functions
@section Reading the Group Database
-@c STARTOFRANGE libfgdata
@cindex libraries of @command{awk} functions, group database, reading
-@c STARTOFRANGE flibgdata
@cindex functions, library, group database@comma{} reading
-@c STARTOFRANGE gdatar
@cindex group database, reading
-@c STARTOFRANGE datagr
@cindex database, group, reading
@cindex @code{PROCINFO} array, and group membership
@cindex @code{getgrent()} function (C library)
@@ -23088,7 +22874,6 @@ function getgrent()
@}
@c endfile
@end example
-@c ENDOFRANGE clibf
@cindex @code{endgrent()} function (C library)
The @code{endgrent()} function resets @code{_gr_count} to zero so that @code{getgrent()} can
@@ -23177,10 +22962,6 @@ $ @kbd{gawk -f walk_array.awk}
@print{} a[4][2] = 42
@end example
-@c ENDOFRANGE libfgdata
-@c ENDOFRANGE flibgdata
-@c ENDOFRANGE gdatar
-@c ENDOFRANGE libf
@node Library Functions Summary
@section Summary
@@ -23294,13 +23075,9 @@ output identical to that of the original version.
@end enumerate
@c EXCLUDE END
-@c ENDOFRANGE flib
-@c ENDOFRANGE fudlib
-@c ENDOFRANGE datagr
@node Sample Programs
@chapter Practical @command{awk} Programs
-@c STARTOFRANGE awkpex
@cindex @command{awk} programs, examples of
@c FULLXREF ON
@@ -23370,7 +23147,6 @@ cut.awk -- -c1-8 myfiles > results
@node Clones
@section Reinventing Wheels for Fun and Profit
-@c STARTOFRANGE posimawk
@cindex POSIX, programs@comma{} implementing in @command{awk}
This @value{SECTION} presents a number of POSIX utilities implemented in
@@ -23401,11 +23177,8 @@ The programs are presented in alphabetical order.
@subsection Cutting Out Fields and Columns
@cindex @command{cut} utility
-@c STARTOFRANGE cut
@cindex @command{cut} utility
-@c STARTOFRANGE ficut
@cindex fields, cutting
-@c STARTOFRANGE colcut
@cindex columns, cutting
The @command{cut} utility selects, or ``cuts,'' characters or fields
from its standard input and sends them to its standard output.
@@ -23713,21 +23486,14 @@ other @command{awk} implementations to use @code{substr()}
it is also extremely painful.
The @code{FIELDWIDTHS} variable supplies an elegant solution to the problem
of picking the input line apart by characters.
-@c ENDOFRANGE cut
-@c ENDOFRANGE ficut
-@c ENDOFRANGE colcut
@node Egrep Program
@subsection Searching for Regular Expressions in Files
-@c STARTOFRANGE regexps
@cindex regular expressions, searching for
-@c STARTOFRANGE sfregexp
@cindex searching, files for regular expressions
-@c STARTOFRANGE fsregexp
@cindex files, searching for regular expressions
-@c STARTOFRANGE egrep
@cindex @command{egrep} utility
The @command{egrep} utility searches files for patterns. It uses regular
expressions that are almost identical to those available in @command{awk}
@@ -23995,17 +23761,12 @@ function usage()
@c endfile
@end example
-@c ENDOFRANGE regexps
-@c ENDOFRANGE sfregexp
-@c ENDOFRANGE fsregexp
-@c ENDOFRANGE egrep
@node Id Program
@subsection Printing Out User Information
@cindex printing, user information
@cindex users, information about, printing
-@c STARTOFRANGE id
@cindex @command{id} utility
The @command{id} utility lists a user's real and effective user ID numbers,
real and effective group ID numbers, and the user's group set, if any.
@@ -24134,16 +23895,13 @@ code that is used repeatedly, making the whole program
shorter and cleaner. In particular, moving the check for
the empty string into this function saves several lines of code.
-@c ENDOFRANGE id
@node Split Program
@subsection Splitting a Large File into Pieces
@c FIXME: One day, update to current POSIX version of split
-@c STARTOFRANGE filspl
@cindex files, splitting
-@c STARTOFRANGE split
@cindex @code{split} utility
The @command{split} program splits large text files into smaller pieces.
Usage is as follows:@footnote{This is the traditional usage. The
@@ -24278,15 +24036,12 @@ You might want to consider how to eliminate the use of
way as to solve the EBCDIC issue as well.
@end ifset
-@c ENDOFRANGE filspl
-@c ENDOFRANGE split
@node Tee Program
@subsection Duplicating Output into Multiple Files
@cindex files, multiple@comma{} duplicating output into
@cindex output, duplicating into files
-@c STARTOFRANGE tee
@cindex @code{tee} utility
The @code{tee} program is known as a ``pipe fitting.'' @code{tee} copies
its standard input to its standard output and also duplicates it to the
@@ -24399,18 +24154,14 @@ END @{
@}
@c endfile
@end example
-@c ENDOFRANGE tee
@node Uniq Program
@subsection Printing Nonduplicated Lines of Text
@c FIXME: One day, update to current POSIX version of uniq
-@c STARTOFRANGE prunt
@cindex printing, unduplicated lines of text
-@c STARTOFRANGE tpul
@cindex text@comma{} printing, unduplicated lines of
-@c STARTOFRANGE uniq
@cindex @command{uniq} utility
The @command{uniq} utility reads sorted lines of data on its standard
input, and by default removes duplicate lines. In other words, it only
@@ -24679,26 +24430,17 @@ suggestion.
@end ifset
-@c ENDOFRANGE prunt
-@c ENDOFRANGE tpul
-@c ENDOFRANGE uniq
@node Wc Program
@subsection Counting Things
@c FIXME: One day, update to current POSIX version of wc
-@c STARTOFRANGE count
@cindex counting
-@c STARTOFRANGE infco
@cindex input files, counting elements in
-@c STARTOFRANGE woco
@cindex words, counting
-@c STARTOFRANGE chco
@cindex characters, counting
-@c STARTOFRANGE lico
@cindex lines, counting
-@c STARTOFRANGE wc
@cindex @command{wc} utility
The @command{wc} (word count) utility counts lines, words, and characters in
one or more input files. Its usage is as follows:
@@ -24868,13 +24610,6 @@ END @{
@}
@c endfile
@end example
-@c ENDOFRANGE count
-@c ENDOFRANGE infco
-@c ENDOFRANGE lico
-@c ENDOFRANGE woco
-@c ENDOFRANGE chco
-@c ENDOFRANGE wc
-@c ENDOFRANGE posimawk
@node Miscellaneous Programs
@section A Grab Bag of @command{awk} Programs
@@ -25005,9 +24740,7 @@ Aharon Robbins <arnold@skeeve.com> wrote:
@author Erik Quanstrom
@end quotation
-@c STARTOFRANGE tialarm
@cindex time, alarm clock example program
-@c STARTOFRANGE alaex
@cindex alarm clock example program
The following program is a simple ``alarm clock'' program.
You give it a time of day and an optional message. At the specified time,
@@ -25159,15 +24892,11 @@ seconds are necessary:
@}
@c endfile
@end example
-@c ENDOFRANGE tialarm
-@c ENDOFRANGE alaex
@node Translate Program
@subsection Transliterating Characters
-@c STARTOFRANGE chtra
@cindex characters, transliterating
-@c STARTOFRANGE tr
@cindex @command{tr} utility
The system @command{tr} utility transliterates characters. For example, it is
often used to map uppercase letters into lowercase for further processing:
@@ -25315,15 +25044,11 @@ such as @samp{a-z}, as allowed by the @command{tr} utility.
Look at the code for @file{cut.awk} (@pxref{Cut Program})
for inspiration.
-@c ENDOFRANGE chtra
-@c ENDOFRANGE tr
@node Labels Program
@subsection Printing Mailing Labels
-@c STARTOFRANGE prml
@cindex printing, mailing labels
-@c STARTOFRANGE mlprint
@cindex mailing labels@comma{} printing
Here is a ``real world''@footnote{``Real world'' is defined as
``a program actually used to get something done.''}
@@ -25387,7 +25112,6 @@ that there are two blank lines at the top and two blank lines at the bottom.
The @code{END} rule arranges to flush the final page of labels; there may
not have been an even multiple of 20 labels in the data:
-@c STARTOFRANGE labels
@cindex @code{labels.awk} program
@example
@c file eg/prog/labels.awk
@@ -25452,14 +25176,10 @@ END @{
@}
@c endfile
@end example
-@c ENDOFRANGE prml
-@c ENDOFRANGE mlprint
-@c ENDOFRANGE labels
@node Word Sorting
@subsection Generating Word-Usage Counts
-@c STARTOFRANGE worus
@cindex words, usage counts@comma{} generating
When working with large amounts of text, it can be interesting to know
@@ -25521,7 +25241,6 @@ to remove punctuation characters. Finally, we solve the third problem
by using the system @command{sort} utility to process the output of the
@command{awk} script. Here is the new version of the program:
-@c STARTOFRANGE wordfreq
@cindex @code{wordfreq.awk} program
@example
@c file eg/prog/wordfreq.awk
@@ -25586,13 +25305,10 @@ This way of sorting must be used on systems that do not
have true pipes at the command-line (or batch-file) level.
See the general operating system documentation for more information on how
to use the @command{sort} program.
-@c ENDOFRANGE worus
-@c ENDOFRANGE wordfreq
@node History Sorting
@subsection Removing Duplicates from Unsorted Text
-@c STARTOFRANGE lidu
@cindex lines, duplicate@comma{} removing
The @command{uniq} program
(@pxref{Uniq Program}),
@@ -25617,7 +25333,6 @@ Each element of @code{lines} is a unique command, and the indices of
The @code{END} rule simply prints out the lines, in order:
@cindex Rakitzis, Byron
-@c STARTOFRANGE histsort
@cindex @code{histsort.awk} program
@example
@c file eg/prog/histsort.awk
@@ -25660,15 +25375,11 @@ print data[lines[i]], lines[i]
@noindent
This works because @code{data[$0]} is incremented each time a line is
seen.
-@c ENDOFRANGE lidu
-@c ENDOFRANGE histsort
@node Extract Program
@subsection Extracting Programs from Texinfo Source Files
-@c STARTOFRANGE texse
@cindex Texinfo, extracting programs from source files
-@c STARTOFRANGE fitex
@cindex files, Texinfo@comma{} extracting programs from
@ifnotinfo
Both this chapter and the previous chapter
@@ -25772,7 +25483,6 @@ The first rule handles calling @code{system()}, checking that a command is
given (@code{NF} is at least three) and also checking that the command
exits with a zero exit status, signifying OK:
-@c STARTOFRANGE extract
@cindex @code{extract.awk} program
@example
@c file eg/prog/extract.awk
@@ -25918,9 +25628,6 @@ END @{
@}
@c endfile
@end example
-@c ENDOFRANGE texse
-@c ENDOFRANGE fitex
-@c ENDOFRANGE extract
@node Simple Sed
@subsection A Simple Stream Editor
@@ -25950,7 +25657,6 @@ additional arguments are treated as @value{DF} names to process. If none
are provided, the standard input is used:
@cindex Brennan, Michael
-@c STARTOFRANGE awksed
@cindex @command{awksed.awk} program
@c @cindex simple stream editor
@c @cindex stream editor, simple
@@ -26027,14 +25733,11 @@ The @code{usage()} function prints an error message and exits.
Finally, the single rule handles the printing scheme outlined earlier,
using @code{print} or @code{printf} as appropriate, depending upon the
value of @code{RT}.
-@c ENDOFRANGE awksed
@node Igawk Program
@subsection An Easy Way to Use Library Functions
-@c STARTOFRANGE libfex
@cindex libraries of @command{awk} functions, example program for using
-@c STARTOFRANGE flibex
@cindex functions, library, example program for using
In @ref{Include Files}, we saw how @command{gawk} provides a built-in
file-inclusion capability. However, this is a @command{gawk} extension.
@@ -26173,7 +25876,6 @@ program.
The program is as follows:
-@c STARTOFRANGE igawk
@cindex @code{igawk.sh} program
@example
@c file eg/prog/igawk.sh
@@ -26498,10 +26200,6 @@ features to a program; they can often be layered on top.@footnote{@command{gawk}
does @code{@@include} processing itself in order to support the use
of @command{awk} programs as Web CGI scripts.}
-@c ENDOFRANGE libfex
-@c ENDOFRANGE flibex
-@c ENDOFRANGE awkpex
-@c ENDOFRANGE igawk
@node Anagram Program
@subsection Finding Anagrams from a Dictionary
@@ -26525,7 +26223,6 @@ The following program uses arrays of arrays to bring together
words with the same signature and array sorting to print the words
in sorted order:
-@c STARTOFRANGE anagram
@cindex @code{anagram.awk} program
@example
@c file eg/prog/anagram.awk
@@ -26634,7 +26331,6 @@ babery yabber
@dots{}
@end example
-@c ENDOFRANGE anagram
@node Signature Program
@subsection And Now for Something Completely Different
@@ -26954,9 +26650,7 @@ It contains the following chapters:
@node Advanced Features
@chapter Advanced Features of @command{gawk}
-@c STARTOFRANGE gawadv
@cindex @command{gawk}, features, advanced
-@c STARTOFRANGE advgaw
@cindex advanced features, @command{gawk}
@ignore
Contributed by: Peter Langston <pud!psl@bellcore.bellcore.com>
@@ -27666,7 +27360,6 @@ using regular pipes.
@section Using @command{gawk} for Network Programming
@cindex advanced features, network programming
@cindex networks, programming
-@c STARTOFRANGE tcpip
@cindex TCP/IP
@cindex @code{/inet/@dots{}} special files (@command{gawk})
@cindex files, @code{/inet/@dots{}} (@command{gawk})
@@ -27783,13 +27476,10 @@ which comes as part of the @command{gawk} distribution,
for a much more complete introduction and discussion, as well as
extensive examples.
-@c ENDOFRANGE tcpip
@node Profiling
@section Profiling Your @command{awk} Programs
-@c STARTOFRANGE awkp
@cindex @command{awk} programs, profiling
-@c STARTOFRANGE proawk
@cindex profiling @command{awk} programs
@cindex @code{awkprof.out} file
@cindex files, @code{awkprof.out}
@@ -28100,8 +27790,6 @@ When called this way, @command{gawk} ``pretty prints'' the program into
The @option{--pretty-print} option still runs your program.
This will change in the next major release.
@end quotation
-@c ENDOFRANGE awkp
-@c ENDOFRANGE proawk
@node Advanced Features Summary
@section Summary
@@ -28148,8 +27836,6 @@ the program, but that will change in the next major release.
@end itemize
-@c ENDOFRANGE advgaw
-@c ENDOFRANGE gawadv
@node Internationalization
@chapter Internationalization with @command{gawk}
@@ -28162,7 +27848,6 @@ countries, they were able to sell more systems.
As a result, internationalization and localization
of programs and software systems became a common practice.
-@c STARTOFRANGE inloc
@cindex internationalization, localization
@cindex @command{gawk}, internationalization and, See internationalization
@cindex internationalization, localization, @command{gawk} and
@@ -28207,7 +27892,6 @@ monetary values are printed and read.
@section GNU @command{gettext}
@cindex internationalizing a program
-@c STARTOFRANGE gettex
@cindex @command{gettext} library
@command{gawk} uses GNU @command{gettext} to provide its internationalization
features.
@@ -28259,7 +27943,6 @@ lookup of the translations.
@cindex @code{.po} files
@cindex files, @code{.po}
-@c STARTOFRANGE portobfi
@cindex portable object files
@cindex files, portable object
@item
@@ -28271,7 +27954,6 @@ For example, there might be a @file{fr.po} for a French translation.
@cindex @code{.gmo} files
@cindex files, @code{.gmo}
@cindex message object files
-@c STARTOFRANGE portmsgfi
@cindex files, message object
@item
Each language's @file{.po} file is converted into a binary
@@ -28399,11 +28081,9 @@ before or after the day in a date, local month abbreviations, and so on.
@item LC_ALL
All of the above. (Not too useful in the context of @command{gettext}.)
@end table
-@c ENDOFRANGE gettex
@node Programmer i18n
@section Internationalizing @command{awk} Programs
-@c STARTOFRANGE inap
@cindex @command{awk} programs, internationalizing
@command{gawk} provides the following variables and functions for
@@ -28636,8 +28316,6 @@ to provide you translations that you can also then distribute.
@DBXREF{I18N Example}
for the full list of steps to go through to create and test
translations for @command{guide}.
-@c ENDOFRANGE portobfi
-@c ENDOFRANGE portmsgfi
@node Printf Ordering
@subsection Rearranging @code{printf} Arguments
@@ -28813,7 +28491,6 @@ However, because the positional specifications are primarily for use in
@emph{translated} format strings, and because non-GNU @command{awk}s never
retrieve the translated string, this should not be a problem in practice.
@end itemize
-@c ENDOFRANGE inap
@node I18N Example
@section A Simple Internationalization Example
@@ -29009,7 +28686,6 @@ a number of translations for its messages.
@end itemize
-@c ENDOFRANGE inloc
@node Debugger
@chapter Debugging @command{awk} Programs
@@ -35442,9 +35118,7 @@ online documentation}.
@node V7/SVR3.1
@appendixsec Major Changes Between V7 and SVR3.1
-@c STARTOFRANGE gawkv
@cindex @command{awk}, versions of
-@c STARTOFRANGE gawkv1
@cindex @command{awk}, versions of, changes between V7 and SVR3.1
The @command{awk} language evolved considerably between the release of
@@ -35531,7 +35205,6 @@ Multiple @code{BEGIN} and @code{END} rules
Multidimensional arrays
(@pxref{Multidimensional}).
@end itemize
-@c ENDOFRANGE gawkv1
@node SVR4
@appendixsec Changes Between SVR3.1 and SVR4
@@ -35646,7 +35319,6 @@ not permitted by the POSIX standard.
The 2008 POSIX standard can be found online at
@url{http://www.opengroup.org/onlinepubs/9699919799/}.
-@c ENDOFRANGE gawkv
@node BTL
@appendixsec Extensions in Brian Kernighan's @command{awk}
@@ -35692,11 +35364,8 @@ available in his @command{awk}.
@node POSIX/GNU
@appendixsec Extensions in @command{gawk} Not in POSIX @command{awk}
-@c STARTOFRANGE fripls
@cindex compatibility mode (@command{gawk}), extensions
-@c STARTOFRANGE exgnot
@cindex extensions, in @command{gawk}, not in POSIX @command{awk}
-@c STARTOFRANGE posnot
@cindex POSIX, @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
@@ -36006,9 +35675,6 @@ Ultrix
@c XXX ADD MORE STUFF HERE
-@c ENDOFRANGE fripls
-@c ENDOFRANGE exgnot
-@c ENDOFRANGE posnot
@c This does not need to be in the formal book.
@ifclear FOR_PRINT
@@ -37057,9 +36723,7 @@ the appropriate credit where credit is due.
@c last two commas are part of see also
@cindex operating systems, See Also GNU/Linux@comma{} PC operating systems@comma{} Unix
-@c STARTOFRANGE gligawk
@cindex @command{gawk}, installing
-@c STARTOFRANGE ingawk
@cindex installing @command{gawk}
This appendix provides instructions for installing @command{gawk} on the
various platforms that are supported by the developers. The primary
@@ -37169,7 +36833,6 @@ a local expert.
@node Distribution contents
@appendixsubsec Contents of the @command{gawk} Distribution
-@c STARTOFRANGE gawdis
@cindex @command{gawk}, distribution
The @command{gawk} distribution has a number of C source files,
@@ -37362,7 +37025,6 @@ directory to run your version of @command{gawk} against the test suite.
If @command{gawk} successfully passes @samp{make check}, then you can
be confident of a successful port.
@end table
-@c ENDOFRANGE gawdis
@node Unix Installation
@appendixsec Compiling and Installing @command{gawk} on Unix-Like Systems
@@ -37788,9 +37450,7 @@ multibyte functionality is not available.
@node PC Using
@appendixsubsubsec Using @command{gawk} on PC Operating Systems
-@c STARTOFRANGE opgawx
@cindex operating systems, PC, @command{gawk} on
-@c STARTOFRANGE pcgawon
@cindex PC operating systems, @command{gawk} on
Under MS-DOS and MS-Windows, the Cygwin and MinGW environments support
@@ -38298,8 +37958,6 @@ $ @kbd{gawk :== $sys$common:[syshlp.examples.tcpip.snmp]gawk.exe}
This is apparently @value{PVERSION} 2.15.6, which is extremely old. We
recommend compiling and using the current version.
-@c ENDOFRANGE opgawx
-@c ENDOFRANGE pcgawon
@node Bugs
@appendixsec Reporting Problems and Bugs
@@ -38310,9 +37968,7 @@ recommend compiling and using the current version.
@end quotation
@c the radio show, not the book. :-)
-@c STARTOFRANGE dbugg
@cindex debugging @command{gawk}, bug reports
-@c STARTOFRANGE tblgawb
@cindex troubleshooting, @command{gawk}, 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
@@ -38409,12 +38065,9 @@ The people maintaining the various @command{gawk} ports are:
If your bug is also reproducible under Unix, send a copy of your
report to the @EMAIL{bug-gawk@@gnu.org,bug-gawk at gnu dot org} email list as well.
-@c ENDOFRANGE dbugg
-@c ENDOFRANGE tblgawb
@node Other Versions
@appendixsec Other Freely Available @command{awk} Implementations
-@c STARTOFRANGE awkim
@cindex @command{awk}, implementations
@ignore
From: emory!amc.com!brennan (Michael Brennan)
@@ -38635,7 +38288,6 @@ See also the ``Versions and implementations'' section of the
Wikipedia article} for information on additional versions.
@end table
-@c ENDOFRANGE awkim
@node Installation summary
@appendixsec Summary
@@ -38673,15 +38325,11 @@ implementations. Many are POSIX compliant; others are less so.
@end itemize
-@c ENDOFRANGE gligawk
-@c ENDOFRANGE ingawk
@ifclear FOR_PRINT
@node Notes
@appendix Implementation Notes
-@c STARTOFRANGE gawii
@cindex @command{gawk}, implementation issues
-@c STARTOFRANGE impis
@cindex implementation issues, @command{gawk}
This appendix contains information mainly of interest to implementers and
@@ -38786,11 +38434,8 @@ that has a Git plug-in for working with Git repositories.
@node Adding Code
@appendixsubsec Adding New Features
-@c STARTOFRANGE adfgaw
@cindex adding, features to @command{gawk}
-@c STARTOFRANGE fadgaw
@cindex features, adding to @command{gawk}
-@c STARTOFRANGE gawadf
@cindex @command{gawk}, features, adding
You are free to add any new features you like to @command{gawk}.
However, if you want your changes to be incorporated into the @command{gawk}
@@ -38957,9 +38602,6 @@ Although this sounds like a lot of work, please remember that while you
may write the new code, I have to maintain it and support it. If it
isn't possible for me to do that with a minimum of extra work, then I
probably will not.
-@c ENDOFRANGE adfgaw
-@c ENDOFRANGE gawadf
-@c ENDOFRANGE fadgaw
@node New Ports
@appendixsubsec Porting @command{gawk} to a New Operating System
@@ -39093,7 +38735,6 @@ coding style and brace layout that suits your taste.
@node Derived Files
@appendixsubsec Why Generated Files Are Kept In Git
-@c STARTOFRANGE gawkgit
@cindex Git, use of for @command{gawk} source code
@c From emails written March 22, 2012, to the gawk developers list.
@@ -39282,7 +38923,6 @@ wget http://git.savannah.gnu.org/cgit/gawk.git/snapshot/gawk-@var{branchname}.ta
@noindent
to retrieve a snapshot of the given branch.
-@c ENDOFRANGE gawkgit
@node Future Extensions
@appendixsec Probable Future Extensions
@@ -39663,13 +39303,10 @@ of @command{gawk}, but it @emph{will} be removed in the next major release.
@end itemize
-@c ENDOFRANGE impis
-@c ENDOFRANGE gawii
@node Basic Concepts
@appendix Basic Programming Concepts
@cindex programming, concepts
-@c STARTOFRANGE procon
@cindex programming, concepts
This @value{APPENDIX} attempts to define some of the basic concepts
@@ -39907,7 +39544,6 @@ standard for C. This standard became an ISO standard in 1990.
In 1999, a revised ISO C standard was approved and released.
Where it makes sense, POSIX @command{awk} is compatible with 1999 ISO C.
-@c ENDOFRANGE procon
@node Glossary
@unnumbered Glossary
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 4d11a082..7379a9c9 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -2563,9 +2563,7 @@ for programs that are provided on the @command{awk} command line.
(Also, placing the program in a file allows us to use a literal single quote in the program
text, instead of the magic @samp{\47}.)
-@c STARTOFRANGE sq1x
@cindex single quote (@code{'}) in @command{gawk} command lines
-@c STARTOFRANGE qs2x
@cindex @code{'} (single quote) in @command{gawk} command lines
If you want to clearly identify an @command{awk} program file as such,
you can add the extension @file{.awk} to the @value{FN}. This doesn't
@@ -2883,8 +2881,6 @@ $ @kbd{awk "BEGIN @{ print \"Here is a single quote <'>\" @}"}
@end example
@noindent
-@c ENDOFRANGE sq1x
-@c ENDOFRANGE qs2x
This option is also painful, because double quotes, backslashes, and dollar signs
are very common in more advanced @command{awk} programs.
@@ -3649,13 +3645,9 @@ warning that the program is empty.
@node Options
@section Command-Line Options
-@c STARTOFRANGE ocl
@cindex options, command-line
-@c STARTOFRANGE clo
@cindex command line, options
-@c STARTOFRANGE gnulo
@cindex GNU long options
-@c STARTOFRANGE longo
@cindex options, long
Options begin with a dash and consist of a single character.
@@ -3744,8 +3736,6 @@ by the user that could start with @samp{-}.
It is also useful for passing options on to the @command{awk}
program; see @ref{Getopt Function}.
@end table
-@c ENDOFRANGE gnulo
-@c ENDOFRANGE longo
The following list describes @command{gawk}-specific options:
@@ -4201,8 +4191,6 @@ setenv POSIXLY_CORRECT true
Having @env{POSIXLY_CORRECT} set is not recommended for daily use,
but it is good for testing the portability of your programs to other
environments.
-@c ENDOFRANGE ocl
-@c ENDOFRANGE clo
@node Other Arguments
@section Other Command-Line Arguments
@@ -4872,7 +4860,6 @@ or C++ using the @code{@@load} statement and/or the @option{-l} option.
@node Regexp
@chapter Regular Expressions
@cindex regexp
-@c STARTOFRANGE regexp
@cindex regular expressions
A @dfn{regular expression}, or @dfn{regexp}, is a way of describing a
@@ -5228,7 +5215,6 @@ escape sequences literally when used in regexp constants. Thus,
@node Regexp Operators
@section Regular Expression Operators
-@c STARTOFRANGE regexpo
@cindex regular expressions, operators
@cindex metacharacters in regular expressions
@@ -5460,11 +5446,9 @@ usage as a syntax error.
If @command{gawk} is in compatibility mode (@pxref{Options}), interval
expressions are not available in regular expressions.
-@c ENDOFRANGE regexpo
@node Bracket Expressions
@section Using Bracket Expressions
-@c STARTOFRANGE charlist
@cindex bracket expressions
@cindex bracket expressions, range expressions
@cindex range expressions (regexps)
@@ -5608,7 +5592,6 @@ expression matching currently recognize only POSIX character classes;
they do not recognize collating symbols or equivalence classes.
@end quotation
@c maybe one day ...
-@c ENDOFRANGE charlist
@node Leftmost Longest
@section How Much Text Matches?
@@ -5652,9 +5635,7 @@ and also @pxref{Field Separators}).
@node Computed Regexps
@section Using Dynamic Regexps
-@c STARTOFRANGE dregexp
@cindex regular expressions, computed
-@c STARTOFRANGE regexpd
@cindex regular expressions, dynamic
@cindex @code{~} (tilde), @code{~} operator
@cindex tilde (@code{~}), @code{~} operator
@@ -5761,17 +5742,13 @@ $ @kbd{awk '$0 ~ /[ \t\n]/'}
@command{gawk} does not have this problem, and it isn't likely to
occur often in practice, but it's worth noting for future reference.
@end sidebar
-@c ENDOFRANGE dregexp
-@c ENDOFRANGE regexpd
@node GNU Regexp Operators
@section @command{gawk}-Specific Regexp Operators
@c This section adapted (long ago) from the regex-0.12 manual
-@c STARTOFRANGE regexpg
@cindex regular expressions, operators, @command{gawk}
-@c STARTOFRANGE gregexp
@cindex @command{gawk}, regular expressions, operators
@cindex operators, GNU-specific
@cindex regular expressions, operators, for words
@@ -5936,15 +5913,11 @@ Allow interval expressions in regexps, if @option{--traditional}
has been provided.
Otherwise, interval expressions are available by default.
@end table
-@c ENDOFRANGE gregexp
-@c ENDOFRANGE regexpg
@node Case-sensitivity
@section Case Sensitivity in Matching
-@c STARTOFRANGE regexpcs
@cindex regular expressions, case sensitivity
-@c STARTOFRANGE csregexp
@cindex case sensitivity, regexps and
Case is normally significant in regular expressions, both when matching
ordinary characters (i.e., not metacharacters) and inside bracket
@@ -6036,8 +6009,6 @@ the right thing.}
The value of @code{IGNORECASE} has no effect if @command{gawk} is in
compatibility mode (@pxref{Options}).
Case is always significant in compatibility mode.
-@c ENDOFRANGE csregexp
-@c ENDOFRANGE regexpcs
@node Regexp Summary
@section Summary
@@ -6084,12 +6055,10 @@ versions, use @code{tolower()} or @code{toupper()}.
@end itemize
-@c ENDOFRANGE regexp
@node Reading Files
@chapter Reading Input Files
-@c STARTOFRANGE infir
@cindex reading input files
@cindex input files, reading
@cindex input files
@@ -6140,9 +6109,7 @@ used with it do not have to be named on the @command{awk} command line
@node Records
@section How Input Is Split into Records
-@c STARTOFRANGE inspl
@cindex input, splitting into records
-@c STARTOFRANGE recspl
@cindex records, splitting input into
@cindex @code{NR} variable
@cindex @code{FNR} variable
@@ -6442,8 +6409,6 @@ character as a record separator. However, this is a special case:
whole files. If you are using @command{gawk}, see @DBREF{Extension Sample
Readfile} for another option.
@end sidebar
-@c ENDOFRANGE inspl
-@c ENDOFRANGE recspl
@node Fields
@section Examining Fields
@@ -6451,7 +6416,6 @@ Readfile} for another option.
@cindex examining fields
@cindex fields
@cindex accessing fields
-@c STARTOFRANGE fiex
@cindex fields, examining
@cindex POSIX @command{awk}, field separators and
@cindex field separators, POSIX and
@@ -6532,7 +6496,6 @@ $ @kbd{awk '/li/ @{ print $1, $NF @}' mail-list}
@print{} Julie F
@print{} Samuel A
@end example
-@c ENDOFRANGE fiex
@node Nonconstant Fields
@section Nonconstant Field Numbers
@@ -6593,7 +6556,6 @@ evaluating @code{NF} and using its value as a field number.
@node Changing Fields
@section Changing the Contents of a Field
-@c STARTOFRANGE ficon
@cindex fields, changing contents of
The contents of a field, as seen by @command{awk}, can be changed within an
@command{awk} program; this changes what @command{awk} perceives as the
@@ -6785,7 +6747,6 @@ itself. Instead, you must force the record to be rebuilt, typically
with a statement such as @samp{$1 = $1}, as described earlier.
@end sidebar
-@c ENDOFRANGE ficon
@node Field Separators
@section Specifying How Fields Are Separated
@@ -6801,9 +6762,7 @@ with a statement such as @samp{$1 = $1}, as described earlier.
@cindex @code{FS} variable
@cindex fields, separating
-@c STARTOFRANGE fisepr
@cindex field separators
-@c STARTOFRANGE fisepg
@cindex fields, separating
The @dfn{field separator}, which is either a single character or a regular
expression, controls the way @command{awk} splits an input record into fields.
@@ -6903,9 +6862,7 @@ rules.
@node Regexp Field Splitting
@subsection Using Regular Expressions to Separate Fields
-@c STARTOFRANGE regexpfs
@cindex regular expressions, as field separators
-@c STARTOFRANGE fsregexp
@cindex field separators, regular expressions as
The previous @value{SUBSECTION}
discussed the use of single characters or simple strings as the
@@ -7009,8 +6966,6 @@ $ @kbd{echo 'xxAA xxBxx C' |}
@print{} -->xxBxx<--
@print{} -->C<--
@end example
-@c ENDOFRANGE regexpfs
-@c ENDOFRANGE fsregexp
@node Single Character Fields
@subsection Making Each Character a Separate Field
@@ -7271,8 +7226,6 @@ do it for you (e.g., @samp{FS = "[c]"}). In this case, @code{IGNORECASE}
will take effect.
@end sidebar
-@c ENDOFRANGE fisepr
-@c ENDOFRANGE fisepg
@node Constant Size
@section Reading Fixed-Width Data
@@ -7536,11 +7489,8 @@ last assigned to.
@section Multiple-Line Records
@cindex multiple-line records
-@c STARTOFRANGE recm
@cindex records, multiline
-@c STARTOFRANGE imr
@cindex input, multiline records
-@c STARTOFRANGE frm
@cindex files, reading, multiline records
@cindex input, files, See input files
In some databases, a single line cannot conveniently hold all the
@@ -7707,16 +7657,11 @@ If not in compatibility mode (@pxref{Options}), @command{gawk} sets
@code{RT} to the input text that matched the value specified by @code{RS}.
But if the input file ended without any text that matches @code{RS},
then @command{gawk} sets @code{RT} to the null string.
-@c ENDOFRANGE recm
-@c ENDOFRANGE imr
-@c ENDOFRANGE frm
@node Getline
@section Explicit Input with @code{getline}
-@c STARTOFRANGE getl
@cindex @code{getline} command, explicit input with
-@c STARTOFRANGE inex
@cindex input, explicit
So far we have been getting our input data from @command{awk}'s main
input stream---either the standard input (usually your keyboard, sometimes
@@ -8306,9 +8251,6 @@ Note: for each variant, @command{gawk} sets the @code{RT} predefined variable.
@item @var{command} @code{|& getline} @var{var} @tab Sets @var{var} and @code{RT} @tab @command{gawk}
@end multitable
@end float
-@c ENDOFRANGE getl
-@c ENDOFRANGE inex
-@c ENDOFRANGE infir
@node Read Timeout
@section Reading Input with a Timeout
@@ -8543,7 +8485,6 @@ That can be fixed by making one simple change. What is it?
@node Printing
@chapter Printing Output
-@c STARTOFRANGE prnt
@cindex printing
@cindex output, printing, See printing
One of the most common programming actions is to @dfn{print}, or output,
@@ -8559,7 +8500,6 @@ columns, whether to use exponential notation or not, and so on.
For printing with specifications, you need the @code{printf} statement
(@pxref{Printf}).
-@c STARTOFRANGE prnts
@cindex @code{print} statement
@cindex @code{printf} statement
Besides basic and formatted printing, this @value{CHAPTER}
@@ -8739,7 +8679,6 @@ You can continue either a @code{print} or
@code{printf} statement simply by putting a newline after any comma
(@pxref{Statements/Lines}).
@end quotation
-@c ENDOFRANGE prnts
@node Output Separators
@section Output Separators
@@ -8852,7 +8791,6 @@ if @code{OFMT} contains anything but a floating-point conversion specification.
@node Printf
@section Using @code{printf} Statements for Fancier Printing
-@c STARTOFRANGE printfs
@cindex @code{printf} statement
@cindex output, formatted
@cindex formatting output
@@ -9050,7 +8988,6 @@ values or do something else entirely.
@node Format Modifiers
@subsection Modifiers for @code{printf} Formats
-@c STARTOFRANGE pfm
@cindex @code{printf} statement, modifiers
@cindex modifiers@comma{} in format specifiers
A format specification can also include @dfn{modifiers} that can control
@@ -9256,7 +9193,6 @@ format strings. These are not valid in @command{awk}. Most @command{awk}
implementations silently ignore them. If @option{--lint} is provided
on the command line (@pxref{Options}), @command{gawk} warns about their
use. If @option{--posix} is supplied, their use is a fatal error.
-@c ENDOFRANGE pfm
@node Printf Examples
@subsection Examples Using @code{printf}
@@ -9337,14 +9273,11 @@ awk 'BEGIN @{ format = "%-10s %s\n"
@{ printf format, $1, $2 @}' mail-list
@end example
-@c ENDOFRANGE printfs
@node Redirection
@section Redirecting Output of @code{print} and @code{printf}
-@c STARTOFRANGE outre
@cindex output redirection
-@c STARTOFRANGE reout
@cindex redirection of output
@cindex @option{--sandbox} option, output redirection with @code{print}, @code{printf}
So far, the output from @code{print} and @code{printf} has gone
@@ -9561,8 +9494,6 @@ It then sends the list to the shell for execution.
@DBXREF{Shell Quoting} for a function that can help in generating
command lines to be fed to the shell.
@end sidebar
-@c ENDOFRANGE outre
-@c ENDOFRANGE reout
@node Special FD
@section Special Files for Standard Pre-Opened Data Streams
@@ -9672,7 +9603,6 @@ invoked with the @option{--traditional} option (@pxref{Options}).
@node Special Files
@section Special @value{FFN}s in @command{gawk}
-@c STARTOFRANGE gfn
@cindex @command{gawk}, file names in
Besides access to standard input, standard output, and standard error,
@@ -9763,18 +9693,13 @@ the time this does not matter; however, it is important to @emph{not}
close any of the files related to file descriptors 0, 1, and 2.
Doing so results in unpredictable behavior.
@end itemize
-@c ENDOFRANGE gfn
@node Close Files And Pipes
@section Closing Input and Output Redirections
@cindex files, output, See output files
-@c STARTOFRANGE ifc
@cindex input files, closing
-@c STARTOFRANGE ofc
@cindex output, files@comma{} closing
-@c STARTOFRANGE pc
@cindex pipe, closing
-@c STARTOFRANGE cc
@cindex coprocesses, closing
@cindex @code{getline} command, coprocesses@comma{} using from
@@ -9988,10 +9913,6 @@ In POSIX mode (@pxref{Options}), @command{gawk} just returns zero
when closing a pipe.
@end sidebar
-@c ENDOFRANGE ifc
-@c ENDOFRANGE ofc
-@c ENDOFRANGE pc
-@c ENDOFRANGE cc
@node Output Summary
@section Summary
@@ -10055,11 +9976,9 @@ BEGIN @{ print "Serious error detected!" > /dev/stderr @}
@end enumerate
@c EXCLUDE END
-@c ENDOFRANGE prnt
@node Expressions
@chapter Expressions
-@c STARTOFRANGE exps
@cindex expressions
Expressions are the basic building blocks of @command{awk} patterns
@@ -10102,7 +10021,6 @@ which provide the values used in expressions.
@node Constants
@subsection Constant Expressions
-@c STARTOFRANGE cnst
@cindex constants, types of
The simplest type of expression is the @dfn{constant}, which always has
@@ -10259,7 +10177,6 @@ $ @kbd{gawk 'BEGIN @{ printf "0x11 is <%s>\n", 0x11 @}'}
@node Regexp Constants
@subsubsection Regular Expression Constants
-@c STARTOFRANGE rec
@cindex regexp constants
@cindex @code{~} (tilde), @code{~} operator
@cindex tilde (@code{~}), @code{~} operator
@@ -10271,7 +10188,6 @@ slashes, such as @code{@w{/^beginning and end$/}}. Most regexps used in
matching operators can also match computed or dynamic regexps
(which are typically just ordinary strings or variables that contain a regexp,
but could be a more complex expression).
-@c ENDOFRANGE cnst
@node Using Constant Regexps
@subsection Using Regular Expression Constants
@@ -10382,7 +10298,6 @@ or not @code{$0} matches @code{/hi/}.
@command{gawk} issues a warning when it sees a regexp constant used as
a parameter to a user-defined function, because passing a truth value in
this way is probably not what was intended.
-@c ENDOFRANGE rec
@node Variables
@subsection Variables
@@ -10948,11 +10863,8 @@ you're never quite sure what you'll get.
@node Assignment Ops
@subsection Assignment Expressions
-@c STARTOFRANGE asop
@cindex assignment operators
-@c STARTOFRANGE opas
@cindex operators, assignment
-@c STARTOFRANGE exas
@cindex expressions, assignment
@cindex @code{=} (equals sign), @code{=} operator
@cindex equals sign (@code{=}), @code{=} operator
@@ -11206,16 +11118,11 @@ awk '/[=]=/' /dev/null
@command{gawk} does not have this problem; BWK @command{awk}
and @command{mawk} also do not.
@end sidebar
-@c ENDOFRANGE exas
-@c ENDOFRANGE opas
-@c ENDOFRANGE asop
@node Increment Ops
@subsection Increment and Decrement Operators
-@c STARTOFRANGE inop
@cindex increment operators
-@c STARTOFRANGE opde
@cindex operators, decrement/increment
@dfn{Increment} and @dfn{decrement operators} increase or decrease the value of
a variable by one. An assignment operator can do the same thing, so
@@ -11263,7 +11170,6 @@ just like variables. (Use @samp{$(i++)} when you want to do a field reference
and a variable increment at the same time. The parentheses are necessary
because of the precedence of the field reference operator @samp{$}.)
-@c STARTOFRANGE deop
@cindex decrement operators
The decrement operator @samp{--} works just like @samp{++}, except that
it subtracts one instead of adding it. As with @samp{++}, it can be used before
@@ -11339,9 +11245,6 @@ You should avoid such things in your own programs.
@c You'll sleep better at night and be able to look at yourself
@c in the mirror in the morning.
@end sidebar
-@c ENDOFRANGE inop
-@c ENDOFRANGE opde
-@c ENDOFRANGE deop
@node Truth Values and Conditions
@section Truth Values and Conditions
@@ -11406,17 +11309,13 @@ the string constant @code{"0"} is actually true, because it is non-null.
@author Douglas Adams, @cite{The Hitchhiker's Guide to the Galaxy}
@end quotation
-@c STARTOFRANGE comex
@cindex comparison expressions
-@c STARTOFRANGE excom
@cindex expressions, comparison
@cindex expressions, matching, See comparison expressions
@cindex matching, expressions, See comparison expressions
@cindex relational operators, See comparison operators
@cindex operators, relational, See operators@comma{} comparison
-@c STARTOFRANGE varting
@cindex variable typing
-@c STARTOFRANGE vartypc
@cindex variables, types of, comparison expressions and
Unlike other programming languages, @command{awk} variables do not have a
fixed type. Instead, they can be either a number or a string, depending
@@ -11816,19 +11715,13 @@ $ @kbd{gawk --posix 'BEGIN @{ printf("ABC < abc = %s\n",}
@print{} ABC < abc = FALSE
@end example
-@c ENDOFRANGE comex
-@c ENDOFRANGE excom
-@c ENDOFRANGE vartypc
-@c ENDOFRANGE varting
@node Boolean Ops
@subsection Boolean Expressions
@cindex and Boolean-logic operator
@cindex or Boolean-logic operator
@cindex not Boolean-logic operator
-@c STARTOFRANGE exbo
@cindex expressions, Boolean
-@c STARTOFRANGE boex
@cindex Boolean expressions
@cindex operators, Boolean, See Boolean expressions
@cindex Boolean operators, See Boolean expressions
@@ -11974,8 +11867,6 @@ next record, and start processing the rules over again at the top.
The reason it's there is to avoid printing the bracketing
@samp{START} and @samp{END} lines.
@end quotation
-@c ENDOFRANGE exbo
-@c ENDOFRANGE boex
@node Conditional Exp
@subsection Conditional Expressions
@@ -12154,9 +12045,7 @@ $ @kbd{awk -f matchit.awk}
@node Precedence
@section Operator Precedence (How Operators Nest)
-@c STARTOFRANGE prec
@cindex precedence
-@c STARTOFRANGE oppr
@cindex operators, precedence
@dfn{Operator precedence} determines how operators are grouped when
@@ -12341,8 +12230,6 @@ Assignment. These operators group right-to-left.
The @samp{|&}, @samp{**}, and @samp{**=} operators are not specified by POSIX.
For maximum portability, do not use them.
@end quotation
-@c ENDOFRANGE prec
-@c ENDOFRANGE oppr
@node Locales
@section Where You Are Makes a Difference
@@ -12446,11 +12333,9 @@ program, and occasionally the format for data read as input.
@end itemize
-@c ENDOFRANGE exps
@node Patterns and Actions
@chapter Patterns, Actions, and Variables
-@c STARTOFRANGE pat
@cindex patterns
As you have already seen, each @command{awk} statement consists of
@@ -12746,9 +12631,7 @@ a range pattern. @value{DARKCORNER}
@node BEGIN/END
@subsection The @code{BEGIN} and @code{END} Special Patterns
-@c STARTOFRANGE beg
@cindex @code{BEGIN} pattern
-@c STARTOFRANGE end
@cindex @code{END} pattern
All the patterns described so far are for matching input records.
The @code{BEGIN} and @code{END} special patterns are different.
@@ -12886,8 +12769,6 @@ are not valid in an @code{END} rule, because all the input has been read.
@ifdocbook
@DBREF{Nextfile Statement}.)
@end ifdocbook
-@c ENDOFRANGE beg
-@c ENDOFRANGE end
@node BEGINFILE/ENDFILE
@subsection The @code{BEGINFILE} and @code{ENDFILE} Special Patterns
@@ -13008,7 +12889,6 @@ awk '@{ print $1 @}' mail-list
@noindent
prints the first field of every record.
-@c ENDOFRANGE pat
@node Using Shell Variables
@section Using Shell Variables in Programs
@@ -13157,11 +13037,8 @@ For deleting array elements.
@node Statements
@section Control Statements in Actions
-@c STARTOFRANGE csta
@cindex control statements
-@c STARTOFRANGE acs
@cindex statements, control, in actions
-@c STARTOFRANGE accs
@cindex actions, control statements in
@dfn{Control statements}, such as @code{if}, @code{while}, and so on,
@@ -13879,15 +13756,10 @@ Negative values, and values of 127 or greater, may not produce consistent
results across different operating systems.
@end quotation
-@c ENDOFRANGE csta
-@c ENDOFRANGE acs
-@c ENDOFRANGE accs
@node Built-in Variables
@section Predefined Variables
-@c STARTOFRANGE bvar
@cindex predefined variables
-@c STARTOFRANGE varb
@cindex variables, predefined
Most @command{awk} variables are available to use for your own
@@ -13914,9 +13786,7 @@ their areas of activity.
@node User-modified
@subsection Built-In Variables That Control @command{awk}
-@c STARTOFRANGE bvaru
@cindex predefined variables, user-modifiable
-@c STARTOFRANGE nmbv
@cindex user-modifiable variables
The following is an alphabetical list of variables that you can change to
@@ -14143,17 +14013,11 @@ marked string constants in the source text, as well as for the
(@pxref{Internationalization}).
The default value of @code{TEXTDOMAIN} is @code{"messages"}.
@end table
-@c ENDOFRANGE bvar
-@c ENDOFRANGE varb
-@c ENDOFRANGE bvaru
-@c ENDOFRANGE nmbv
@node Auto-set
@subsection Built-In Variables That Convey Information
-@c STARTOFRANGE bvconi
@cindex predefined variables, conveying information
-@c STARTOFRANGE vbconi
@cindex variables, predefined conveying information
The following is an alphabetical list of variables that @command{awk}
sets automatically on certain occasions in order to provide
@@ -14561,8 +14425,6 @@ implementation issues.} neither @code{FUNCTAB} nor @code{SYMTAB}
are available as elements within the @code{SYMTAB} array.
@end quotation
@end table
-@c ENDOFRANGE bvconi
-@c ENDOFRANGE vbconi
@sidebar Changing @code{NR} and @code{FNR}
@cindex @code{NR} variable, changing
@@ -14809,7 +14671,6 @@ control how @command{awk} will process the provided @value{DF}s.
@node Arrays
@chapter Arrays in @command{awk}
-@c STARTOFRANGE arrs
@cindex arrays
An @dfn{array} is a table of values called @dfn{elements}. The
@@ -14931,9 +14792,7 @@ Only the values are stored; the indices are implicit from the order of
the values. Here, 8 is the value at index zero, because 8 appears in the
position with zero elements before it.
-@c STARTOFRANGE arrin
@cindex arrays, indexing
-@c STARTOFRANGE inarr
@cindex indexing arrays
@cindex associative arrays
@cindex arrays, associative
@@ -15136,8 +14995,6 @@ that array's indices are consecutive integers starting at one.
@command{awk}'s arrays are efficient---the time to access an element
is independent of the number of elements in the array.
-@c ENDOFRANGE arrin
-@c ENDOFRANGE inarr
@node Reference to Elements
@subsection Referring to an Array Element
@@ -16190,14 +16047,11 @@ element is itself a subarray.
@end itemize
-@c ENDOFRANGE arrs
@node Functions
@chapter Functions
-@c STARTOFRANGE funcbi
@cindex functions, built-in
-@c STARTOFRANGE bifunc
@cindex built-in functions
This @value{CHAPTER} describes @command{awk}'s built-in functions,
which fall into three categories: numeric, string, and I/O.
@@ -17743,13 +17597,9 @@ you would see the latter (undesirable) output.
@subsection Time Functions
@cindex time functions
-@c STARTOFRANGE tst
@cindex timestamps
-@c STARTOFRANGE logftst
@cindex log files, timestamps in
-@c STARTOFRANGE filogtst
@cindex files, log@comma{} timestamps in
-@c STARTOFRANGE gawtst
@cindex @command{gawk}, timestamps
@cindex POSIX @command{awk}, timestamps and
@code{awk} programs are commonly used to process log files
@@ -17827,7 +17677,6 @@ is out of range, @code{mktime()} returns @minus{}1.
@cindex @command{gawk}, @code{PROCINFO} array in
@cindex @code{PROCINFO} array
@item @code{strftime(}[@var{format} [@code{,} @var{timestamp} [@code{,} @var{utc-flag}] ] ]@code{)}
-@c STARTOFRANGE strf
@cindexgawkfunc{strftime}
@cindex format time string
Format the time specified by @var{timestamp}
@@ -18076,7 +17925,6 @@ The time as a decimal timestamp in seconds since the epoch.
The date in VMS format (e.g., @samp{20-JUN-1991}).
@end ignore
@end table
-@c ENDOFRANGE strf
Additionally, the alternative representations are recognized but their
normal representations are used.
@@ -18127,23 +17975,14 @@ gawk 'BEGIN @{
exit exitval
@}' "$@@"
@end example
-@c ENDOFRANGE tst
-@c ENDOFRANGE logftst
-@c ENDOFRANGE filogtst
-@c ENDOFRANGE gawtst
@node Bitwise Functions
@subsection Bit-Manipulation Functions
@cindex bit-manipulation functions
-@c STARTOFRANGE bit
@cindex bitwise, operations
-@c STARTOFRANGE and
@cindex AND bitwise operation
-@c STARTOFRANGE oro
@cindex OR bitwise operation
-@c STARTOFRANGE xor
@cindex XOR bitwise operation
-@c STARTOFRANGE opbit
@cindex operations, bitwise
@quotation
@i{I can explain it for you, but I can't understand it for you.}
@@ -18435,11 +18274,6 @@ decimal and octal values for the same numbers
(@pxref{Nondecimal-numbers}),
and then demonstrates the
results of the @code{compl()}, @code{lshift()}, and @code{rshift()} functions.
-@c ENDOFRANGE bit
-@c ENDOFRANGE and
-@c ENDOFRANGE oro
-@c ENDOFRANGE xor
-@c ENDOFRANGE opbit
@node Type Functions
@subsection Getting Type Information
@@ -18519,15 +18353,11 @@ variant of the same message.
The default value for @var{domain} is the current value of @code{TEXTDOMAIN}.
The default value for @var{category} is @code{"LC_MESSAGES"}.
@end table
-@c ENDOFRANGE funcbi
-@c ENDOFRANGE bifunc
@node User-defined
@section User-Defined Functions
-@c STARTOFRANGE udfunc
@cindex user-defined functions
-@c STARTOFRANGE funcud
@cindex functions, user-defined
Complicated @command{awk} programs can often be simplified by defining
your own functions. User-defined functions can be called just like
@@ -18552,7 +18382,6 @@ variable definitions is appallingly awful.}
@author Brian Kernighan
@end quotation
-@c STARTOFRANGE fdef
@cindex functions, defining
Definitions of functions can appear anywhere between the rules of an
@command{awk} program. Thus, the general form of an @command{awk} program is
@@ -18799,12 +18628,10 @@ You might think that @code{ctime()} could use @code{PROCINFO["strftime"]}
for its format string. That would be a mistake, because @code{ctime()} is
supposed to return the time formatted in a standard fashion, and user-level
code could have changed @code{PROCINFO["strftime"]}.
-@c ENDOFRANGE fdef
@node Function Caveats
@subsection Calling User-Defined Functions
-@c STARTOFRANGE fudc
@cindex functions, user-defined, calling
@dfn{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
@@ -19096,7 +18923,6 @@ or the @code{nextfile} statement
@end ifnotdocbook
inside a user-defined function.
@command{gawk} does not have this limitation.
-@c ENDOFRANGE fudc
@node Return Statement
@subsection The @code{return} Statement
@@ -19224,7 +19050,6 @@ does report the second error.
Usually, such things aren't a big issue, but it's worth
being aware of them.
-@c ENDOFRANGE udfunc
@node Indirect Calls
@section Indirect Function Calls
@@ -19717,7 +19542,6 @@ program. This is equivalent to function pointers in C and C++.
@end itemize
-@c ENDOFRANGE funcud
@ifnotinfo
@part @value{PART2}Problem Solving with @command{awk}
@@ -19739,11 +19563,8 @@ It contains the following chapters:
@node Library Functions
@chapter A Library of @command{awk} Functions
-@c STARTOFRANGE libf
@cindex libraries of @command{awk} functions
-@c STARTOFRANGE flib
@cindex functions, library
-@c STARTOFRANGE fudlib
@cindex functions, user-defined, library of
@DBREF{User-defined} describes how to write
@@ -20066,13 +19887,9 @@ be tested with @command{gawk} and the results compared to the built-in
@node Assert Function
@subsection Assertions
-@c STARTOFRANGE asse
@cindex assertions
-@c STARTOFRANGE assef
@cindex @code{assert()} function (C library)
-@c STARTOFRANGE libfass
@cindex libraries of @command{awk} functions, assertions
-@c STARTOFRANGE flibass
@cindex functions, library, assertions
@cindex @command{awk} programs, lengthy, assertions
When writing large programs, it is often useful to know
@@ -20188,10 +20005,6 @@ most likely causing the program to hang as it waits for input.
There is a simple workaround to this:
make sure that such a @code{BEGIN} rule always ends
with an @code{exit} statement.
-@c ENDOFRANGE asse
-@c ENDOFRANGE assef
-@c ENDOFRANGE flibass
-@c ENDOFRANGE libfass
@node Round Function
@subsection Rounding Numbers
@@ -20749,11 +20562,8 @@ function shell_quote(s, # parameter
@node Data File Management
@section @value{DDF} Management
-@c STARTOFRANGE dataf
@cindex files, managing
-@c STARTOFRANGE libfdataf
@cindex libraries of @command{awk} functions, managing, data files
-@c STARTOFRANGE flibdataf
@cindex functions, library, managing data files
This @value{SECTION} presents functions that are useful for managing
command-line @value{DF}s.
@@ -21116,22 +20926,14 @@ The use of @code{No_command_assign} allows you to disable command-line
assignments at invocation time, by giving the variable a true value.
When not set, it is initially zero (i.e., false), so the command-line arguments
are left alone.
-@c ENDOFRANGE dataf
-@c ENDOFRANGE flibdataf
-@c ENDOFRANGE libfdataf
@node Getopt Function
@section Processing Command-Line Options
-@c STARTOFRANGE libfclo
@cindex libraries of @command{awk} functions, command-line options
-@c STARTOFRANGE flibclo
@cindex functions, library, command-line options
-@c STARTOFRANGE clop
@cindex command-line options, processing
-@c STARTOFRANGE oclp
@cindex options, command-line, processing
-@c STARTOFRANGE clibf
@cindex functions, library, C library
@cindex arguments, processing
Most utilities on POSIX-compatible systems take options on
@@ -21483,21 +21285,13 @@ further options
Several of the sample programs presented in
@ref{Sample Programs},
use @code{getopt()} to process their arguments.
-@c ENDOFRANGE libfclo
-@c ENDOFRANGE flibclo
-@c ENDOFRANGE clop
-@c ENDOFRANGE oclp
@node Passwd Functions
@section Reading the User Database
-@c STARTOFRANGE libfudata
@cindex libraries of @command{awk} functions, user database, reading
-@c STARTOFRANGE flibudata
@cindex functions, library, user database@comma{} reading
-@c STARTOFRANGE udatar
@cindex user database@comma{} reading
-@c STARTOFRANGE dataur
@cindex database, users@comma{} reading
@cindex @code{PROCINFO} array
The @code{PROCINFO} array
@@ -21844,21 +21638,13 @@ and such a change would clutter up the code.
The @command{id} program in @DBREF{Id Program}
uses these functions.
-@c ENDOFRANGE libfudata
-@c ENDOFRANGE flibudata
-@c ENDOFRANGE udatar
-@c ENDOFRANGE dataur
@node Group Functions
@section Reading the Group Database
-@c STARTOFRANGE libfgdata
@cindex libraries of @command{awk} functions, group database, reading
-@c STARTOFRANGE flibgdata
@cindex functions, library, group database@comma{} reading
-@c STARTOFRANGE gdatar
@cindex group database, reading
-@c STARTOFRANGE datagr
@cindex database, group, reading
@cindex @code{PROCINFO} array, and group membership
@cindex @code{getgrent()} function (C library)
@@ -22181,7 +21967,6 @@ function getgrent()
@}
@c endfile
@end example
-@c ENDOFRANGE clibf
@cindex @code{endgrent()} function (C library)
The @code{endgrent()} function resets @code{_gr_count} to zero so that @code{getgrent()} can
@@ -22270,10 +22055,6 @@ $ @kbd{gawk -f walk_array.awk}
@print{} a[4][2] = 42
@end example
-@c ENDOFRANGE libfgdata
-@c ENDOFRANGE flibgdata
-@c ENDOFRANGE gdatar
-@c ENDOFRANGE libf
@node Library Functions Summary
@section Summary
@@ -22387,13 +22168,9 @@ output identical to that of the original version.
@end enumerate
@c EXCLUDE END
-@c ENDOFRANGE flib
-@c ENDOFRANGE fudlib
-@c ENDOFRANGE datagr
@node Sample Programs
@chapter Practical @command{awk} Programs
-@c STARTOFRANGE awkpex
@cindex @command{awk} programs, examples of
@c FULLXREF ON
@@ -22463,7 +22240,6 @@ cut.awk -- -c1-8 myfiles > results
@node Clones
@section Reinventing Wheels for Fun and Profit
-@c STARTOFRANGE posimawk
@cindex POSIX, programs@comma{} implementing in @command{awk}
This @value{SECTION} presents a number of POSIX utilities implemented in
@@ -22494,11 +22270,8 @@ The programs are presented in alphabetical order.
@subsection Cutting Out Fields and Columns
@cindex @command{cut} utility
-@c STARTOFRANGE cut
@cindex @command{cut} utility
-@c STARTOFRANGE ficut
@cindex fields, cutting
-@c STARTOFRANGE colcut
@cindex columns, cutting
The @command{cut} utility selects, or ``cuts,'' characters or fields
from its standard input and sends them to its standard output.
@@ -22806,21 +22579,14 @@ other @command{awk} implementations to use @code{substr()}
it is also extremely painful.
The @code{FIELDWIDTHS} variable supplies an elegant solution to the problem
of picking the input line apart by characters.
-@c ENDOFRANGE cut
-@c ENDOFRANGE ficut
-@c ENDOFRANGE colcut
@node Egrep Program
@subsection Searching for Regular Expressions in Files
-@c STARTOFRANGE regexps
@cindex regular expressions, searching for
-@c STARTOFRANGE sfregexp
@cindex searching, files for regular expressions
-@c STARTOFRANGE fsregexp
@cindex files, searching for regular expressions
-@c STARTOFRANGE egrep
@cindex @command{egrep} utility
The @command{egrep} utility searches files for patterns. It uses regular
expressions that are almost identical to those available in @command{awk}
@@ -23088,17 +22854,12 @@ function usage()
@c endfile
@end example
-@c ENDOFRANGE regexps
-@c ENDOFRANGE sfregexp
-@c ENDOFRANGE fsregexp
-@c ENDOFRANGE egrep
@node Id Program
@subsection Printing Out User Information
@cindex printing, user information
@cindex users, information about, printing
-@c STARTOFRANGE id
@cindex @command{id} utility
The @command{id} utility lists a user's real and effective user ID numbers,
real and effective group ID numbers, and the user's group set, if any.
@@ -23227,16 +22988,13 @@ code that is used repeatedly, making the whole program
shorter and cleaner. In particular, moving the check for
the empty string into this function saves several lines of code.
-@c ENDOFRANGE id
@node Split Program
@subsection Splitting a Large File into Pieces
@c FIXME: One day, update to current POSIX version of split
-@c STARTOFRANGE filspl
@cindex files, splitting
-@c STARTOFRANGE split
@cindex @code{split} utility
The @command{split} program splits large text files into smaller pieces.
Usage is as follows:@footnote{This is the traditional usage. The
@@ -23371,15 +23129,12 @@ You might want to consider how to eliminate the use of
way as to solve the EBCDIC issue as well.
@end ifset
-@c ENDOFRANGE filspl
-@c ENDOFRANGE split
@node Tee Program
@subsection Duplicating Output into Multiple Files
@cindex files, multiple@comma{} duplicating output into
@cindex output, duplicating into files
-@c STARTOFRANGE tee
@cindex @code{tee} utility
The @code{tee} program is known as a ``pipe fitting.'' @code{tee} copies
its standard input to its standard output and also duplicates it to the
@@ -23492,18 +23247,14 @@ END @{
@}
@c endfile
@end example
-@c ENDOFRANGE tee
@node Uniq Program
@subsection Printing Nonduplicated Lines of Text
@c FIXME: One day, update to current POSIX version of uniq
-@c STARTOFRANGE prunt
@cindex printing, unduplicated lines of text
-@c STARTOFRANGE tpul
@cindex text@comma{} printing, unduplicated lines of
-@c STARTOFRANGE uniq
@cindex @command{uniq} utility
The @command{uniq} utility reads sorted lines of data on its standard
input, and by default removes duplicate lines. In other words, it only
@@ -23772,26 +23523,17 @@ suggestion.
@end ifset
-@c ENDOFRANGE prunt
-@c ENDOFRANGE tpul
-@c ENDOFRANGE uniq
@node Wc Program
@subsection Counting Things
@c FIXME: One day, update to current POSIX version of wc
-@c STARTOFRANGE count
@cindex counting
-@c STARTOFRANGE infco
@cindex input files, counting elements in
-@c STARTOFRANGE woco
@cindex words, counting
-@c STARTOFRANGE chco
@cindex characters, counting
-@c STARTOFRANGE lico
@cindex lines, counting
-@c STARTOFRANGE wc
@cindex @command{wc} utility
The @command{wc} (word count) utility counts lines, words, and characters in
one or more input files. Its usage is as follows:
@@ -23961,13 +23703,6 @@ END @{
@}
@c endfile
@end example
-@c ENDOFRANGE count
-@c ENDOFRANGE infco
-@c ENDOFRANGE lico
-@c ENDOFRANGE woco
-@c ENDOFRANGE chco
-@c ENDOFRANGE wc
-@c ENDOFRANGE posimawk
@node Miscellaneous Programs
@section A Grab Bag of @command{awk} Programs
@@ -24098,9 +23833,7 @@ Aharon Robbins <arnold@skeeve.com> wrote:
@author Erik Quanstrom
@end quotation
-@c STARTOFRANGE tialarm
@cindex time, alarm clock example program
-@c STARTOFRANGE alaex
@cindex alarm clock example program
The following program is a simple ``alarm clock'' program.
You give it a time of day and an optional message. At the specified time,
@@ -24252,15 +23985,11 @@ seconds are necessary:
@}
@c endfile
@end example
-@c ENDOFRANGE tialarm
-@c ENDOFRANGE alaex
@node Translate Program
@subsection Transliterating Characters
-@c STARTOFRANGE chtra
@cindex characters, transliterating
-@c STARTOFRANGE tr
@cindex @command{tr} utility
The system @command{tr} utility transliterates characters. For example, it is
often used to map uppercase letters into lowercase for further processing:
@@ -24408,15 +24137,11 @@ such as @samp{a-z}, as allowed by the @command{tr} utility.
Look at the code for @file{cut.awk} (@pxref{Cut Program})
for inspiration.
-@c ENDOFRANGE chtra
-@c ENDOFRANGE tr
@node Labels Program
@subsection Printing Mailing Labels
-@c STARTOFRANGE prml
@cindex printing, mailing labels
-@c STARTOFRANGE mlprint
@cindex mailing labels@comma{} printing
Here is a ``real world''@footnote{``Real world'' is defined as
``a program actually used to get something done.''}
@@ -24480,7 +24205,6 @@ that there are two blank lines at the top and two blank lines at the bottom.
The @code{END} rule arranges to flush the final page of labels; there may
not have been an even multiple of 20 labels in the data:
-@c STARTOFRANGE labels
@cindex @code{labels.awk} program
@example
@c file eg/prog/labels.awk
@@ -24545,14 +24269,10 @@ END @{
@}
@c endfile
@end example
-@c ENDOFRANGE prml
-@c ENDOFRANGE mlprint
-@c ENDOFRANGE labels
@node Word Sorting
@subsection Generating Word-Usage Counts
-@c STARTOFRANGE worus
@cindex words, usage counts@comma{} generating
When working with large amounts of text, it can be interesting to know
@@ -24614,7 +24334,6 @@ to remove punctuation characters. Finally, we solve the third problem
by using the system @command{sort} utility to process the output of the
@command{awk} script. Here is the new version of the program:
-@c STARTOFRANGE wordfreq
@cindex @code{wordfreq.awk} program
@example
@c file eg/prog/wordfreq.awk
@@ -24679,13 +24398,10 @@ This way of sorting must be used on systems that do not
have true pipes at the command-line (or batch-file) level.
See the general operating system documentation for more information on how
to use the @command{sort} program.
-@c ENDOFRANGE worus
-@c ENDOFRANGE wordfreq
@node History Sorting
@subsection Removing Duplicates from Unsorted Text
-@c STARTOFRANGE lidu
@cindex lines, duplicate@comma{} removing
The @command{uniq} program
(@pxref{Uniq Program}),
@@ -24710,7 +24426,6 @@ Each element of @code{lines} is a unique command, and the indices of
The @code{END} rule simply prints out the lines, in order:
@cindex Rakitzis, Byron
-@c STARTOFRANGE histsort
@cindex @code{histsort.awk} program
@example
@c file eg/prog/histsort.awk
@@ -24753,15 +24468,11 @@ print data[lines[i]], lines[i]
@noindent
This works because @code{data[$0]} is incremented each time a line is
seen.
-@c ENDOFRANGE lidu
-@c ENDOFRANGE histsort
@node Extract Program
@subsection Extracting Programs from Texinfo Source Files
-@c STARTOFRANGE texse
@cindex Texinfo, extracting programs from source files
-@c STARTOFRANGE fitex
@cindex files, Texinfo@comma{} extracting programs from
@ifnotinfo
Both this chapter and the previous chapter
@@ -24865,7 +24576,6 @@ The first rule handles calling @code{system()}, checking that a command is
given (@code{NF} is at least three) and also checking that the command
exits with a zero exit status, signifying OK:
-@c STARTOFRANGE extract
@cindex @code{extract.awk} program
@example
@c file eg/prog/extract.awk
@@ -25011,9 +24721,6 @@ END @{
@}
@c endfile
@end example
-@c ENDOFRANGE texse
-@c ENDOFRANGE fitex
-@c ENDOFRANGE extract
@node Simple Sed
@subsection A Simple Stream Editor
@@ -25043,7 +24750,6 @@ additional arguments are treated as @value{DF} names to process. If none
are provided, the standard input is used:
@cindex Brennan, Michael
-@c STARTOFRANGE awksed
@cindex @command{awksed.awk} program
@c @cindex simple stream editor
@c @cindex stream editor, simple
@@ -25120,14 +24826,11 @@ The @code{usage()} function prints an error message and exits.
Finally, the single rule handles the printing scheme outlined earlier,
using @code{print} or @code{printf} as appropriate, depending upon the
value of @code{RT}.
-@c ENDOFRANGE awksed
@node Igawk Program
@subsection An Easy Way to Use Library Functions
-@c STARTOFRANGE libfex
@cindex libraries of @command{awk} functions, example program for using
-@c STARTOFRANGE flibex
@cindex functions, library, example program for using
In @ref{Include Files}, we saw how @command{gawk} provides a built-in
file-inclusion capability. However, this is a @command{gawk} extension.
@@ -25266,7 +24969,6 @@ program.
The program is as follows:
-@c STARTOFRANGE igawk
@cindex @code{igawk.sh} program
@example
@c file eg/prog/igawk.sh
@@ -25591,10 +25293,6 @@ features to a program; they can often be layered on top.@footnote{@command{gawk}
does @code{@@include} processing itself in order to support the use
of @command{awk} programs as Web CGI scripts.}
-@c ENDOFRANGE libfex
-@c ENDOFRANGE flibex
-@c ENDOFRANGE awkpex
-@c ENDOFRANGE igawk
@node Anagram Program
@subsection Finding Anagrams from a Dictionary
@@ -25618,7 +25316,6 @@ The following program uses arrays of arrays to bring together
words with the same signature and array sorting to print the words
in sorted order:
-@c STARTOFRANGE anagram
@cindex @code{anagram.awk} program
@example
@c file eg/prog/anagram.awk
@@ -25727,7 +25424,6 @@ babery yabber
@dots{}
@end example
-@c ENDOFRANGE anagram
@node Signature Program
@subsection And Now for Something Completely Different
@@ -26047,9 +25743,7 @@ It contains the following chapters:
@node Advanced Features
@chapter Advanced Features of @command{gawk}
-@c STARTOFRANGE gawadv
@cindex @command{gawk}, features, advanced
-@c STARTOFRANGE advgaw
@cindex advanced features, @command{gawk}
@ignore
Contributed by: Peter Langston <pud!psl@bellcore.bellcore.com>
@@ -26759,7 +26453,6 @@ using regular pipes.
@section Using @command{gawk} for Network Programming
@cindex advanced features, network programming
@cindex networks, programming
-@c STARTOFRANGE tcpip
@cindex TCP/IP
@cindex @code{/inet/@dots{}} special files (@command{gawk})
@cindex files, @code{/inet/@dots{}} (@command{gawk})
@@ -26876,13 +26569,10 @@ which comes as part of the @command{gawk} distribution,
for a much more complete introduction and discussion, as well as
extensive examples.
-@c ENDOFRANGE tcpip
@node Profiling
@section Profiling Your @command{awk} Programs
-@c STARTOFRANGE awkp
@cindex @command{awk} programs, profiling
-@c STARTOFRANGE proawk
@cindex profiling @command{awk} programs
@cindex @code{awkprof.out} file
@cindex files, @code{awkprof.out}
@@ -27193,8 +26883,6 @@ When called this way, @command{gawk} ``pretty prints'' the program into
The @option{--pretty-print} option still runs your program.
This will change in the next major release.
@end quotation
-@c ENDOFRANGE awkp
-@c ENDOFRANGE proawk
@node Advanced Features Summary
@section Summary
@@ -27241,8 +26929,6 @@ the program, but that will change in the next major release.
@end itemize
-@c ENDOFRANGE advgaw
-@c ENDOFRANGE gawadv
@node Internationalization
@chapter Internationalization with @command{gawk}
@@ -27255,7 +26941,6 @@ countries, they were able to sell more systems.
As a result, internationalization and localization
of programs and software systems became a common practice.
-@c STARTOFRANGE inloc
@cindex internationalization, localization
@cindex @command{gawk}, internationalization and, See internationalization
@cindex internationalization, localization, @command{gawk} and
@@ -27300,7 +26985,6 @@ monetary values are printed and read.
@section GNU @command{gettext}
@cindex internationalizing a program
-@c STARTOFRANGE gettex
@cindex @command{gettext} library
@command{gawk} uses GNU @command{gettext} to provide its internationalization
features.
@@ -27352,7 +27036,6 @@ lookup of the translations.
@cindex @code{.po} files
@cindex files, @code{.po}
-@c STARTOFRANGE portobfi
@cindex portable object files
@cindex files, portable object
@item
@@ -27364,7 +27047,6 @@ For example, there might be a @file{fr.po} for a French translation.
@cindex @code{.gmo} files
@cindex files, @code{.gmo}
@cindex message object files
-@c STARTOFRANGE portmsgfi
@cindex files, message object
@item
Each language's @file{.po} file is converted into a binary
@@ -27492,11 +27174,9 @@ before or after the day in a date, local month abbreviations, and so on.
@item LC_ALL
All of the above. (Not too useful in the context of @command{gettext}.)
@end table
-@c ENDOFRANGE gettex
@node Programmer i18n
@section Internationalizing @command{awk} Programs
-@c STARTOFRANGE inap
@cindex @command{awk} programs, internationalizing
@command{gawk} provides the following variables and functions for
@@ -27729,8 +27409,6 @@ to provide you translations that you can also then distribute.
@DBXREF{I18N Example}
for the full list of steps to go through to create and test
translations for @command{guide}.
-@c ENDOFRANGE portobfi
-@c ENDOFRANGE portmsgfi
@node Printf Ordering
@subsection Rearranging @code{printf} Arguments
@@ -27906,7 +27584,6 @@ However, because the positional specifications are primarily for use in
@emph{translated} format strings, and because non-GNU @command{awk}s never
retrieve the translated string, this should not be a problem in practice.
@end itemize
-@c ENDOFRANGE inap
@node I18N Example
@section A Simple Internationalization Example
@@ -28102,7 +27779,6 @@ a number of translations for its messages.
@end itemize
-@c ENDOFRANGE inloc
@node Debugger
@chapter Debugging @command{awk} Programs
@@ -34535,9 +34211,7 @@ online documentation}.
@node V7/SVR3.1
@appendixsec Major Changes Between V7 and SVR3.1
-@c STARTOFRANGE gawkv
@cindex @command{awk}, versions of
-@c STARTOFRANGE gawkv1
@cindex @command{awk}, versions of, changes between V7 and SVR3.1
The @command{awk} language evolved considerably between the release of
@@ -34624,7 +34298,6 @@ Multiple @code{BEGIN} and @code{END} rules
Multidimensional arrays
(@pxref{Multidimensional}).
@end itemize
-@c ENDOFRANGE gawkv1
@node SVR4
@appendixsec Changes Between SVR3.1 and SVR4
@@ -34739,7 +34412,6 @@ not permitted by the POSIX standard.
The 2008 POSIX standard can be found online at
@url{http://www.opengroup.org/onlinepubs/9699919799/}.
-@c ENDOFRANGE gawkv
@node BTL
@appendixsec Extensions in Brian Kernighan's @command{awk}
@@ -34785,11 +34457,8 @@ available in his @command{awk}.
@node POSIX/GNU
@appendixsec Extensions in @command{gawk} Not in POSIX @command{awk}
-@c STARTOFRANGE fripls
@cindex compatibility mode (@command{gawk}), extensions
-@c STARTOFRANGE exgnot
@cindex extensions, in @command{gawk}, not in POSIX @command{awk}
-@c STARTOFRANGE posnot
@cindex POSIX, @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
@@ -35099,9 +34768,6 @@ Ultrix
@c XXX ADD MORE STUFF HERE
-@c ENDOFRANGE fripls
-@c ENDOFRANGE exgnot
-@c ENDOFRANGE posnot
@c This does not need to be in the formal book.
@ifclear FOR_PRINT
@@ -36150,9 +35816,7 @@ the appropriate credit where credit is due.
@c last two commas are part of see also
@cindex operating systems, See Also GNU/Linux@comma{} PC operating systems@comma{} Unix
-@c STARTOFRANGE gligawk
@cindex @command{gawk}, installing
-@c STARTOFRANGE ingawk
@cindex installing @command{gawk}
This appendix provides instructions for installing @command{gawk} on the
various platforms that are supported by the developers. The primary
@@ -36262,7 +35926,6 @@ a local expert.
@node Distribution contents
@appendixsubsec Contents of the @command{gawk} Distribution
-@c STARTOFRANGE gawdis
@cindex @command{gawk}, distribution
The @command{gawk} distribution has a number of C source files,
@@ -36455,7 +36118,6 @@ directory to run your version of @command{gawk} against the test suite.
If @command{gawk} successfully passes @samp{make check}, then you can
be confident of a successful port.
@end table
-@c ENDOFRANGE gawdis
@node Unix Installation
@appendixsec Compiling and Installing @command{gawk} on Unix-Like Systems
@@ -36881,9 +36543,7 @@ multibyte functionality is not available.
@node PC Using
@appendixsubsubsec Using @command{gawk} on PC Operating Systems
-@c STARTOFRANGE opgawx
@cindex operating systems, PC, @command{gawk} on
-@c STARTOFRANGE pcgawon
@cindex PC operating systems, @command{gawk} on
Under MS-DOS and MS-Windows, the Cygwin and MinGW environments support
@@ -37391,8 +37051,6 @@ $ @kbd{gawk :== $sys$common:[syshlp.examples.tcpip.snmp]gawk.exe}
This is apparently @value{PVERSION} 2.15.6, which is extremely old. We
recommend compiling and using the current version.
-@c ENDOFRANGE opgawx
-@c ENDOFRANGE pcgawon
@node Bugs
@appendixsec Reporting Problems and Bugs
@@ -37403,9 +37061,7 @@ recommend compiling and using the current version.
@end quotation
@c the radio show, not the book. :-)
-@c STARTOFRANGE dbugg
@cindex debugging @command{gawk}, bug reports
-@c STARTOFRANGE tblgawb
@cindex troubleshooting, @command{gawk}, 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
@@ -37502,12 +37158,9 @@ The people maintaining the various @command{gawk} ports are:
If your bug is also reproducible under Unix, send a copy of your
report to the @EMAIL{bug-gawk@@gnu.org,bug-gawk at gnu dot org} email list as well.
-@c ENDOFRANGE dbugg
-@c ENDOFRANGE tblgawb
@node Other Versions
@appendixsec Other Freely Available @command{awk} Implementations
-@c STARTOFRANGE awkim
@cindex @command{awk}, implementations
@ignore
From: emory!amc.com!brennan (Michael Brennan)
@@ -37728,7 +37381,6 @@ See also the ``Versions and implementations'' section of the
Wikipedia article} for information on additional versions.
@end table
-@c ENDOFRANGE awkim
@node Installation summary
@appendixsec Summary
@@ -37766,15 +37418,11 @@ implementations. Many are POSIX compliant; others are less so.
@end itemize
-@c ENDOFRANGE gligawk
-@c ENDOFRANGE ingawk
@ifclear FOR_PRINT
@node Notes
@appendix Implementation Notes
-@c STARTOFRANGE gawii
@cindex @command{gawk}, implementation issues
-@c STARTOFRANGE impis
@cindex implementation issues, @command{gawk}
This appendix contains information mainly of interest to implementers and
@@ -37879,11 +37527,8 @@ that has a Git plug-in for working with Git repositories.
@node Adding Code
@appendixsubsec Adding New Features
-@c STARTOFRANGE adfgaw
@cindex adding, features to @command{gawk}
-@c STARTOFRANGE fadgaw
@cindex features, adding to @command{gawk}
-@c STARTOFRANGE gawadf
@cindex @command{gawk}, features, adding
You are free to add any new features you like to @command{gawk}.
However, if you want your changes to be incorporated into the @command{gawk}
@@ -38050,9 +37695,6 @@ Although this sounds like a lot of work, please remember that while you
may write the new code, I have to maintain it and support it. If it
isn't possible for me to do that with a minimum of extra work, then I
probably will not.
-@c ENDOFRANGE adfgaw
-@c ENDOFRANGE gawadf
-@c ENDOFRANGE fadgaw
@node New Ports
@appendixsubsec Porting @command{gawk} to a New Operating System
@@ -38186,7 +37828,6 @@ coding style and brace layout that suits your taste.
@node Derived Files
@appendixsubsec Why Generated Files Are Kept In Git
-@c STARTOFRANGE gawkgit
@cindex Git, use of for @command{gawk} source code
@c From emails written March 22, 2012, to the gawk developers list.
@@ -38375,7 +38016,6 @@ wget http://git.savannah.gnu.org/cgit/gawk.git/snapshot/gawk-@var{branchname}.ta
@noindent
to retrieve a snapshot of the given branch.
-@c ENDOFRANGE gawkgit
@node Future Extensions
@appendixsec Probable Future Extensions
@@ -38756,13 +38396,10 @@ of @command{gawk}, but it @emph{will} be removed in the next major release.
@end itemize
-@c ENDOFRANGE impis
-@c ENDOFRANGE gawii
@node Basic Concepts
@appendix Basic Programming Concepts
@cindex programming, concepts
-@c STARTOFRANGE procon
@cindex programming, concepts
This @value{APPENDIX} attempts to define some of the basic concepts
@@ -39000,7 +38637,6 @@ standard for C. This standard became an ISO standard in 1990.
In 1999, a revised ISO C standard was approved and released.
Where it makes sense, POSIX @command{awk} is compatible with 1999 ISO C.
-@c ENDOFRANGE procon
@node Glossary
@unnumbered Glossary