\entry{acronym}{1}{acronym} \entry{history of awk}{1}{history of \code {awk}} \entry{Aho, Alfred}{1}{Aho, Alfred} \entry{Weinberger, Peter}{1}{Weinberger, Peter} \entry{Kernighan, Brian}{1}{Kernighan, Brian} \entry{old awk}{1}{old \code {awk}} \entry{new awk}{1}{new \code {awk}} \entry{Free Software Foundation}{1}{Free Software Foundation} \entry{Stallman, Richard}{1}{Stallman, Richard} \entry{GNU Project}{2}{GNU Project} \entry{Linux}{2}{Linux} \entry{NetBSD}{2}{NetBSD} \entry{FreeBSD}{2}{FreeBSD} \entry{Stallman, Richard}{3}{Stallman, Richard} \entry{Trueman, David}{4}{Trueman, David} \entry{Deifik, Scott}{4}{Deifik, Scott} \entry{Hankerson, Darrel}{4}{Hankerson, Darrel} \entry{Rommel, Kai Uwe}{4}{Rommel, Kai Uwe} \entry{Rankin, Pat}{4}{Rankin, Pat} \entry{Jaegermann, Michal}{4}{Jaegermann, Michal} \entry{Friedl, Jeffrey}{4}{Friedl, Jeffrey} \entry{Kernighan, Brian}{4}{Kernighan, Brian} \entry{Hughes, Phil}{4}{Hughes, Phil} \entry{Robbins, Miriam}{4}{Robbins, Miriam} \entry{uses of awk}{5}{uses of \code {awk}} \entry{book, using this}{5}{book, using this} \entry{using this book}{5}{using this book} \entry{language, awk}{5}{language, \code {awk}} \entry{program, awk}{5}{program, \code {awk}} \entry{d.c., see ``dark corner''}{6}{d.c., see ``dark corner''} \entry{dark corner}{6}{dark corner} \entry{input file, sample}{7}{input file, sample} \entry{sample input file}{7}{sample input file} \entry{BBS-list file}{7}{\file {BBS-list} file} \entry{inventory-shipped file}{7}{\file {inventory-shipped} file} \entry{script, definition of}{9}{script, definition of} \entry{rule, definition of}{9}{rule, definition of} \entry{program, definition of}{9}{program, definition of} \entry{basic function of awk}{9}{basic function of \code {awk}} \entry{data-driven languages}{9}{data-driven languages} \entry{procedural languages}{9}{procedural languages} \entry{language, data-driven}{9}{language, data-driven} \entry{language, procedural}{9}{language, procedural} \entry{program, definition of}{9}{program, definition of} \entry{rule, definition of}{9}{rule, definition of} \entry{old awk vs. new awk}{9}{old \code {awk} vs. new \code {awk}} \entry{new awk vs. old awk}{9}{new \code {awk} vs. old \code {awk}} \entry{command line formats}{10}{command line formats} \entry{running awk programs}{10}{running \code {awk} programs} \entry{single quotes, why needed}{10}{single quotes, why needed} \entry{egrep}{10}{\code {egrep}} \entry{standard input}{11}{standard input} \entry{input, standard}{11}{input, standard} \entry{quoting, shell}{11}{quoting, shell} \entry{shell quoting}{11}{shell quoting} \entry{running long programs}{11}{running long programs} \entry{-f option}{11}{\code {-f} option} \entry{program file}{11}{program file} \entry{file, awk program}{11}{file, \code {awk} program} \entry{quoting, shell}{12}{quoting, shell} \entry{shell quoting}{12}{shell quoting} \entry{executable scripts}{12}{executable scripts} \entry{scripts, executable}{12}{scripts, executable} \entry{self contained programs}{12}{self contained programs} \entry{program, self contained}{12}{program, self contained} \entry{#! (executable scripts)}{12}{\code {#!} (executable scripts)} \entry{shell scripts}{13}{shell scripts} \entry{scripts, shell}{13}{scripts, shell} \entry{# (comment)}{13}{\code {#} (comment)} \entry{comments}{13}{comments} \entry{use of comments}{13}{use of comments} \entry{documenting awk programs}{13}{documenting \code {awk} programs} \entry{programs, documenting}{13}{programs, documenting} \entry{action, default}{14}{action, default} \entry{pattern, default}{14}{pattern, default} \entry{default action}{14}{default action} \entry{default pattern}{14}{default pattern} \entry{empty action}{14}{empty action} \entry{action, empty}{14}{action, empty} \entry{how awk works}{14}{how \code {awk} works} \entry{csh, backslash continuation}{15}{\code {csh}, backslash continuation} \entry{backslash continuation in csh}{15}{backslash continuation in \code {csh}} \entry{automatic initialization}{16}{automatic initialization} \entry{initialization, automatic}{16}{initialization, automatic} \entry{line break}{16}{line break} \entry{newline}{16}{newline} \entry{backslash continuation}{16}{backslash continuation} \entry{continuation of lines}{16}{continuation of lines} \entry{line continuation}{16}{line continuation} \entry{portability issues}{17}{portability issues} \entry{csh, backslash continuation}{17}{\code {csh}, backslash continuation} \entry{backslash continuation in csh}{17}{backslash continuation in \code {csh}} \entry{backslash continuation and comments}{17}{backslash continuation and comments} \entry{comments and backslash continuation}{17}{comments and backslash continuation} \entry{multiple statements on one line}{18}{multiple statements on one line} \entry{when to use awk}{18}{when to use \code {awk}} \entry{applications of awk}{18}{applications of \code {awk}} \entry{one-liners}{21}{one-liners} \entry{pattern, regular expressions}{23}{pattern, regular expressions} \entry{regexp}{23}{regexp} \entry{regular expression}{23}{regular expression} \entry{regular expressions as patterns}{23}{regular expressions as patterns} \entry{regexp matching operators}{23}{regexp matching operators} \entry{string-matching operators}{23}{string-matching operators} \entry{operators, string-matching}{23}{operators, string-matching} \entry{operators, regexp matching}{23}{operators, regexp matching} \entry{regexp match/non-match operators}{23}{regexp match/non-match operators} \entry{{\tt\char '176} operator}{23}{\code {{\tt\char '176}} operator} \entry{!{\tt\char '176} operator}{23}{\code {!{\tt\char '176}} operator} \entry{regexp constant}{24}{regexp constant} \entry{escape sequence notation}{24}{escape sequence notation} \entry{awk language, V.4 version}{24}{\code {awk} language, V.4 version} \entry{awk language, V.4 version}{25}{\code {awk} language, V.4 version} \entry{awk language, V.4 version}{25}{\code {awk} language, V.4 version} \entry{awk language, POSIX version}{25}{\code {awk} language, POSIX version} \entry{POSIX awk}{25}{POSIX \code {awk}} \entry{portability issues}{26}{portability issues} \entry{dark corner}{26}{dark corner} \entry{metacharacters}{26}{metacharacters} \entry{regular expression metacharacters}{26}{regular expression metacharacters} \entry{regexp operators}{26}{regexp operators} \entry{anchors in regexps}{27}{anchors in regexps} \entry{regexp, anchors}{27}{regexp, anchors} \entry{awk language, POSIX version}{27}{\code {awk} language, POSIX version} \entry{POSIX awk}{27}{POSIX \code {awk}} \entry{character list}{27}{character list} \entry{egrep}{28}{\code {egrep}} \entry{character classes}{28}{character classes} \entry{awk language, POSIX version}{28}{\code {awk} language, POSIX version} \entry{POSIX awk}{28}{POSIX \code {awk}} \entry{collating elements}{29}{collating elements} \entry{collating symbols}{29}{collating symbols} \entry{equivalence classes}{29}{equivalence classes} \entry{complemented character list}{29}{complemented character list} \entry{character list, complemented}{29}{character list, complemented} \entry{awk language, POSIX version}{31}{\code {awk} language, POSIX version} \entry{POSIX awk}{31}{POSIX \code {awk}} \entry{interval expressions}{31}{interval expressions} \entry{precedence, regexp operators}{31}{precedence, regexp operators} \entry{regexp operators, precedence of}{31}{regexp operators, precedence of} \entry{regexp operators, GNU specific}{31}{regexp operators, GNU specific} \entry{word, regexp definition of}{31}{word, regexp definition of} \entry{{\tt\indexbackslash }w regexp operator}{32}{\code {{\tt\rawbackslashxx }w} regexp operator} \entry{{\tt\indexbackslash }W regexp operator}{32}{\code {{\tt\rawbackslashxx }W} regexp operator} \entry{{\tt\indexbackslash }{\tt\less} regexp operator}{32}{\code {{\tt\rawbackslashxx }{\tt\less}} regexp operator} \entry{{\tt\indexbackslash }{\tt\gtr} regexp operator}{32}{\code {{\tt\rawbackslashxx }{\tt\gtr}} regexp operator} \entry{{\tt\indexbackslash }y regexp operator}{32}{\code {{\tt\rawbackslashxx }y} regexp operator} \entry{word boundaries, matching}{32}{word boundaries, matching} \entry{{\tt\indexbackslash }B regexp operator}{32}{\code {{\tt\rawbackslashxx }B} regexp operator} \entry{buffer matching operators}{32}{buffer matching operators} \entry{{\tt\indexbackslash }` regexp operator}{32}{\code {{\tt\rawbackslashxx }`} regexp operator} \entry{{\tt\indexbackslash }' regexp operator}{32}{\code {{\tt\rawbackslashxx }'} regexp operator} \entry{regexp, effect of command line options}{32}{regexp, effect of command line options} \entry{case sensitivity}{33}{case sensitivity} \entry{ignoring case}{33}{ignoring case} \entry{differences between gawk and awk}{33}{differences between \code {gawk} and \code {awk}} \entry{{\tt\char '176} operator}{33}{\code {{\tt\char '176}} operator} \entry{!{\tt\char '176} operator}{33}{\code {!{\tt\char '176}} operator} \entry{IGNORECASE}{33}{\code {IGNORECASE}} \entry{ISO 8859-1}{34}{ISO 8859-1} \entry{ISO Latin-1}{34}{ISO Latin-1} \entry{leftmost longest match}{34}{leftmost longest match} \entry{matching, leftmost longest}{34}{matching, leftmost longest} \entry{computed regular expressions}{35}{computed regular expressions} \entry{regular expressions, computed}{35}{regular expressions, computed} \entry{dynamic regular expressions}{35}{dynamic regular expressions} \entry{regexp, dynamic}{35}{regexp, dynamic} \entry{{\tt\char '176} operator}{35}{\code {{\tt\char '176}} operator} \entry{!{\tt\char '176} operator}{35}{\code {!{\tt\char '176}} operator} \entry{regexp constants, difference between slashes and quotes}{35}{regexp constants, difference between slashes and quotes} \entry{common mistakes}{35}{common mistakes} \entry{mistakes, common}{35}{mistakes, common} \entry{errors, common}{35}{errors, common} \entry{reading files}{37}{reading files} \entry{input}{37}{input} \entry{standard input}{37}{standard input} \entry{FILENAME}{37}{\code {FILENAME}} \entry{record separator, RS}{37}{record separator, \code {RS}} \entry{changing the record separator}{37}{changing the record separator} \entry{record, definition of}{37}{record, definition of} \entry{RS}{37}{\code {RS}} \entry{dark corner}{39}{dark corner} \entry{empty string}{39}{empty string} \entry{RT}{39}{\code {RT}} \entry{record terminator, RT}{39}{record terminator, \code {RT}} \entry{terminator, record}{39}{terminator, record} \entry{differences between gawk and awk}{39}{differences between \code {gawk} and \code {awk}} \entry{regular expressions as record separators}{39}{regular expressions as record separators} \entry{differences between gawk and awk}{39}{differences between \code {gawk} and \code {awk}} \entry{number of records, NR, FNR}{40}{number of records, \code {NR}, \code {FNR}} \entry{NR}{40}{\code {NR}} \entry{FNR}{40}{\code {FNR}} \entry{examining fields}{40}{examining fields} \entry{fields}{40}{fields} \entry{accessing fields}{40}{accessing fields} \entry{$ (field operator)}{40}{\code {$} (field operator)} \entry{field operator $}{40}{field operator \code {$}} \entry{NF}{40}{\code {NF}} \entry{number of fields, NF}{40}{number of fields, \code {NF}} \entry{field, changing contents of}{42}{field, changing contents of} \entry{changing contents of a field}{42}{changing contents of a field} \entry{assignment to fields}{42}{assignment to fields} \entry{FS}{44}{\code {FS}} \entry{fields, separating}{44}{fields, separating} \entry{field separator, FS}{44}{field separator, \code {FS}} \entry{common mistakes}{44}{common mistakes} \entry{mistakes, common}{44}{mistakes, common} \entry{errors, common}{44}{errors, common} \entry{field separator, choice of}{45}{field separator, choice of} \entry{regular expressions as field separators}{45}{regular expressions as field separators} \entry{null string}{46}{null string} \entry{empty string}{46}{empty string} \entry{differences between gawk and awk}{46}{differences between \code {gawk} and \code {awk}} \entry{single character fields}{46}{single character fields} \entry{dark corner}{47}{dark corner} \entry{-F option}{47}{\code {-F} option} \entry{field separator, on command line}{47}{field separator, on command line} \entry{command line, setting FS on}{47}{command line, setting \code {FS} on} \entry{historical features}{47}{historical features} \entry{awk language, POSIX version}{48}{\code {awk} language, POSIX version} \entry{POSIX awk}{48}{POSIX \code {awk}} \entry{dark corner}{48}{dark corner} \entry{sed utility}{48}{\code {sed} utility} \entry{stream editor}{48}{stream editor} \entry{multiple line records}{51}{multiple line records} \entry{input, multiple line records}{51}{input, multiple line records} \entry{reading files, multiple line records}{51}{reading files, multiple line records} \entry{records, multiple line}{51}{records, multiple line} \entry{leftmost longest match}{51}{leftmost longest match} \entry{matching, leftmost longest}{51}{matching, leftmost longest} \entry{dark corner}{51}{dark corner} \entry{RT}{53}{\code {RT}} \entry{getline}{53}{\code {getline}} \entry{input, explicit}{53}{input, explicit} \entry{explicit input}{53}{explicit input} \entry{input, getline command}{53}{input, \code {getline} command} \entry{reading files, getline command}{53}{reading files, \code {getline} command} \entry{ERRNO}{54}{\code {ERRNO}} \entry{differences between gawk and awk}{54}{differences between \code {gawk} and \code {awk}} \entry{getline, return values}{54}{\code {getline}, return values} \entry{dark corner}{55}{dark corner} \entry{input redirection}{56}{input redirection} \entry{redirection of input}{56}{redirection of input} \entry{input pipeline}{57}{input pipeline} \entry{pipeline, input}{57}{pipeline, input} \entry{differences between gawk and awk}{59}{differences between \code {gawk} and \code {awk}} \entry{limitations}{59}{limitations} \entry{implementation limits}{59}{implementation limits} \entry{FILENAME}{59}{\code {FILENAME}} \entry{dark corner}{59}{dark corner} \entry{getline, setting FILENAME}{59}{\code {getline}, setting \code {FILENAME}} \entry{FILENAME, being set by getline}{59}{\code {FILENAME}, being set by \code {getline}} \entry{printing}{61}{printing} \entry{output}{61}{output} \entry{print statement}{61}{\code {print} statement} \entry{common mistakes}{62}{common mistakes} \entry{mistakes, common}{62}{mistakes, common} \entry{errors, common}{62}{errors, common} \entry{line continuation}{63}{line continuation} \entry{output field separator, OFS}{63}{output field separator, \code {OFS}} \entry{output record separator, ORS}{63}{output record separator, \code {ORS}} \entry{OFS}{63}{\code {OFS}} \entry{ORS}{63}{\code {ORS}} \entry{OFMT}{64}{\code {OFMT}} \entry{numeric output format}{64}{numeric output format} \entry{format, numeric output}{64}{format, numeric output} \entry{output format specifier, OFMT}{64}{output format specifier, \code {OFMT}} \entry{dark corner}{64}{dark corner} \entry{awk language, POSIX version}{64}{\code {awk} language, POSIX version} \entry{POSIX awk}{64}{POSIX \code {awk}} \entry{formatted output}{64}{formatted output} \entry{output, formatted}{64}{output, formatted} \entry{printf statement, syntax of}{65}{\code {printf} statement, syntax of} \entry{format string}{65}{format string} \entry{printf, format-control characters}{65}{\code {printf}, format-control characters} \entry{format specifier}{65}{format specifier} \entry{dark corner}{66}{dark corner} \entry{printf, modifiers}{66}{\code {printf}, modifiers} \entry{modifiers (in format specifiers)}{66}{modifiers (in format specifiers)} \entry{dark corner}{67}{dark corner} \entry{awk language, POSIX version}{68}{\code {awk} language, POSIX version} \entry{POSIX awk}{68}{POSIX \code {awk}} \entry{output redirection}{70}{output redirection} \entry{redirection of output}{70}{redirection of output} \entry{pipes for output}{71}{pipes for output} \entry{output, piping}{71}{output, piping} \entry{differences between gawk and awk}{71}{differences between \code {gawk} and \code {awk}} \entry{limitations}{71}{limitations} \entry{implementation limits}{71}{implementation limits} \entry{standard input}{72}{standard input} \entry{standard output}{72}{standard output} \entry{standard error output}{72}{standard error output} \entry{file descriptors}{72}{file descriptors} \entry{differences between gawk and awk}{72}{differences between \code {gawk} and \code {awk}} \entry{/dev/stdin}{72}{\file {/dev/stdin}} \entry{/dev/stdout}{72}{\file {/dev/stdout}} \entry{/dev/stderr}{72}{\file {/dev/stderr}} \entry{/dev/fd}{72}{\file {/dev/fd}} \entry{process information}{73}{process information} \entry{/dev/pid}{73}{\file {/dev/pid}} \entry{/dev/pgrpid}{73}{\file {/dev/pgrpid}} \entry{/dev/ppid}{73}{\file {/dev/ppid}} \entry{/dev/user}{73}{\file {/dev/user}} \entry{closing input files and pipes}{74}{closing input files and pipes} \entry{closing output files and pipes}{74}{closing output files and pipes} \entry{close}{74}{\code {close}} \entry{ERRNO}{75}{\code {ERRNO}} \entry{differences between gawk and awk}{75}{differences between \code {gawk} and \code {awk}} \entry{differences between gawk and awk}{75}{differences between \code {gawk} and \code {awk}} \entry{portability issues}{75}{portability issues} \entry{expression}{77}{expression} \entry{constants, types of}{77}{constants, types of} \entry{string constants}{77}{string constants} \entry{numeric constant}{77}{numeric constant} \entry{numeric value}{77}{numeric value} \entry{differences between gawk and awk}{77}{differences between \code {gawk} and \code {awk}} \entry{{\tt\char '176} operator}{77}{\code {{\tt\char '176}} operator} \entry{!{\tt\char '176} operator}{77}{\code {!{\tt\char '176}} operator} \entry{dark corner}{78}{dark corner} \entry{differences between gawk and awk}{78}{differences between \code {gawk} and \code {awk}} \entry{dark corner}{78}{dark corner} \entry{variables, user-defined}{79}{variables, user-defined} \entry{user-defined variables}{79}{user-defined variables} \entry{dark corner}{80}{dark corner} \entry{conversion of strings and numbers}{81}{conversion of strings and numbers} \entry{null string}{81}{null string} \entry{empty string}{81}{empty string} \entry{type conversion}{81}{type conversion} \entry{CONVFMT}{81}{\code {CONVFMT}} \entry{dark corner}{81}{dark corner} \entry{awk language, POSIX version}{82}{\code {awk} language, POSIX version} \entry{POSIX awk}{82}{POSIX \code {awk}} \entry{OFMT}{82}{\code {OFMT}} \entry{arithmetic operators}{82}{arithmetic operators} \entry{operators, arithmetic}{82}{operators, arithmetic} \entry{addition}{82}{addition} \entry{subtraction}{82}{subtraction} \entry{multiplication}{82}{multiplication} \entry{division}{82}{division} \entry{remainder}{82}{remainder} \entry{quotient}{82}{quotient} \entry{exponentiation}{82}{exponentiation} \entry{awk language, POSIX version}{82}{\code {awk} language, POSIX version} \entry{POSIX awk}{82}{POSIX \code {awk}} \entry{differences between gawk and awk}{82}{differences between \code {gawk} and \code {awk}} \entry{Kernighan, Brian}{83}{Kernighan, Brian} \entry{string operators}{83}{string operators} \entry{operators, string}{83}{operators, string} \entry{concatenation}{83}{concatenation} \entry{assignment operators}{84}{assignment operators} \entry{operators, assignment}{84}{operators, assignment} \entry{expression, assignment}{84}{expression, assignment} \entry{side effect}{84}{side effect} \entry{lvalue}{84}{lvalue} \entry{rvalue}{84}{rvalue} \entry{types of variables}{84}{types of variables} \entry{Rankin, Pat}{85}{Rankin, Pat} \entry{awk language, POSIX version}{86}{\code {awk} language, POSIX version} \entry{POSIX awk}{86}{POSIX \code {awk}} \entry{increment operators}{86}{increment operators} \entry{operators, increment}{86}{operators, increment} \entry{decrement operators}{87}{decrement operators} \entry{operators, decrement}{87}{operators, decrement} \entry{truth values}{87}{truth values} \entry{logical true}{87}{logical true} \entry{logical false}{87}{logical false} \entry{null string}{87}{null string} \entry{empty string}{87}{empty string} \entry{dark corner}{88}{dark corner} \entry{comparison expressions}{88}{comparison expressions} \entry{expression, comparison}{88}{expression, comparison} \entry{expression, matching}{88}{expression, matching} \entry{relational operators}{88}{relational operators} \entry{operators, relational}{88}{operators, relational} \entry{regexp match/non-match operators}{88}{regexp match/non-match operators} \entry{variable typing}{88}{variable typing} \entry{types of variables}{88}{types of variables} \entry{numeric string}{88}{numeric string} \entry{relational operators}{89}{relational operators} \entry{operators, relational}{89}{operators, relational} \entry{{\tt\less} operator}{89}{\code {{\tt\less}} operator} \entry{{\tt\less}= operator}{89}{\code {{\tt\less}=} operator} \entry{{\tt\gtr} operator}{89}{\code {{\tt\gtr}} operator} \entry{{\tt\gtr}= operator}{89}{\code {{\tt\gtr}=} operator} \entry{== operator}{89}{\code {==} operator} \entry{!= operator}{89}{\code {!=} operator} \entry{{\tt\char '176} operator}{89}{\code {{\tt\char '176}} operator} \entry{!{\tt\char '176} operator}{89}{\code {!{\tt\char '176}} operator} \entry{in operator}{89}{\code {in} operator} \entry{common mistakes}{89}{common mistakes} \entry{mistakes, common}{89}{mistakes, common} \entry{errors, common}{89}{errors, common} \entry{comparisons, string vs. regexp}{90}{comparisons, string vs. regexp} \entry{string comparison vs. regexp comparison}{90}{string comparison vs. regexp comparison} \entry{regexp comparison vs. string comparison}{90}{regexp comparison vs. string comparison} \entry{regexp as expression}{90}{regexp as expression} \entry{expression, boolean}{91}{expression, boolean} \entry{boolean expressions}{91}{boolean expressions} \entry{operators, boolean}{91}{operators, boolean} \entry{boolean operators}{91}{boolean operators} \entry{logical operations}{91}{logical operations} \entry{operations, logical}{91}{operations, logical} \entry{short-circuit operators}{91}{short-circuit operators} \entry{operators, short-circuit}{91}{operators, short-circuit} \entry{and operator}{91}{and operator} \entry{or operator}{91}{or operator} \entry{not operator}{91}{not operator} \entry{&& operator}{91}{\code {&&} operator} \entry{{\tt\char '174}{\tt\char '174} operator}{91}{\code {{\tt\char '174}{\tt\char '174}} operator} \entry{! operator}{91}{\code {!} operator} \entry{line continuation}{92}{line continuation} \entry{conditional expression}{92}{conditional expression} \entry{expression, conditional}{92}{expression, conditional} \entry{differences between gawk and awk}{93}{differences between \code {gawk} and \code {awk}} \entry{line continuation}{93}{line continuation} \entry{function call}{93}{function call} \entry{calling a function}{93}{calling a function} \entry{arguments in function call}{93}{arguments in function call} \entry{precedence}{94}{precedence} \entry{operator precedence}{94}{operator precedence} \entry{awk language, POSIX version}{95}{\code {awk} language, POSIX version} \entry{POSIX awk}{95}{POSIX \code {awk}} \entry{awk language, POSIX version}{95}{\code {awk} language, POSIX version} \entry{POSIX awk}{95}{POSIX \code {awk}} \entry{pattern, definition of}{97}{pattern, definition of} \entry{patterns, types of}{97}{patterns, types of} \entry{range pattern}{99}{range pattern} \entry{pattern, range}{99}{pattern, range} \entry{matching ranges of lines}{99}{matching ranges of lines} \entry{skipping lines between markers}{100}{skipping lines between markers} \entry{BEGIN special pattern}{100}{\code {BEGIN} special pattern} \entry{pattern, BEGIN}{100}{pattern, \code {BEGIN}} \entry{END special pattern}{100}{\code {END} special pattern} \entry{pattern, END}{100}{pattern, \code {END}} \entry{dark corner}{101}{dark corner} \entry{I/O from BEGIN and END}{102}{I/O from \code {BEGIN} and \code {END}} \entry{differences between gawk and awk}{102}{differences between \code {gawk} and \code {awk}} \entry{empty pattern}{102}{empty pattern} \entry{pattern, empty}{102}{pattern, empty} \entry{action, definition of}{102}{action, definition of} \entry{curly braces}{102}{curly braces} \entry{action, curly braces}{102}{action, curly braces} \entry{action, separating statements}{102}{action, separating statements} \entry{control statement}{105}{control statement} \entry{compound statement}{105}{compound statement} \entry{statement, compound}{105}{statement, compound} \entry{if-else statement}{105}{\code {if}-\code {else} statement} \entry{while statement}{106}{\code {while} statement} \entry{loop}{106}{loop} \entry{body of a loop}{106}{body of a loop} \entry{for statement}{107}{\code {for} statement} \entry{break statement}{109}{\code {break} statement} \entry{loops, exiting}{109}{loops, exiting} \entry{break, outside of loops}{109}{\code {break}, outside of loops} \entry{historical features}{109}{historical features} \entry{awk language, POSIX version}{109}{\code {awk} language, POSIX version} \entry{POSIX awk}{109}{POSIX \code {awk}} \entry{dark corner}{109}{dark corner} \entry{continue statement}{110}{\code {continue} statement} \entry{continue, outside of loops}{110}{\code {continue}, outside of loops} \entry{historical features}{110}{historical features} \entry{awk language, POSIX version}{110}{\code {awk} language, POSIX version} \entry{POSIX awk}{110}{POSIX \code {awk}} \entry{dark corner}{110}{dark corner} \entry{next statement}{111}{\code {next} statement} \entry{awk language, POSIX version}{111}{\code {awk} language, POSIX version} \entry{POSIX awk}{111}{POSIX \code {awk}} \entry{next, inside a user-defined function}{111}{\code {next}, inside a user-defined function} \entry{nextfile statement}{112}{\code {nextfile} statement} \entry{differences between gawk and awk}{112}{differences between \code {gawk} and \code {awk}} \entry{next file statement}{112}{\code {next file} statement} \entry{exit statement}{112}{\code {exit} statement} \entry{dark corner}{113}{dark corner} \entry{built-in variables}{115}{built-in variables} \entry{built-in variables, user modifiable}{115}{built-in variables, user modifiable} \entry{CONVFMT}{115}{\code {CONVFMT}} \entry{awk language, POSIX version}{115}{\code {awk} language, POSIX version} \entry{POSIX awk}{115}{POSIX \code {awk}} \entry{FIELDWIDTHS}{115}{\code {FIELDWIDTHS}} \entry{FS}{115}{\code {FS}} \entry{IGNORECASE}{116}{\code {IGNORECASE}} \entry{OFMT}{116}{\code {OFMT}} \entry{OFS}{116}{\code {OFS}} \entry{ORS}{116}{\code {ORS}} \entry{RS}{116}{\code {RS}} \entry{SUBSEP}{117}{\code {SUBSEP}} \entry{built-in variables, convey information}{117}{built-in variables, convey information} \entry{ARGC}{117}{\code {ARGC}} \entry{ARGV}{117}{\code {ARGV}} \entry{ARGIND}{117}{\code {ARGIND}} \entry{ENVIRON}{118}{\code {ENVIRON}} \entry{ERRNO}{118}{\code {ERRNO}} \entry{dark corner}{118}{dark corner} \entry{FILENAME}{118}{\code {FILENAME}} \entry{FNR}{118}{\code {FNR}} \entry{NF}{118}{\code {NF}} \entry{NR}{119}{\code {NR}} \entry{RLENGTH}{119}{\code {RLENGTH}} \entry{RSTART}{119}{\code {RSTART}} \entry{RT}{119}{\code {RT}} \entry{dark corner}{119}{dark corner} \entry{differences between gawk and awk}{121}{differences between \code {gawk} and \code {awk}} \entry{arrays}{123}{arrays} \entry{arrays, definition of}{123}{arrays, definition of} \entry{associative arrays}{123}{associative arrays} \entry{arrays, associative}{123}{arrays, associative} \entry{sparse arrays}{124}{sparse arrays} \entry{arrays, sparse}{124}{arrays, sparse} \entry{Array subscripts and IGNORECASE}{124}{Array subscripts and \code {IGNORECASE}} \entry{IGNORECASE and array subscripts}{124}{\code {IGNORECASE} and array subscripts} \entry{IGNORECASE}{124}{\code {IGNORECASE}} \entry{array reference}{124}{array reference} \entry{element of array}{124}{element of array} \entry{reference to array}{124}{reference to array} \entry{arrays, presence of elements}{125}{arrays, presence of elements} \entry{arrays, the in operator}{125}{arrays, the \code {in} operator} \entry{array assignment}{125}{array assignment} \entry{element assignment}{125}{element assignment} \entry{for (x in ...{})}{127}{\code {for (x in \dots {})}} \entry{arrays, special for statement}{127}{arrays, special \code {for} statement} \entry{scanning an array}{127}{scanning an array} \entry{delete statement}{128}{\code {delete} statement} \entry{deleting elements of arrays}{128}{deleting elements of arrays} \entry{removing elements of arrays}{128}{removing elements of arrays} \entry{arrays, deleting an element}{128}{arrays, deleting an element} \entry{arrays, deleting entire contents}{128}{arrays, deleting entire contents} \entry{deleting entire arrays}{128}{deleting entire arrays} \entry{differences between gawk and awk}{128}{differences between \code {gawk} and \code {awk}} \entry{portability issues}{128}{portability issues} \entry{Brennan, Michael}{128}{Brennan, Michael} \entry{conversions, during subscripting}{129}{conversions, during subscripting} \entry{numbers, used as subscripts}{129}{numbers, used as subscripts} \entry{CONVFMT}{129}{\code {CONVFMT}} \entry{uninitialized variables, as array subscripts}{129}{uninitialized variables, as array subscripts} \entry{array subscripts, uninitialized variables}{129}{array subscripts, uninitialized variables} \entry{null string, as array subscript}{130}{null string, as array subscript} \entry{dark corner}{130}{dark corner} \entry{subscripts in arrays}{130}{subscripts in arrays} \entry{arrays, multi-dimensional subscripts}{130}{arrays, multi-dimensional subscripts} \entry{multi-dimensional subscripts}{130}{multi-dimensional subscripts} \entry{SUBSEP}{130}{\code {SUBSEP}} \entry{built-in functions}{133}{built-in functions} \entry{differences between gawk and awk}{133}{differences between \code {gawk} and \code {awk}} \entry{evaluation, order of}{133}{evaluation, order of} \entry{order of evaluation}{133}{order of evaluation} \entry{int}{134}{\code {int}} \entry{sqrt}{134}{\code {sqrt}} \entry{exp}{134}{\code {exp}} \entry{log}{134}{\code {log}} \entry{sin}{134}{\code {sin}} \entry{cos}{134}{\code {cos}} \entry{atan2}{134}{\code {atan2}} \entry{rand}{134}{\code {rand}} \entry{seed for random numbers}{135}{seed for random numbers} \entry{random numbers, seed of}{135}{random numbers, seed of} \entry{srand}{135}{\code {srand}} \entry{index}{135}{\code {index}} \entry{length}{136}{\code {length}} \entry{historical features}{136}{historical features} \entry{portability issues}{136}{portability issues} \entry{awk language, POSIX version}{136}{\code {awk} language, POSIX version} \entry{POSIX awk}{136}{POSIX \code {awk}} \entry{match}{136}{\code {match}} \entry{RSTART}{136}{\code {RSTART}} \entry{RLENGTH}{136}{\code {RLENGTH}} \entry{split}{137}{\code {split}} \entry{differences between gawk and awk}{137}{differences between \code {gawk} and \code {awk}} \entry{dark corner}{137}{dark corner} \entry{sprintf}{138}{\code {sprintf}} \entry{sub}{138}{\code {sub}} \entry{sub, third argument of}{139}{\code {sub}, third argument of} \entry{gsub, third argument of}{139}{\code {gsub}, third argument of} \entry{gsub}{139}{\code {gsub}} \entry{gensub}{139}{\code {gensub}} \entry{differences between gawk and awk}{140}{differences between \code {gawk} and \code {awk}} \entry{substr}{140}{\code {substr}} \entry{case conversion}{141}{case conversion} \entry{conversion of case}{141}{conversion of case} \entry{tolower}{141}{\code {tolower}} \entry{toupper}{141}{\code {toupper}} \entry{escape processing, sub et. al.}{141}{escape processing, \code {sub} et. al.} \entry{awk language, POSIX version}{142}{\code {awk} language, POSIX version} \entry{POSIX awk}{142}{POSIX \code {awk}} \entry{close}{144}{\code {close}} \entry{fflush}{144}{\code {fflush}} \entry{portability issues}{144}{portability issues} \entry{flushing buffers}{144}{flushing buffers} \entry{buffers, flushing}{144}{buffers, flushing} \entry{buffering output}{144}{buffering output} \entry{output, buffering}{144}{output, buffering} \entry{system}{144}{\code {system}} \entry{interaction, awk and other programs}{144}{interaction, \code {awk} and other programs} \entry{buffering, interactive vs. non-interactive}{145}{buffering, interactive vs. non-interactive} \entry{buffering, non-interactive vs. interactive}{145}{buffering, non-interactive vs. interactive} \entry{interactive buffering vs. non-interactive}{145}{interactive buffering vs. non-interactive} \entry{non-interactive buffering vs. interactive}{145}{non-interactive buffering vs. interactive} \entry{flushing buffers}{146}{flushing buffers} \entry{buffers, flushing}{146}{buffers, flushing} \entry{buffering output}{146}{buffering output} \entry{output, buffering}{146}{output, buffering} \entry{timestamps}{146}{timestamps} \entry{time of day}{146}{time of day} \entry{systime}{147}{\code {systime}} \entry{strftime}{147}{\code {strftime}} \entry{locale, definition of}{148}{locale, definition of} \entry{ISO 8601}{149}{ISO 8601} \entry{RFC-822}{150}{RFC-822} \entry{RFC-1036}{150}{RFC-1036} \entry{user-defined functions}{151}{user-defined functions} \entry{functions, user-defined}{151}{functions, user-defined} \entry{defining functions}{151}{defining functions} \entry{function definition}{151}{function definition} \entry{names, use of}{151}{names, use of} \entry{namespaces}{151}{namespaces} \entry{variable shadowing}{152}{variable shadowing} \entry{recursive function}{152}{recursive function} \entry{function, recursive}{152}{function, recursive} \entry{awk language, POSIX version}{152}{\code {awk} language, POSIX version} \entry{POSIX awk}{152}{POSIX \code {awk}} \entry{portability issues}{152}{portability issues} \entry{call by value}{154}{call by value} \entry{call by reference}{154}{call by reference} \entry{calling a function}{154}{calling a function} \entry{function call}{154}{function call} \entry{call by value}{154}{call by value} \entry{call by reference}{155}{call by reference} \entry{undefined functions}{155}{undefined functions} \entry{functions, undefined}{155}{functions, undefined} \entry{return statement}{156}{\code {return} statement} \entry{command line}{159}{command line} \entry{invocation of gawk}{159}{invocation of \code {gawk}} \entry{arguments, command line}{159}{arguments, command line} \entry{options, command line}{159}{options, command line} \entry{long options}{159}{long options} \entry{options, long}{159}{options, long} \entry{empty program}{159}{empty program} \entry{dark corner}{159}{dark corner} \entry{-F option}{159}{\code {-F} option} \entry{--field-separator option}{159}{\code {--field-separator} option} \entry{-f option}{159}{\code {-f} option} \entry{--file option}{159}{\code {--file} option} \entry{-v option}{159}{\code {-v} option} \entry{--assign option}{159}{\code {--assign} option} \entry{-W option}{160}{\code {-W} option} \entry{--compat option}{160}{\code {--compat} option} \entry{--traditional option}{160}{\code {--traditional} option} \entry{compatibility mode}{160}{compatibility mode} \entry{--copyleft option}{160}{\code {--copyleft} option} \entry{--copyright option}{160}{\code {--copyright} option} \entry{--help option}{161}{\code {--help} option} \entry{--usage option}{161}{\code {--usage} option} \entry{--lint option}{161}{\code {--lint} option} \entry{--lint-old option}{161}{\code {--lint-old} option} \entry{--posix option}{161}{\code {--posix} option} \entry{POSIX mode}{161}{POSIX mode} \entry{--source option}{162}{\code {--source} option} \entry{--version option}{162}{\code {--version} option} \entry{POSIXLY{\_}CORRECT environment variable}{162}{\code {POSIXLY{\_}CORRECT} environment variable} \entry{environment variable, POSIXLY{\_}CORRECT}{162}{environment variable, \code {POSIXLY{\_}CORRECT}} \entry{ARGIND}{163}{\code {ARGIND}} \entry{ARGV}{163}{\code {ARGV}} \entry{dark corner}{163}{dark corner} \entry{multiple passes over data}{164}{multiple passes over data} \entry{passes, multiple}{164}{passes, multiple} \entry{AWKPATH environment variable}{164}{\code {AWKPATH} environment variable} \entry{environment variable, AWKPATH}{164}{environment variable, \code {AWKPATH}} \entry{search path}{164}{search path} \entry{directory search}{164}{directory search} \entry{path, search}{164}{path, search} \entry{differences between gawk and awk}{164}{differences between \code {gawk} and \code {awk}} \entry{search path, for source files}{164}{search path, for source files} \entry{deprecated options}{165}{deprecated options} \entry{obsolete options}{165}{obsolete options} \entry{deprecated features}{165}{deprecated features} \entry{obsolete features}{165}{obsolete features} \entry{undocumented features}{165}{undocumented features} \entry{bugs, known in gawk}{165}{bugs, known in \code {gawk}} \entry{known bugs}{165}{known bugs} \entry{portability issues}{167}{portability issues} \entry{skipping input files}{168}{skipping input files} \entry{input files, skipping}{168}{input files, skipping} \entry{nextfile function}{168}{\code {nextfile} function} \entry{assertions}{170}{assertions} \entry{assert, C version}{170}{\code {assert}, C version} \entry{assert}{170}{\code {assert}} \entry{rounding}{171}{rounding} \entry{round}{171}{\code {round}} \entry{numeric character values}{172}{numeric character values} \entry{values of characters as numbers}{172}{values of characters as numbers} \entry{ord}{172}{\code {ord}} \entry{chr}{172}{\code {chr}} \entry{character sets}{173}{character sets} \entry{character encodings}{173}{character encodings} \entry{ASCII}{173}{ASCII} \entry{EBCDIC}{173}{EBCDIC} \entry{mark parity}{173}{mark parity} \entry{merging strings}{174}{merging strings} \entry{join}{175}{\code {join}} \entry{converting dates to timestamps}{175}{converting dates to timestamps} \entry{dates, converting to timestamps}{175}{dates, converting to timestamps} \entry{timestamps, converting from dates}{175}{timestamps, converting from dates} \entry{{\_}tm{\_}isleap}{176}{\code {{\_}tm{\_}isleap}} \entry{{\_}tm{\_}addup}{177}{\code {_tm_addup}} \entry{mktime}{178}{\code {mktime}} \entry{formatted timestamps}{181}{formatted timestamps} \entry{timestamps, formatted}{181}{timestamps, formatted} \entry{gettimeofday}{181}{\code {gettimeofday}} \entry{per file initialization and clean-up}{183}{per file initialization and clean-up} \entry{beginfile}{184}{\code {beginfile}} \entry{endfile}{184}{\code {endfile}} \entry{getopt, C version}{184}{\code {getopt}, C version} \entry{processing arguments}{184}{processing arguments} \entry{argument processing}{184}{argument processing} \entry{getopt}{187}{\code {getopt}} \entry{/dev/user}{190}{\file {/dev/user}} \entry{getpwent, C version}{190}{\code {getpwent}, C version} \entry{user information}{190}{user information} \entry{login information}{190}{login information} \entry{account information}{190}{account information} \entry{password file}{190}{password file} \entry{pwcat program}{191}{\code {pwcat} program} \entry{pwcat.c}{191}{\code {pwcat.c}} \entry{{\_}pw{\_}init}{192}{\code {{\_}pw{\_}init}} \entry{getpwnam}{193}{\code {getpwnam}} \entry{getpwuid}{194}{\code {getpwuid}} \entry{getpwent}{194}{\code {getpwent}} \entry{endpwent}{194}{\code {endpwent}} \entry{getgrent, C version}{195}{\code {getgrent}, C version} \entry{group information}{195}{group information} \entry{account information}{195}{account information} \entry{group file}{195}{group file} \entry{grcat program}{195}{\code {grcat} program} \entry{grcat.c}{195}{\code {grcat.c}} \entry{{\_}gr{\_}init}{197}{\code {{\_}gr{\_}init}} \entry{getgrnam}{198}{\code {getgrnam}} \entry{getgrgid}{199}{\code {getgrgid}} \entry{getgruser}{199}{\code {getgruser}} \entry{getgrent}{199}{\code {getgrent}} \entry{endgrent}{199}{\code {endgrent}} \entry{namespace issues in awk}{200}{namespace issues in \code {awk}} \entry{documenting awk programs}{200}{documenting \code {awk} programs} \entry{programs, documenting}{200}{programs, documenting} \entry{Tcl}{201}{Tcl} \entry{cut utility}{203}{\code {cut} utility} \entry{cut.awk}{204}{\code {cut.awk}} \entry{egrep utility}{208}{\code {egrep} utility} \entry{egrep.awk}{209}{\code {egrep.awk}} \entry{backslash continuation}{212}{backslash continuation} \entry{id utility}{213}{\code {id} utility} \entry{id.awk}{213}{\code {id.awk}} \entry{split utility}{215}{\code {split} utility} \entry{split.awk}{215}{\code {split.awk}} \entry{tee utility}{217}{\code {tee} utility} \entry{tee.awk}{217}{\code {tee.awk}} \entry{uniq utility}{218}{\code {uniq} utility} \entry{uniq.awk}{219}{\code {uniq.awk}} \entry{wc utility}{223}{\code {wc} utility} \entry{wc.awk}{223}{\code {wc.awk}} \entry{dupword.awk}{226}{\code {dupword.awk}} \entry{alarm.awk}{227}{\code {alarm.awk}} \entry{translate.awk}{230}{\code {translate.awk}} \entry{labels.awk}{232}{\code {labels.awk}} \entry{wordfreq.sh}{235}{\code {wordfreq.sh}} \entry{Rakitzis, Byron}{236}{Rakitzis, Byron} \entry{histsort.awk}{236}{\code {histsort.awk}} \entry{extract.awk}{237}{\code {extract.awk}} \entry{sed utility}{240}{\code {sed} utility} \entry{Brennan, Michael}{240}{Brennan, Michael} \entry{awksed}{240}{\code {awksed}} \entry{simple stream editor}{240}{simple stream editor} \entry{stream editor, simple}{240}{stream editor, simple} \entry{sed utility}{244}{\code {sed} utility} \entry{igawk.sh}{244}{\code {igawk.sh}} \entry{awk language, V.4 version}{252}{\code {awk} language, V.4 version} \entry{Kernighan, Brian}{253}{Kernighan, Brian} \entry{compatibility mode}{254}{compatibility mode} \entry{historical features}{275}{historical features} \entry{getting gawk}{277}{getting \code {gawk}} \entry{anonymous ftp}{277}{anonymous \code {ftp}} \entry{ftp, anonymous}{277}{\code {ftp}, anonymous} \entry{Free Software Foundation}{277}{Free Software Foundation} \entry{Free Software Foundation}{277}{Free Software Foundation} \entry{artificial intelligence, using gawk}{280}{artificial intelligence, using \code {gawk}} \entry{AI programming, using gawk}{280}{AI programming, using \code {gawk}} \entry{installation, unix}{282}{installation, unix} \entry{configuring gawk}{283}{configuring \code {gawk}} \entry{custom.h configuration file}{283}{\code {custom.h} configuration file} \entry{installation, vms}{283}{installation, vms} \entry{installation, MS-DOS and OS/2}{286}{installation, MS-DOS and OS/2} \entry{atari}{287}{atari} \entry{installation, atari}{287}{installation, atari} \entry{Linux}{288}{Linux} \entry{amiga}{289}{amiga} \entry{installation, amiga}{289}{installation, amiga} \entry{comp.lang.awk}{290}{\code {comp.lang.awk}} \entry{Deifik, Scott}{291}{Deifik, Scott} \entry{Fish, Fred}{291}{Fish, Fred} \entry{Hankerson, Darrel}{291}{Hankerson, Darrel} \entry{Jaegermann, Michal}{291}{Jaegermann, Michal} \entry{Rankin, Pat}{291}{Rankin, Pat} \entry{Rommel, Kai Uwe}{291}{Rommel, Kai Uwe} \entry{Brennan, Michael}{291}{Brennan, Michael} \entry{Kernighan, Brian}{291}{Kernighan, Brian} \entry{anonymous ftp}{291}{anonymous \code {ftp}} \entry{ftp, anonymous}{291}{\code {ftp}, anonymous} \entry{Brennan, Michael}{291}{Brennan, Michael} \entry{mawk}{291}{\code {mawk}} \entry{adding new features}{293}{adding new features} \entry{features, adding}{293}{features, adding} \entry{gawk coding style}{294}{\code {gawk} coding style} \entry{coding style used in gawk}{294}{coding style used in \code {gawk}} \entry{porting gawk}{295}{porting \code {gawk}} \entry{PERL}{297}{PERL} \entry{Wall, Larry}{297}{Wall, Larry} \entry{ISO 8859-1}{300}{ISO 8859-1} \entry{ISO Latin-1}{300}{ISO Latin-1} .