\initial {!}
\entry {\code {!} operator}{102, 106, 110, 246}
\entry {\code {!=} operator}{100, 106}
\entry {\code {!~} operator}{29, 39, 40, 87, 100, 106}
\initial {#}
\entry {\code {#} (comment)}{16}
\entry {\code {#!} (executable scripts)}{15}
\initial {$}
\entry {\code {$} field operator}{46, 106}
\initial {%}
\entry {\code {%} operator}{106}
\entry {\code {%=} operator}{96, 106}
\initial {&}
\entry {\code {&&} operator}{102, 106}
\initial {*}
\entry {\code {*} operator}{106}
\entry {\code {**} operator}{106}
\entry {\code {**=} operator}{96, 106}
\entry {\code {*=} operator}{96, 106}
\initial {-}
\entry {\code {-} operator}{106}
\entry {\code {--} operator}{97, 106}
\entry {\code {--assign} option}{198}
\entry {\code {--compat} option}{199}
\entry {\code {--copyleft} option}{199}
\entry {\code {--copyright} option}{199}
\entry {\code {--disable-nls} configuration option}{298}
\entry {\code {--dump-variables} option}{199}
\entry {\code {--enable-portals} configuration option}{191, 298}
\entry {\code {--field-separator} option}{197}
\entry {\code {--file} option}{198}
\entry {\code {--gen-po} option}{181, 199}
\entry {\code {--help} option}{199}
\entry {\code {--lint} option}{200}
\entry {\code {--lint-old} option}{200}
\entry {\code {--non-decimal-data} option}{187, 200}
\entry {\code {--posix} option}{200}
\entry {\code {--profile} option}{201}
\entry {\code {--re-interval} option}{201}
\entry {\code {--source} option}{201}
\entry {\code {--traditional} option}{199}
\entry {\code {--usage} option}{199}
\entry {\code {--version} option}{201}
\entry {\code {--with-included-gettext} configuration option}{185, 298}
\entry {\code {-=} operator}{96, 106}
\entry {\code {-f} option}{15, 198}
\entry {\code {-F} option}{53, 197}
\entry {\code {-mf} option}{198}
\entry {\code {-mr} option}{198}
\entry {\code {-v} option}{198}
\entry {\code {-W} option}{198}
\initial {/}
\entry {\code {/} operator}{106}
\entry {\code {/=} operator}{96, 106}
\entry {\code {/=} operator vs. \code {/=\dots {}/} regexp constant}{96}
\entry {\file {/dev/fd} special files}{79}
\entry {\file {/dev/pgrpid} special file}{80}
\entry {\file {/dev/pid} special file}{80}
\entry {\file {/dev/ppid} special file}{80}
\entry {\file {/dev/stderr} special file}{79}
\entry {\file {/dev/stdin} special file}{79}
\entry {\file {/dev/stdout} special file}{79}
\entry {\file {/dev/user} special file}{80}
\entry {\file {/inet} special files}{190}
\entry {\file {/p} special files}{191}
\initial {=}
\entry {\code {=} operator}{94}
\entry {\code {==} operator}{100, 106}
\initial {?}
\entry {\code {?:} operator}{106}
\initial {{\_}}
\entry {\code {_} C macro (\code {gettext})}{178}
\entry {\code {_gr_init} user-defined function}{233}
\entry {\code {_pw_init} user-defined function}{229}
\initial {{\tt\char 124}}
\entry {\code {|} I/O operator}{63, 76, 106}
\entry {\code {|&} I/O operator}{64, 77, 106, 188}
\entry {\code {||} operator}{102, 106}
\initial {{\tt\char 126}}
\entry {\code {~} operator}{29, 39, 40, 87, 100, 106}
\initial {{\tt\char 43}}
\entry {\code {+} operator}{106}
\entry {\code {+=} operator}{96, 106}
\entry {\code {++} operator}{97, 106}
\initial {{\tt\gtr}}
\entry {\code {>} I/O operator}{76}
\entry {\code {>} operator}{100, 106}
\entry {\code {>=} operator}{100, 106}
\entry {\code {>>} I/O operator}{76, 106}
\initial {{\tt\hat}}
\entry {\code {^} operator}{106}
\entry {\code {^=} operator}{96, 106}
\initial {{\tt\indexbackslash }}
\entry {\code {{\tt\rawbackslashxx }'} regexp operator}{38}
\entry {\code {{\tt\rawbackslashxx }/} escape sequence}{31}
\entry {\code {{\tt\rawbackslashxx }`} regexp operator}{38}
\entry {\code {{\tt\rawbackslashxx }"} escape sequence}{31}
\entry {\code {{\tt\rawbackslashxx }>} regexp operator}{37}
\entry {\code {{\tt\rawbackslashxx }<} regexp operator}{37}
\entry {\code {{\tt\rawbackslashxx }a} escape sequence}{30}
\entry {\code {{\tt\rawbackslashxx }b} escape sequence}{30}
\entry {\code {{\tt\rawbackslashxx }B} regexp operator}{37}
\entry {\code {{\tt\rawbackslashxx }f} escape sequence}{31}
\entry {\code {{\tt\rawbackslashxx }n} escape sequence}{31}
\entry {\code {{\tt\rawbackslashxx }}\var {nnn} escape sequence (octal)}{31}
\entry {\code {{\tt\rawbackslashxx }r} escape sequence}{31}
\entry {\code {{\tt\rawbackslashxx }t} escape sequence}{31}
\entry {\code {{\tt\rawbackslashxx }v} escape sequence}{31}
\entry {\code {{\tt\rawbackslashxx }w} regexp operator}{37}
\entry {\code {{\tt\rawbackslashxx }W} regexp operator}{37}
\entry {\code {{\tt\rawbackslashxx }x} escape sequence}{31}
\entry {\code {{\tt\rawbackslashxx }y} regexp operator}{37}
\initial {{\tt\less}}
\entry {\code {<} I/O operator}{61}
\entry {\code {<} operator}{100, 106}
\entry {\code {<=} operator}{100, 106}
\initial {A}
\entry {accessing fields}{46}
\entry {account information}{227, 232}
\entry {acronym}{4}
\entry {action, curly braces}{113}
\entry {action, default}{20}
\entry {action, definition of}{113}
\entry {action, empty}{20}
\entry {action, separating statements}{113}
\entry {adding new features}{311}
\entry {addition}{91}
\entry {advanced features}{187}
\entry {advanced notes}{16, 32, 41, 46, 78, 84, 87, 96, 98, 128, 157, 159, 160}
\entry {Aho, Alfred}{4, 290}
\entry {AI programming, using \command {gawk}}{295}
\entry {\code {alarm.awk} program}{261}
\entry {algorithm, definition of}{330}
\entry {amazing \command {awk} assembler (\command {aaa})}{335}
\entry {amazingly workable formatter (\command {awf})}{335}
\entry {ambiguity, syntactic: \code {/=} operator vs. \code {/=\dots {}/} regexp constant}{96}
\entry {amiga}{299}
\entry {anchors in regexps}{33}
\entry {AND bitwise operation}{166}
\entry {\code {and} built-in function}{166}
\entry {AND logical operator}{102}
\entry {anonymous \command {ftp}}{293}
\entry {ANSI}{335}
\entry {applications of \command {awk}}{3, 26}
\entry {archeologists}{308}
\entry {\code {ARGC} variable}{126}
\entry {\code {ARGIND} variable}{126, 202}
\entry {argument processing}{222}
\entry {arguments in function call}{104}
\entry {arguments, command-line}{197}
\entry {\code {ARGV} variable}{126, 202}
\entry {arithmetic operators}{91}
\entry {array assignment}{135}
\entry {array reference}{135}
\entry {arrays}{133}
\entry {arrays, associative}{134}
\entry {arrays, definition of}{134}
\entry {arrays, deleting an element}{138}
\entry {arrays, deleting entire contents}{138}
\entry {arrays, multidimensional subscripts}{140}
\entry {arrays, presence of elements}{135}
\entry {arrays, sorting}{143}
\entry {arrays, sorting and \code {IGNORECASE}}{144}
\entry {arrays, sparse}{134}
\entry {arrays, special \code {for} statement}{137}
\entry {arrays, subscripts, and \code {IGNORECASE}}{134}
\entry {arrays, subscripts, uninitialized variables}{140}
\entry {arrays, the \code {in} operator}{135}
\entry {artificial intelligence, using \command {gawk}}{295}
\entry {ASCII}{214}
\entry {\code {asort} built-in function}{143, 148}
\entry {\code {assert} C library function}{211}
\entry {\code {assert} user-defined function}{211}
\entry {assertions}{211}
\entry {assignment operators}{94}
\entry {assignment to fields}{48}
\entry {\code {assoc_clear} internal function}{316}
\entry {\code {assoc_lookup} internal function}{316}
\entry {associative arrays}{134}
\entry {\code {atan2} built-in function}{146}
\entry {atari}{305}
\entry {automatic initialization}{23}
\entry {automatic warnings}{32, 80, 81, 87, 88, 153, 158, 201}
\entry {\command {awf} (amazingly workable formatter) program}{335}
\entry {\command {awk} language, POSIX version}{31, 33, 34, 36, 55, 70, 74, 91, 92, 96, 106, 118, 119, 120, 123, 149, 155, 170}
\entry {\command {awk} language, V.4 version}{30, 31, 284}
\entry {\command {awka} compiler for \command {awk} programs}{310}
\entry {\command {awka}, source code}{310}
\entry {\code {AWKNUM} internal type}{315}
\entry {\env {AWKPATH} environment variable}{203}
\entry {\file {awkprof.out} profiling output file}{191}
\entry {\command {awksed.awk} program}{274}
\entry {\file {awkvars.out} global variable list output file}{199}
\initial {B}
\entry {backslash continuation}{24, 247}
\entry {backslash continuation, and comments}{25}
\entry {backslash continuation, in \command {csh}}{23, 24}
\entry {basic function of \command {awk}}{13}
\entry {basic programming concepts}{329}
\entry {\file {BBS-list} file}{19}
\entry {Beebe, Nelson}{10}
\entry {\code {BEGIN} special pattern}{110}
\entry {\code {beginfile} user-defined function}{219}
\entry {BeOS}{300}
\entry {Berry, Karl}{10}
\entry {binary I/O}{123}
\entry {\code {bindtextdomain} built-in function}{168, 180}
\entry {\code {bindtextdomain} C library function}{178}
\entry {\code {bindtextdomain} user-defined function}{183}
\entry {\code {BINMODE} variable}{123, 302}
\entry {\code {bits2str} user-defined function}{167}
\entry {bitwise complement}{166}
\entry {bitwise operations}{166}
\entry {bitwise shift}{166}
\entry {blocks, \code {BEGIN} and \code {END}}{110, 192}
\entry {body of a loop}{115}
\entry {book, using this}{5}
\entry {boolean expressions}{102}
\entry {boolean operators}{102}
\entry {bracket expression}{33}
\entry {Brandon, Dick}{5}
\entry {\code {break} statement}{118}
\entry {\code {break}, outside of loops}{118}
\entry {Brennan, Michael}{138, 188, 274, 309}
\entry {Broder, Alan J.\spacefactor =1000 }{291}
\entry {Brown, Martin}{10, 290, 309}
\entry {BSD portal files}{191}
\entry {BSD-based operating systems}{8, 191, 345}
\entry {buffer matching operators}{37}
\entry {buffering output}{158, 160}
\entry {buffering, interactive vs. non-interactive}{159}
\entry {buffering, non-interactive vs. interactive}{159}
\entry {buffers, flushing}{158, 160}
\entry {bug reports}{308}
\entry {bug reports, email address, \code {bug-gawk@gnu.org}}{308}
\entry {\code {bug-gawk@gnu.org} bug reporting address}{308}
\entry {bugs, known in \command {gawk}}{205}
\entry {built-in functions}{145}
\entry {built-in variables}{122}
\entry {built-in variables, convey information}{125}
\entry {built-in variables, user modifiable}{123}
\initial {C}
\entry {call by reference}{172}
\entry {call by value}{172}
\entry {calling a function}{104, 172}
\entry {case conversion}{154}
\entry {case sensitivity}{38}
\entry {changing contents of a field}{48}
\entry {changing the record separator}{43}
\entry {character class}{33, 36}
\entry {character encodings}{214}
\entry {character list}{33}
\entry {character list, complemented}{33}
\entry {character set (regexp component)}{33}
\entry {character sets (machine character encodings)}{214, 337}
\entry {Chassell, Robert J.\spacefactor =1000 }{10}
\entry {\command {chem} utility}{337}
\entry {\code {chr} user-defined function}{214}
\entry {Cliff random numbers}{213}
\entry {\code {cliff_rand} user-defined function}{213}
\entry {\code {close} built-in function}{81, 157}
\entry {Close, Diane}{9, 290}
\entry {\code {close}, return value}{84}
\entry {closing coprocesses}{81}
\entry {closing input files and pipes}{81}
\entry {closing output files and pipes}{81}
\entry {coding style used in \command {gawk}}{312}
\entry {collating elements}{36}
\entry {collating symbols}{36}
\entry {comma operator, not supported}{117}
\entry {command line}{197}
\entry {command line, setting \code {FS} on}{53}
\entry {command-line formats}{13}
\entry {command-line option, \code {--assign}}{198}
\entry {command-line option, \code {--compat}}{199}
\entry {command-line option, \code {--copyleft}}{199}
\entry {command-line option, \code {--copyright}}{199}
\entry {command-line option, \code {--dump-variables}}{199}
\entry {command-line option, \code {--field-separator}}{197}
\entry {command-line option, \code {--file}}{198}
\entry {command-line option, \code {--gen-po}}{181, 199}
\entry {command-line option, \code {--help}}{199}
\entry {command-line option, \code {--lint}}{200}
\entry {command-line option, \code {--lint-old}}{200}
\entry {command-line option, \code {--non-decimal-data}}{187, 200}
\entry {command-line option, \code {--posix}}{200}
\entry {command-line option, \code {--profile}}{201}
\entry {command-line option, \code {--re-interval}}{201}
\entry {command-line option, \code {--source}}{201}
\entry {command-line option, \code {--traditional}}{199}
\entry {command-line option, \code {--usage}}{199}
\entry {command-line option, \code {--version}}{201}
\entry {command-line option, \code {-f}}{15, 198}
\entry {command-line option, \code {-F}}{53, 197}
\entry {command-line option, \code {-mf}}{198}
\entry {command-line option, \code {-mr}}{198}
\entry {command-line option, \code {-v}}{198}
\entry {command-line option, \code {-W}}{198}
\entry {comments}{16}
\entry {comments and backslash continuation}{25}
\entry {common mistakes}{32, 41, 50, 68, 78, 79, 92, 93, 100, 154, 199}
\entry {\code {comp.lang.awk} Usenet news group}{308}
\entry {comparison expressions}{99}
\entry {comparisons, string vs. regexp}{101}
\entry {compatibility mode}{199, 286}
\entry {compiled programs}{329, 337}
\entry {\code {compl} built-in function}{166}
\entry {complement, bitwise}{166}
\entry {complemented character list}{33}
\entry {compound statement}{114}
\entry {computed regular expressions}{40}
\entry {concatenation}{92}
\entry {concatenation evaluation order}{93}
\entry {conditional expression}{103}
\entry {configuration option, \code {--disable-nls}}{298}
\entry {configuration option, \code {--enable-portals}}{191, 298}
\entry {configuration option, \code {--with-included-gettext}}{185, 298}
\entry {configuring \command {gawk}}{298}
\entry {constants, types of}{85}
\entry {continuation of lines}{24}
\entry {\code {continue} statement}{119}
\entry {\code {continue}, outside of loops}{119}
\entry {contributors to \command {gawk}}{289}
\entry {control statement}{114}
\entry {conventions, programming}{122, 126, 145, 169, 174, 187, 208, 209, 321, 323}
\entry {conversion of case}{154}
\entry {conversion of strings and numbers}{90}
\entry {conversions, during subscripting}{139}
\entry {converting dates to timestamps}{162}
\entry {\code {CONVFMT} variable}{90, 123, 139}
\entry {coprocess}{64, 77, 81, 188}
\entry {\code {cos} built-in function}{146}
\entry {\command {csh} utility}{17, 23, 24, 188, 202}
\entry {\command {csh}, backslash continuation}{23, 24}
\entry {curly braces}{113}
\entry {\code {custom.h} configuration file}{298}
\entry {\command {cut} utility}{238}
\entry {\code {cut.awk} program}{238}
\initial {D}
\entry {d.c., see ``dark corner''}{8}
\entry {dark corner}{8, 32, 45, 46, 50, 53, 55, 57, 65, 70, 72, 73, 84, 87, 88, 90, 91, 96, 98, 118, 119, 122, 127, 128, 140, 150, 197, 203, 338}
\entry {data files, non-readable, skipping}{221}
\entry {data files, readable, checking}{221}
\entry {data-driven languages}{13, 330}
\entry {dates, converting to timestamps}{162}
\entry {Davies, Stephen}{290, 309}
\entry {\code {dcgettext} built-in function}{168, 179}
\entry {\code {dcgettext} user-defined function}{183}
\entry {deadlock}{189}
\entry {decrement operators}{97}
\entry {default action}{20}
\entry {default pattern}{20}
\entry {defining functions}{168}
\entry {Deifik, Scott}{10, 290, 309}
\entry {\code {delete} statement}{138}
\entry {deleting elements of arrays}{138}
\entry {deleting entire arrays}{138}
\entry {deprecated features}{204}
\entry {deprecated options}{204}
\entry {differences between \command {gawk} and \command {awk}}{39, 45, 46, 52, 60, 64, 65, 72, 77, 78, 79, 83, 84, 85, 88, 92, 104, 111, 121, 123, 124, 130, 138, 145, 148, 150, 151, 154, 203}
\entry {directory search}{203, 281, 301, 304}
\entry {division}{91}
\entry {\code {do}-\code {while} statement}{116}
\entry {documentation, online}{8}
\entry {documenting \command {awk} programs}{16, 208}
\entry {double-precision floating-point, definition of}{331}
\entry {Drepper, Ulrich}{10}
\entry {\code {dupnode} internal function}{317}
\entry {\code {dupword.awk} program}{260}
\entry {dynamic profiling}{194}
\entry {dynamic regular expressions}{40}
\entry {dynamic regular expressions with embedded newlines}{41}
\initial {E}
\entry {EBCDIC}{214}
\entry {\command {egrep} utility}{35, 243}
\entry {\code {egrep.awk} program}{243}
\entry {element assignment}{135}
\entry {element of array}{135}
\entry {emaill address for bug reports, \code {bug-gawk@gnu.org}}{308}
\entry {embedded newlines, in dynamic regexps}{41}
\entry {\code {EMISTERED}}{190}
\entry {empty action}{20}
\entry {empty pattern}{112}
\entry {empty program}{197}
\entry {empty string}{45, 52, 90, 98}
\entry {empty string, definition of}{331}
\entry {\code {END} special pattern}{110}
\entry {\code {endfile} user-defined function}{219}
\entry {\code {endgrent} user-defined function}{236}
\entry {\code {endpwent} user-defined function}{231}
\entry {\code {ENVIRON} variable}{126}
\entry {environment variable, \env {AWKPATH}}{203}
\entry {environment variable, \code {POSIXLY_CORRECT}}{202}
\entry {epoch, definition of}{339}
\entry {equivalence classes}{37}
\entry {\code {ERRNO} variable}{60, 127}
\entry {errors, common}{32, 41, 50, 68, 78, 79, 92, 93, 100, 154, 199}
\entry {escape processing, \code {sub} et. al.}{155}
\entry {escape sequence notation}{30}
\entry {evaluation, order of}{93, 98, 145}
\entry {examining fields}{46}
\entry {executable scripts}{15}
\entry {\code {exit} statement}{121}
\entry {\code {exp} built-in function}{146}
\entry {\command {expand} utility}{21}
\entry {explicit input}{59}
\entry {exponentiation}{91}
\entry {expression}{85}
\entry {expression, assignment}{94}
\entry {expression, boolean}{102}
\entry {expression, comparison}{99}
\entry {expression, conditional}{103}
\entry {expression, matching}{99}
\entry {\code {extension} built-in function}{324}
\entry {extensions, Bell Laboratories \command {awk}}{285}
\entry {extensions, \command {mawk}}{310}
\entry {\code {extract.awk} program}{271}
\entry {extraction, of marked strings (internationalization)}{181}
\initial {F}
\entry {fatal errors}{55, 74, 145, 150, 152, 159, 200, 221}
\entry {FDL}{355}
\entry {features, adding to \command {gawk}}{311}
\entry {features, advanced}{187}
\entry {features, undocumented}{205}
\entry {Fenlason, Jay}{4, 290}
\entry {\code {fflush} built-in function}{158}
\entry {field operator \code {$}}{46}
\entry {field separator, choice of}{51}
\entry {field separator, \code {FS}}{50}
\entry {field separator, on command line}{53}
\entry {fields}{46}
\entry {fields, changing contents of}{48}
\entry {fields, definition of}{330}
\entry {fields, separating}{50}
\entry {\code {FIELDWIDTHS} variable}{123}
\entry {file descriptors}{78}
\entry {file, \command {awk} program}{15}
\entry {\code {FILENAME} variable}{43, 65, 127}
\entry {\code {FILENAME}, being set by \code {getline}}{65}
\entry {Fish, Fred}{290, 309}
\entry {flag variables}{103, 110, 251}
\entry {floating-point, definition of}{331}
\entry {floating-point, positive and negative values for zero}{333}
\entry {floating-point, precision issues}{333}
\entry {flushing buffers}{158, 160}
\entry {\code {FNR} variable}{43, 127}
\entry {\code {for (x in \dots {})} statement}{137}
\entry {\code {for} statement}{116}
\entry {\code {force_number} internal function}{315}
\entry {\code {force_string} internal function}{316}
\entry {format specifier, \code {printf}}{71}
\entry {format specifier, \code {strftime}}{162}
\entry {format specifiers, mixing regular with positional specifiers (\code {printf})}{182}
\entry {format string}{70}
\entry {format, numeric output}{70}
\entry {formatted output}{70}
\entry {formatted timestamps}{216}
\entry {Free Documentation License}{355}
\entry {Free Software Foundation}{8, 293, 340}
\entry {\code {free_temp} internal macro}{317}
\entry {FreeBSD}{8, 345}
\entry {\code {FS} variable}{50, 123}
\entry {FSF}{8, 293, 340}
\entry {\command {ftp}, anonymous}{293}
\entry {function call}{104, 172}
\entry {function definition}{168}
\entry {function, recursive}{170}
\entry {function, user-defined}{168}
\entry {functions, undefined}{173}
\initial {G}
\entry {G-d}{11}
\entry {Garfinkle, Scott}{290}
\entry {\command {gawk}, coding style}{312}
\entry {\command {gawk}, source code}{293}
\entry {General Public License}{8, 309, 310, 314, 340}
\entry {\code {gensub} built-in function}{153}
\entry {\code {gensub}, escape processing}{155}
\entry {\code {get_argument} internal function}{317}
\entry {\code {getgrent} C library function}{232}
\entry {\code {getgrent} user-defined function}{236}
\entry {\code {getgrgid} user-defined function}{235}
\entry {\code {getgrnam} user-defined function}{235}
\entry {\code {getgruser} user-defined function}{236}
\entry {\code {getline} built-in function}{59}
\entry {\code {getline}, return values}{60}
\entry {\code {getline}, setting \code {FILENAME}}{65}
\entry {\code {getopt} C library function}{222}
\entry {\code {getopt} user-defined function}{224}
\entry {\code {getpwent} C library function}{227}
\entry {\code {getpwent} user-defined function}{231}
\entry {\code {getpwnam} user-defined function}{231}
\entry {\code {getpwuid} user-defined function}{231}
\entry {\code {getservbyname} C library function}{190}
\entry {\code {gettext} C library function}{178}
\entry {\code {gettext}, how it works}{177}
\entry {\code {gettimeofday} user-defined function}{217}
\entry {getting \command {gawk}}{293}
\entry {GNITS mailing list}{10}
\entry {GNU Free Documentation License}{355}
\entry {GNU General Public License}{8, 309, 310, 314, 340}
\entry {GNU Lesser General Public License}{310, 341}
\entry {GNU Project}{8, 340}
\entry {GNU/Linux}{8, 185, 293, 298, 306, 315, 320, 324, 345}
\entry {GPL}{8, 309, 310, 314, 340}
\entry {\command {grcat} program}{232}
\entry {Grigera, Juan}{290, 309}
\entry {group file}{232}
\entry {group information}{232}
\entry {\code {gsub} built-in function}{152}
\entry {\code {gsub}, escape processing}{155}
\entry {\code {gsub}, third argument of}{152}
\initial {H}
\entry {Hankerson, Darrel}{10, 290, 309}
\entry {Hartholz, Elaine}{10}
\entry {Hartholz, Marshall}{10}
\entry {hexadecimal numbers}{85}
\entry {historical features}{53, 118, 119, 149}
\entry {history of \command {awk}}{4}
\entry {\code {histsort.awk} program}{269}
\entry {how \command {awk} works}{22}
\entry {Hughes, Phil}{10}
\entry {\code {HUP} signal}{195}
\initial {I}
\entry {I/O, binary}{123}
\entry {I/O, from \code {BEGIN} and \code {END}}{111}
\entry {I/O, two-way}{188}
\entry {\command {id} utility}{247}
\entry {\code {id.awk} program}{247}
\entry {\code {if}-\code {else} statement}{114}
\entry {\code {igawk.sh} program}{277}
\entry {\code {IGNORECASE} variable}{39, 124, 134, 144}
\entry {\code {IGNORECASE}, and array sorting}{144}
\entry {\code {IGNORECASE}, and array subscripts}{134}
\entry {ignoring case}{38}
\entry {implementation limits}{65, 78}
\entry {\code {in} operator}{100, 106, 137, 249}
\entry {increment operators}{97}
\entry {\code {index} built-in function}{148}
\entry {initialization, automatic}{23}
\entry {input}{43}
\entry {input file, sample}{19}
\entry {input files, skipping}{209}
\entry {input pipeline}{63}
\entry {input redirection}{61}
\entry {input, explicit}{59}
\entry {input, \code {getline} command}{59}
\entry {input, multiple line records}{57}
\entry {input, standard}{14}
\entry {insomnia, cure for}{260}
\entry {installation, amiga}{299}
\entry {installation, atari}{305}
\entry {installation, beos}{300}
\entry {installation, pc operating systems}{300}
\entry {installation, tandem}{307}
\entry {installation, unix}{297}
\entry {installation, vms}{303}
\entry {\code {int} built-in function}{146}
\entry {integer, definition of}{331}
\entry {integer, unsigned}{331}
\entry {interaction, \command {awk} and other programs}{158}
\entry {interactive buffering vs. non-interactive}{159}
\entry {internal function, \code {assoc_clear}}{316}
\entry {internal function, \code {assoc_lookup}}{316}
\entry {internal function, \code {dupnode}}{317}
\entry {internal function, \code {force_number}}{315}
\entry {internal function, \code {force_string}}{316}
\entry {internal function, \code {get_argument}}{317}
\entry {internal function, \code {make_builtin}}{317}
\entry {internal function, \code {make_number}}{316}
\entry {internal function, \code {make_string}}{316}
\entry {internal function, \code {set_value}}{317}
\entry {internal function, \code {tmp_number}}{317}
\entry {internal function, \code {tmp_string}}{316}
\entry {internal function, \code {update_ERRNO}}{317}
\entry {internal macro, \code {free_temp}}{317}
\entry {internal type, \code {AWKNUM}}{315}
\entry {internal type, \code {NODE}}{315}
\entry {internal variable, \code {param_cnt}}{316}
\entry {internal variable, \code {stlen}}{316}
\entry {internal variable, \code {stptr}}{316}
\entry {internal variable, \code {type}}{316}
\entry {internal variable, \code {vname}}{316}
\entry {internationalization}{125, 177}
\entry {internationalization features in \command {gawk}}{177}
\entry {internationalization of \command {awk} programs, portability issues}{183}
\entry {internationalization, marked strings}{179}
\entry {internationalizing a program}{177}
\entry {interpreted programs}{329, 341}
\entry {interval expressions}{34}
\entry {\file {inventory-shipped} file}{19}
\entry {invocation of \command {gawk}}{197}
\entry {ISO}{341}
\entry {ISO 8601}{163}
\entry {ISO 8859-1}{39, 337}
\entry {ISO Latin-1}{39, 337}
\initial {J}
\entry {Jacobs, Andrew}{229}
\entry {Jaegermann, Michal}{10, 290}
\entry {Jedi knights}{205}
\entry {\code {join} user-defined function}{216}
\initial {K}
\entry {Kahrs, J\"urgen}{10, 290}
\entry {Kenobi, Obi-Wan}{205}
\entry {Kernighan, Brian}{4, 8, 11, 92, 285, 290, 309, 332}
\entry {\command {kill} command}{194}
\entry {Knights, jedi}{205}
\entry {known bugs}{205}
\entry {Kwok, Conrad}{290}
\initial {L}
\entry {\code {labels.awk} program}{266}
\entry {language, \command {awk}}{5}
\entry {language, data-driven}{13, 330}
\entry {language, procedural}{13}
\entry {\code {LC_ALL} locale category}{179}
\entry {\code {LC_COLLATE} locale category}{179}
\entry {\code {LC_CTYPE} locale category}{179}
\entry {\code {LC_MESSAGES} locale category}{179}
\entry {\code {LC_MONETARY} locale category}{179}
\entry {\code {LC_NUMERIC} locale category}{179}
\entry {\code {LC_RESPONSE} locale category}{179}
\entry {\code {LC_TIME} locale category}{179}
\entry {left shift, bitwise}{166}
\entry {leftmost longest match}{40, 57}
\entry {\code {length} built-in function}{148}
\entry {Lesser General Public License}{310, 341}
\entry {LGPL}{310, 341}
\entry {limitations}{65, 78}
\entry {line break}{24}
\entry {line continuation}{24, 69, 103, 104}
\entry {lint checks}{74, 124, 138, 140, 173, 197, 200, 202}
\entry {\code {LINT} variable}{124}
\entry {Linux}{8, 185, 293, 298, 306, 315, 320, 324, 345}
\entry {locale categories}{178}
\entry {locale, definition of}{164}
\entry {localization}{177}
\entry {\code {log} built-in function}{146}
\entry {logical false}{98}
\entry {logical operators}{102}
\entry {logical true}{98}
\entry {login information}{227}
\entry {long options}{197}
\entry {loop}{115}
\entry {loops, exiting}{118}
\entry {Lost In Space}{315}
\entry {\command {ls} utility}{23}
\entry {\code {lshift} built-in function}{166}
\entry {lvalue}{94}
\initial {M}
\entry {\code {make_builtin} internal function}{317}
\entry {\code {make_number} internal function}{316}
\entry {\code {make_string} internal function}{316}
\entry {mark parity}{214}
\entry {marked string extraction (internationalization)}{181}
\entry {marked strings for internationalization}{179}
\entry {Marx, Groucho}{98}
\entry {\code {match} built-in function}{149}
\entry {matching ranges of lines}{109}
\entry {matching, leftmost longest}{40, 57}
\entry {matching, the null string}{157}
\entry {\command {mawk}, source code}{309}
\entry {merging strings}{216}
\entry {message object files (\code {gettext})}{178}
\entry {metacharacters}{32}
\entry {mistakes, common}{32, 41, 50, 68, 78, 79, 92, 93, 100, 154, 199}
\entry {\code {mktime} built-in function}{161}
\entry {modifiers (in format specifiers)}{72}
\entry {\command {msgfmt} utility}{185}
\entry {multidimensional subscripts}{140}
\entry {multiple line records}{57}
\entry {multiple passes over data}{203}
\entry {multiple statements on one line}{25}
\entry {multiplication}{91}
\entry {\command {mv} utility}{78}
\initial {N}
\entry {names, use of}{133, 169, 208}
\entry {namespace issues in \command {awk}}{133, 169, 208}
\entry {negative zero}{333}
\entry {NetBSD}{8, 345}
\entry {networking, TCP/IP}{190}
\entry {new \command {awk}}{4}
\entry {new \command {awk} vs. old \command {awk}}{4}
\entry {newline}{24}
\entry {newlines, embedded in dynamic regexps}{41}
\entry {\code {next file} statement}{121, 289}
\entry {\code {next} statement}{120}
\entry {\code {next}, inside a user-defined function}{120}
\entry {\code {nextfile} statement}{121}
\entry {\code {nextfile} user-defined function}{210}
\entry {\code {nextfile}, inside a user-defined function}{121}
\entry {\code {NF} variable}{47, 127}
\entry {\code {noassign.awk} program}{221}
\entry {\code {NODE} internal type}{315}
\entry {non-interactive buffering vs. interactive}{159}
\entry {non-readable data files, skipping}{221}
\entry {NOT logical operator}{102}
\entry {\code {NR} variable}{43, 127}
\entry {null string}{52, 90, 98}
\entry {null string, as array subscript}{140}
\entry {null string, definition of}{331}
\entry {number of fields, \code {NF}}{47}
\entry {number of records, \code {NR}, \code {FNR}}{43}
\entry {numbers, hexadecimal}{85}
\entry {numbers, octal}{85}
\entry {numbers, used as subscripts}{139}
\entry {numeric character values}{214}
\entry {numeric constant}{85}
\entry {numeric output format}{70}
\entry {numeric string}{99}
\entry {numeric value}{85}
\initial {O}
\entry {obsolete features}{204}
\entry {obsolete options}{204}
\entry {octal numbers}{85}
\entry {\code {OFMT} variable}{70, 91, 124}
\entry {\code {OFS} variable}{69, 125}
\entry {old \command {awk}}{4}
\entry {old \command {awk} vs. new \command {awk}}{4}
\entry {one-liners}{20}
\entry {online documentation}{8}
\entry {OpenBSD}{8, 345}
\entry {operator precedence}{98, 105}
\entry {operators, arithmetic}{91}
\entry {operators, assignment}{94}
\entry {operators, boolean}{102}
\entry {operators, decrement}{97}
\entry {operators, increment}{97}
\entry {operators, logical}{102}
\entry {operators, regexp matching}{29}
\entry {operators, relational}{99, 100}
\entry {operators, short-circuit}{102}
\entry {operators, string}{92}
\entry {operators, string-matching}{29}
\entry {options, command-line}{197}
\entry {options, long}{197}
\entry {OR bitwise operation}{166}
\entry {\code {or} built-in function}{166}
\entry {OR logical operator}{102}
\entry {\code {ord} user-defined function}{214}
\entry {order of evaluation}{145}
\entry {order of evaluation, concatenation}{93}
\entry {\code {ORS} variable}{69, 125}
\entry {other \command {awk} implementations}{309}
\entry {output}{67}
\entry {output field separator, \code {OFS}}{69}
\entry {output format specifier, \code {OFMT}}{70}
\entry {output record separator, \code {ORS}}{69}
\entry {output redirection}{75}
\entry {output, buffering}{158, 160}
\entry {output, formatted}{70}
\entry {output, piping}{76}
\initial {P}
\entry {P1003.2 POSIX standard}{342}
\entry {\code {param_cnt} internal variable}{316}
\entry {passes, multiple}{203}
\entry {password file}{227}
\entry {path, search}{203, 281, 301, 304}
\entry {pattern, \code {BEGIN}}{110}
\entry {pattern, default}{20}
\entry {pattern, definition of}{107}
\entry {pattern, empty}{112}
\entry {pattern, \code {END}}{110}
\entry {pattern, range}{109}
\entry {pattern, regular expressions}{29}
\entry {patterns, types of}{107}
\entry {per file initialization and cleanup}{218}
\entry {PERL}{325}
\entry {Peters, Arno}{290}
\entry {Peterson, Hal}{290}
\entry {\command {pgawk} program}{191}
\entry {pipeline, input}{63}
\entry {pipes for output}{76}
\entry {piping commands into the shell}{78}
\entry {portability issues}{16, 24, 31, 46, 50, 83, 92, 96, 98, 106, 138, 149, 154, 158, 170, 173, 183, 207}
\entry {portability issues, internationalization of \command {awk} programs}{183}
\entry {portable object files (\code {gettext})}{178}
\entry {portal files}{191}
\entry {porting \command {gawk}}{313}
\entry {positional specifier, \code {printf}}{72, 182}
\entry {positional specifiers, mixing with regular formats (\code {printf})}{182}
\entry {positive zero}{333}
\entry {POSIX \command {awk}}{31, 33, 34, 36, 55, 70, 74, 91, 92, 96, 106, 118, 119, 120, 123, 149, 155, 170}
\entry {POSIX mode}{200}
\entry {\code {POSIXLY_CORRECT} environment variable}{202}
\entry {precedence}{98, 105}
\entry {precedence, regexp operators}{35}
\entry {\code {print} statement}{67}
\entry {\code {printf} statement}{70}
\entry {\code {printf} statement, syntax of}{70}
\entry {\code {printf}, format-control characters}{71}
\entry {\code {printf}, mixing positional specifiers with regular formats}{182}
\entry {\code {printf}, modifiers}{72}
\entry {\code {printf}, positional specifier}{72, 182}
\entry {printing}{67}
\entry {problem reports}{308}
\entry {procedural languages}{13}
\entry {process information}{80}
\entry {processing arguments}{222}
\entry {processing data}{329}
\entry {\code {PROCINFO} variable}{127}
\entry {profiling \command {awk} programs}{191}
\entry {profiling output file (\file {awkprof.out})}{191}
\entry {profiling, dynamic}{194}
\entry {program file}{15}
\entry {program, \command {awk}}{5}
\entry {program, definition of}{13}
\entry {program, self-contained}{15}
\entry {programming concepts, basic}{329}
\entry {programming conventions}{122, 126, 145, 169, 174, 187, 208, 209, 321, 323}
\entry {programming language, recipe for}{4}
\entry {programming, basic steps}{329}
\entry {programs, compiled}{329}
\entry {programs, documenting}{16, 208}
\entry {programs, interpreted}{329}
\entry {\command {pwcat} program}{228}
\initial {Q}
\entry {quotient}{91}
\entry {quoting rules, shell}{17}
\entry {quoting, shell}{14, 15, 17}
\initial {R}
\entry {Rakitzis, Byron}{269}
\entry {\code {rand} built-in function}{146}
\entry {random numbers, Cliff}{213}
\entry {random numbers, seed of}{147}
\entry {range pattern}{109}
\entry {Rankin, Pat}{10, 95, 290, 309}
\entry {readable data files, checking}{221}
\entry {\code {readable.awk} program}{221}
\entry {reading files}{43}
\entry {reading files, \code {getline} command}{59}
\entry {reading files, multiple line records}{57}
\entry {recipe for a programming language}{4}
\entry {record separator, \code {RS}}{43}
\entry {record terminator, \code {RT}}{45}
\entry {record, definition of}{43, 330}
\entry {records, multiple line}{57}
\entry {recursive function}{170}
\entry {redirection of input}{61}
\entry {redirection of output}{75}
\entry {reference counting}{143}
\entry {reference to array}{135}
\entry {regexp}{29}
\entry {regexp as expression}{101}
\entry {regexp comparison vs. string comparison}{101}
\entry {regexp constant}{30}
\entry {regexp constants, difference between slashes and quotes}{40}
\entry {regexp operators}{29, 32, 99}
\entry {regexp operators, GNU specific}{37}
\entry {regexp operators, precedence of}{35}
\entry {regexp, anchors}{33}
\entry {regexp, dynamic}{40}
\entry {regexp, dynamic, with embedded newlines}{41}
\entry {regexp, effect of command-line options}{38}
\entry {regular expression}{29}
\entry {regular expression metacharacters}{32}
\entry {regular expressions as field separators}{51}
\entry {regular expressions as patterns}{29}
\entry {regular expressions as record separators}{45}
\entry {regular expressions, computed}{40}
\entry {relational operators}{99, 100}
\entry {remainder}{91}
\entry {removing elements of arrays}{138}
\entry {reporting bugs}{308}
\entry {reporting problems}{308}
\entry {\code {return} statement}{173}
\entry {return value from \code {close}}{84}
\entry {\code {rewind} user-defined function}{220}
\entry {RFC 1036}{164}
\entry {RFC 822}{164}
\entry {right shift, bitwise}{166}
\entry {Ritchie, Dennis}{332}
\entry {\code {RLENGTH} variable}{128, 149}
\entry {Robbins, Arnold}{54, 63, 229, 260, 291, 308, 325}
\entry {Robbins, Bill}{63}
\entry {Robbins, Harry}{11}
\entry {Robbins, Jean}{11}
\entry {Robbins, Miriam}{11, 63, 229}
\entry {Robinson, Will}{315}
\entry {robot, the}{315}
\entry {Rommel, Kai Uwe}{10, 290, 309}
\entry {\code {round} user-defined function}{212}
\entry {rounding}{212}
\entry {\code {RS} variable}{43, 125}
\entry {\code {rshift} built-in function}{166}
\entry {\code {RSTART} variable}{128, 149}
\entry {\code {RT} variable}{45, 59, 128}
\entry {Rubin, Paul}{4, 290}
\entry {rule, definition of}{13}
\entry {running \command {awk} programs}{13}
\entry {running long programs}{15}
\entry {rvalue}{94}
\initial {S}
\entry {sample input files}{19}
\entry {scalar, definition of}{330}
\entry {scanning an array}{137}
\entry {Schreiber, Bert}{10}
\entry {Schreiber, Rita}{10}
\entry {script, definition of}{13}
\entry {scripts, executable}{15}
\entry {search path}{203, 281, 301, 304}
\entry {search path, for source files}{203, 281, 301, 304}
\entry {\command {sed} utility}{55, 274, 277, 335}
\entry {seed for random numbers}{147}
\entry {self-contained programs}{15}
\entry {\code {set_value} internal function}{317}
\entry {sex, comparisons with}{5, 8}
\entry {sex, programmer attractiveness}{188}
\entry {shell and \command {awk} interaction}{112}
\entry {shell quoting}{14, 15, 17}
\entry {shell quoting rules}{17}
\entry {shell quoting, tricks}{18}
\entry {shell varibles, using in \command {awk} programs}{112}
\entry {shell, piping commands into}{78}
\entry {shift, bitwise}{166}
\entry {short-circuit operators}{102}
\entry {side effects}{65, 93, 94, 97, 98, 102, 103, 105, 114, 135, 143}
\entry {\code {SIGHUP} signal}{195}
\entry {signals, \code {SIGHUP}}{195}
\entry {signals, \code {SIGUSR1}}{194}
\entry {\code {SIGUSR1} signal}{194}
\entry {simple stream editor}{274}
\entry {\code {sin} built-in function}{146}
\entry {single quotes, why needed}{13}
\entry {single-character fields}{52}
\entry {single-precision floating-point, definition of}{331}
\entry {skipping input files}{209}
\entry {skipping lines between markers}{110}
\entry {Skywalker, Luke}{205}
\entry {\command {sleep} utility}{262}
\entry {\command {sort} utility}{268}
\entry {source code, \command {awka}}{310}
\entry {source code, \command {gawk}}{293}
\entry {source code, \command {mawk}}{309}
\entry {source code, Unix \command {awk}}{309}
\entry {sparse arrays}{134}
\entry {Spencer, Henry}{335}
\entry {\code {split} built-in function}{150}
\entry {\code {split} utility}{249}
\entry {\code {split.awk} program}{249}
\entry {\code {sprintf} built-in function}{151}
\entry {\code {sqrt} built-in function}{146}
\entry {\code {srand} built-in function}{147}
\entry {Stallman, Richard}{8, 10, 290, 340}
\entry {standard error output}{78}
\entry {standard input}{14, 43, 78}
\entry {standard output}{78}
\entry {statement, compound}{114}
\entry {\code {stlen} internal variable}{316}
\entry {\code {stptr} internal variable}{316}
\entry {stream editor}{55, 274, 277}
\entry {stream editor, simple}{274}
\entry {\code {strftime} built-in function}{161}
\entry {string comparison vs. regexp comparison}{101}
\entry {string constants}{85}
\entry {string extraction (internationalization)}{181}
\entry {string operators}{92}
\entry {string-matching operators}{29}
\entry {\code {strtonum} built-in function}{151}
\entry {\code {sub} built-in function}{151}
\entry {\code {sub}, escape processing}{155}
\entry {\code {sub}, third argument of}{152}
\entry {subscripts in arrays}{140}
\entry {\code {SUBSEP} variable}{125, 140}
\entry {\code {substr} built-in function}{154}
\entry {subtraction}{91}
\entry {Sumner, Andrew}{310}
\entry {syntactic ambiguity: \code {/=} operator vs. \code {/=\dots {}/} regexp constant}{96}
\entry {\code {system} built-in function}{158}
\entry {\code {systime} built-in function}{161}
\initial {T}
\entry {tandem}{307}
\entry {Tcl}{209}
\entry {TCP/IP networking}{190, 191}
\entry {\code {tee} utility}{251}
\entry {\code {tee.awk} program}{251}
\entry {terminator, record}{45}
\entry {\code {testbits.awk} program}{167}
\entry {Texinfo}{7, 10, 33, 34, 207, 260, 270, 295, 313}
\entry {\code {textdomain} C library function}{178}
\entry {\code {TEXTDOMAIN} variable}{125, 179}
\entry {time of day}{160}
\entry {timestamps}{160}
\entry {timestamps, converting from dates}{162}
\entry {timestamps, formatted}{216}
\entry {\code {tmp_number} internal function}{316}
\entry {\code {tmp_string} internal function}{316}
\entry {\code {tolower} built-in function}{154}
\entry {Torvalds, Linus}{8}
\entry {\code {toupper} built-in function}{154}
\entry {\command {tr} utility}{263}
\entry {\code {translate.awk} program}{264}
\entry {Trueman, David}{4, 10, 290}
\entry {truth values}{98}
\entry {two-way I/O}{188}
\entry {type conversion}{90}
\entry {\code {type} internal variable}{316}
\entry {types of variables}{94, 99}
\initial {U}
\entry {undefined functions}{173}
\entry {undocumented features}{205}
\entry {uninitialized variables, as array subscripts}{140}
\entry {\command {uniq} utility}{253}
\entry {\code {uniq.awk} program}{253}
\entry {Unix}{345}
\entry {Unix \command {awk}, source code}{309}
\entry {unsigned integers}{331}
\entry {\code {update_ERRNO} internal function}{317}
\entry {use of comments}{16}
\entry {user information}{227}
\entry {user-defined functions}{168}
\entry {user-defined variables}{89}
\entry {uses of \command {awk}}{3, 26}
\entry {uses of \command {gawk}}{3}
\entry {using shell variables in \command {awk} programs}{112}
\entry {using this book}{5}
\entry {\code {USR1} signal}{194}
\initial {V}
\entry {values of characters as numbers}{214}
\entry {values, numeric}{330}
\entry {values, string}{330}
\entry {variable shadowing}{169}
\entry {variable typing}{99}
\entry {variable, definition of}{330}
\entry {variables, user-defined}{89}
\entry {\code {vname} internal variable}{316}
\initial {W}
\entry {\command {w} utility}{55}
\entry {Wall, Larry}{325}
\entry {warnings, automatic}{32, 80, 81, 87, 88, 153, 158, 201}
\entry {\command {wc} utility}{257}
\entry {\code {wc.awk} program}{257}
\entry {Weinberger, Peter}{4, 290}
\entry {\code {while} statement}{115}
\entry {Williams, Kent}{290}
\entry {Woods, John}{290}
\entry {word boundaries, matching}{37}
\entry {word, regexp definition of}{37}
\entry {\code {wordfreq.awk} program}{268}
\initial {X}
\entry {\code {xgettext} utility}{181}
\entry {XOR bitwise operation}{166}
\entry {\code {xor} built-in function}{166}
\initial {Z}
\entry {Zaretskii, Eli}{10}
\entry {zero, negative vs.\spacefactor =1000  positive}{333}
\entry {Zoulas, Christos}{290}
