\initial { } \entry {\code {{\tt \backslashcurfont }} (backslash)}{21} \entry {\code {{\tt \backslashcurfont }} (backslash), \code {{\tt \backslashcurfont }<} operator (\command {gawk})}{54} \entry {\code {{\tt \backslashcurfont }} (backslash), \code {{\tt \backslashcurfont }"} escape sequence}{47} \entry {\code {{\tt \backslashcurfont }} (backslash), \code {{\tt \backslashcurfont }'} operator (\command {gawk})}{55} \entry {\code {{\tt \backslashcurfont }} (backslash), \code {{\tt \backslashcurfont }/} escape sequence}{47} \entry {\code {{\tt \backslashcurfont }} (backslash), \code {{\tt \backslashcurfont }>} operator (\command {gawk})}{54} \entry {\code {{\tt \backslashcurfont }} (backslash), \code {{\tt \backslashcurfont }`} operator (\command {gawk})}{55} \entry {\code {{\tt \backslashcurfont }} (backslash), \code {{\tt \backslashcurfont }a} escape sequence}{46} \entry {\code {{\tt \backslashcurfont }} (backslash), as field separator}{70} \entry {\code {{\tt \backslashcurfont }} (backslash), \code {{\tt \backslashcurfont }b} escape sequence}{46} \entry {\code {{\tt \backslashcurfont }} (backslash), \code {{\tt \backslashcurfont }B} operator (\command {gawk})}{54} \entry {\code {{\tt \backslashcurfont }} (backslash), continuing lines and}{27} \entry {\code {{\tt \backslashcurfont }} (backslash), continuing lines and, comments and}{28} \entry {\code {{\tt \backslashcurfont }} (backslash), continuing lines and, in \command {csh}}{28} \entry {\code {{\tt \backslashcurfont }} (backslash), \code {{\tt \backslashcurfont }f} escape sequence}{46} \entry {\code {{\tt \backslashcurfont }} (backslash), \code {gsub()}/\code {gensub()}/\code {sub()} functions and}{186} \entry {\code {{\tt \backslashcurfont }} (backslash), in bracket expressions}{51} \entry {\code {{\tt \backslashcurfont }} (backslash), in escape sequences}{46, 47} \entry {\code {{\tt \backslashcurfont }} (backslash), in escape sequences, POSIX and}{47} \entry {\code {{\tt \backslashcurfont }} (backslash), in regexp constants}{53} \entry {\code {{\tt \backslashcurfont }} (backslash), in shell commands}{21} \entry {\code {{\tt \backslashcurfont }} (backslash), \code {{\tt \backslashcurfont }n} escape sequence}{46} \entry {\code {{\tt \backslashcurfont }} (backslash), \code {{\tt \backslashcurfont }}\var {nnn} escape sequence}{46} \entry {\code {{\tt \backslashcurfont }} (backslash), \code {{\tt \backslashcurfont }r} escape sequence}{46} \entry {\code {{\tt \backslashcurfont }} (backslash), regexp operator}{48} \entry {\code {{\tt \backslashcurfont }} (backslash), \code {{\tt \backslashcurfont }s} operator (\command {gawk})}{54} \entry {\code {{\tt \backslashcurfont }} (backslash), \code {{\tt \backslashcurfont }S} operator (\command {gawk})}{54} \entry {\code {{\tt \backslashcurfont }} (backslash), \code {{\tt \backslashcurfont }t} escape sequence}{46} \entry {\code {{\tt \backslashcurfont }} (backslash), \code {{\tt \backslashcurfont }v} escape sequence}{46} \entry {\code {{\tt \backslashcurfont }} (backslash), \code {{\tt \backslashcurfont }w} operator (\command {gawk})}{54} \entry {\code {{\tt \backslashcurfont }} (backslash), \code {{\tt \backslashcurfont }W} operator (\command {gawk})}{54} \entry {\code {{\tt \backslashcurfont }} (backslash), \code {{\tt \backslashcurfont }x} escape sequence}{46} \entry {\code {{\tt \backslashcurfont }} (backslash), \code {{\tt \backslashcurfont }y} operator (\command {gawk})}{54} \entry {\code {-} (hyphen), \code {--} operator}{119, 128} \entry {\code {-} (hyphen), \code {-=} operator}{118, 129} \entry {\code {-} (hyphen), filenames beginning with}{32} \entry {\code {-} (hyphen), in bracket expressions}{51} \entry {\code {<} (left angle bracket), \code {<} operator}{122, 128} \entry {\code {<} (left angle bracket), \code {<} operator (I/O)}{80} \entry {\code {<} (left angle bracket), \code {<=} operator}{122, 128} \initial {!} \entry {\code {!} (exclamation point), \code {!} operator}{125, 128, 133, 259} \entry {\code {!} (exclamation point), \code {!=} operator}{122, 128} \entry {\code {!} (exclamation point), \code {!~} operator}{45, 52, 56, 108, 122, 123, 129, 132} \initial {"} \entry {\code {"} (double quote), in regexp constants}{53} \entry {\code {"} (double quote), in shell commands}{22} \initial {#} \entry {\code {#} (number sign), \code {#!} (executable scripts)}{19} \entry {\code {#} (number sign), commenting}{20} \initial {$} \entry {\code {$} (dollar sign), \code {$} field operator}{63, 128} \entry {\code {$} (dollar sign), incrementing fields and arrays}{119} \entry {\code {$} (dollar sign), regexp operator}{48} \initial {%} \entry {\code {%} (percent sign), \code {%} operator}{128} \entry {\code {%} (percent sign), \code {%=} operator}{118, 129} \initial {&} \entry {\code {&} (ampersand), \code {&&} operator}{125, 129} \entry {\code {&} (ampersand), \code {gsub()}/\code {gensub()}/\code {sub()} functions and}{186} \initial {'} \entry {\code {'} (single quote)}{17} \entry {\code {'} (single quote) in \command {gawk} command lines}{19} \entry {\code {'} (single quote), in shell commands}{21} \entry {\code {'} (single quote), vs.\: apostrophe}{20} \entry {\code {'} (single quote), with double quotes}{22} \initial {(} \entry {\code {()} (parentheses), in a profile}{311} \entry {\code {()} (parentheses), regexp operator}{49} \initial {*} \entry {\code {*} (asterisk), \code {*} operator, as multiplication operator}{128} \entry {\code {*} (asterisk), \code {*} operator, as regexp operator}{49} \entry {\code {*} (asterisk), \code {*} operator, null strings\comma {} matching}{186} \entry {\code {*} (asterisk), \code {**} operator}{115, 128} \entry {\code {*} (asterisk), \code {**=} operator}{118, 129} \entry {\code {*} (asterisk), \code {*=} operator}{118, 129} \initial {+} \entry {\code {+} (plus sign), \code {+} operator}{128} \entry {\code {+} (plus sign), \code {++} operator}{119, 128} \entry {\code {+} (plus sign), \code {+=} operator}{117, 129} \entry {\code {+} (plus sign), regexp operator}{49} \initial {,} \entry {\code {,} (comma), in range patterns}{133} \initial {.} \entry {\code {.} (period), regexp operator}{48} \entry {\code {.gmo} files}{316} \entry {\code {.gmo} files, specifying directory of}{316, 317} \entry {\code {.mo} files, converting from \code {.po}}{322} \entry {\code {.po} files}{315, 319} \entry {\code {.po} files, converting to \code {.mo}}{322} \entry {\code {.pot} files}{315} \initial {/} \entry {\code {/} (forward slash) to enclose regular expressions}{45} \entry {\code {/} (forward slash), \code {/} operator}{128} \entry {\code {/} (forward slash), \code {/=} operator}{118, 129} \entry {\code {/} (forward slash), \code {/=} operator, vs. \code {/=\dots {}/} regexp constant}{118} \entry {\code {/} (forward slash), patterns and}{132} \entry {\code {/=} operator vs. \code {/=\dots {}/} regexp constant}{118} \entry {\code {/dev/\dots {}} special files}{101} \entry {\code {/dev/fd/\var {N}} special files (\command {gawk})}{101} \entry {\code {/inet/\dots {}} special files (\command {gawk})}{307} \entry {\code {/inet4/\dots {}} special files (\command {gawk})}{307} \entry {\code {/inet6/\dots {}} special files (\command {gawk})}{307} \initial {;} \entry {\code {;} (semicolon), \env {AWKPATH} variable and}{437} \entry {\code {;} (semicolon), separating statements in actions}{29, 137, 138} \initial {=} \entry {\code {=} (equals sign), \code {=} operator}{116} \entry {\code {=} (equals sign), \code {==} operator}{122, 128} \initial {>} \entry {\code {>} (right angle bracket), \code {>} operator}{122, 128} \entry {\code {>} (right angle bracket), \code {>} operator (I/O)}{98} \entry {\code {>} (right angle bracket), \code {>=} operator}{122, 128} \entry {\code {>} (right angle bracket), \code {>>} operator (I/O)}{98, 128} \initial {?} \entry {\code {?} (question mark), \code {?:} operator}{129} \entry {\code {?} (question mark), regexp operator}{49, 55} \initial {[} \entry {\code {[]} (square brackets), regexp operator}{49} \initial {^} \entry {\code {^} (caret), \code {^} operator}{128} \entry {\code {^} (caret), \code {^=} operator}{118, 129} \entry {\code {^} (caret), in bracket expressions}{51} \entry {\code {^} (caret), in \code {FS}}{69} \entry {\code {^} (caret), regexp operator}{48, 55} \initial {_} \entry {\code {_} (underscore), C macro}{316} \entry {\code {_} (underscore), in names of private variables}{218} \entry {\code {_} (underscore), translatable string}{318} \entry {\code {_gr_init()} user-defined function}{243} \entry {\code {_ord_init()} user-defined function}{223} \entry {\code {_pw_init()} user-defined function}{240} \initial {\\} \entry {\code {{\tt \char 123}{\tt \char 125}} (braces)}{311} \entry {\code {{\tt \char 123}{\tt \char 125}} (braces), actions and}{137} \entry {\code {{\tt \char 123}{\tt \char 125}} (braces), statements, grouping}{138} \initial {|} \entry {\code {|} (vertical bar)}{49} \entry {\code {|} (vertical bar), \code {|} operator (I/O)}{81, 98, 128} \entry {\code {|} (vertical bar), \code {|&} operator (I/O)}{82, 99, 128, 306} \entry {\code {|} (vertical bar), \code {|&} operator (I/O), pipes\comma {} closing}{104} \entry {\code {|} (vertical bar), \code {||} operator}{125, 129} \initial {~} \entry {\code {~} (tilde), \code {~} operator}{45, 52, 56, 108, 122, 123, 129, 132} \initial {A} \entry {accessing fields}{63} \entry {accessing global variables from extensions}{373} \entry {account information}{238, 242} \entry {actions}{137} \entry {actions, control statements in}{138} \entry {actions, default}{24} \entry {actions, empty}{24} \entry {Ada programming language}{463} \entry {adding, features to \command {gawk}}{448} \entry {adding, fields}{65} \entry {advanced features, fixed-width data}{72} \entry {advanced features, \command {gawk}}{299} \entry {advanced features, network programming}{307} \entry {advanced features, nondecimal input data}{299} \entry {advanced features, processes\comma {} communicating with}{305} \entry {advanced features, specifying field content}{74} \entry {Aho, Alfred}{6, 425} \entry {alarm clock example program}{272} \entry {\code {alarm.awk} program}{272} \entry {algorithms}{460} \entry {allocating memory for extensions}{362} \entry {amazing \command {awk} assembler (\command {aaa})}{463} \entry {amazingly workable formatter (\command {awf})}{463} \entry {ambiguity, syntactic: \code {/=} operator vs. \code {/=\dots {}/} regexp constant}{118} \entry {ampersand (\code {&}), \code {&&} operator}{125, 129} \entry {ampersand (\code {&}), \code {gsub()}/\code {gensub()}/\code {sub()} functions and}{186} \entry {\code {anagram.awk} program}{292} \entry {anagrams, finding}{292} \entry {and Boolean-logic operator}{124} \entry {\code {and()} function (\command {gawk})}{196} \entry {AND bitwise operation}{196} \entry {ANSI}{463} \entry {API informational variables}{386} \entry {API version}{385} \entry {arbitrary precision}{341} \entry {arbitrary precision integers}{350} \entry {archaeologists}{442} \entry {arctangent}{176} \entry {\code {ARGC}/\code {ARGV} variables}{149} \entry {\code {ARGC}/\code {ARGV} variables, command-line arguments}{37} \entry {\code {ARGC}/\code {ARGV} variables, how to use}{155} \entry {\code {ARGC}/\code {ARGV} variables, portability and}{20} \entry {\code {ARGIND} variable}{150} \entry {\code {ARGIND} variable, command-line arguments}{37} \entry {arguments, command-line}{37, 149, 155} \entry {arguments, command-line, invoking \command {awk}}{31} \entry {arguments, in function calls}{126} \entry {arguments, processing}{233} \entry {\code {ARGV} array, indexing into}{37} \entry {arithmetic operators}{114} \entry {array manipulation in extensions}{377} \entry {array members}{161} \entry {array scanning order, controlling}{164} \entry {array, number of elements}{180} \entry {arrays}{159} \entry {arrays of arrays}{171} \entry {arrays, an example of using}{162} \entry {arrays, and \code {IGNORECASE} variable}{161} \entry {arrays, as parameters to functions}{205} \entry {arrays, associative}{160} \entry {arrays, associative, library functions and}{218} \entry {arrays, deleting entire contents}{169} \entry {arrays, elements that don't exist}{161} \entry {arrays, elements, assigning values}{162} \entry {arrays, elements, deleting}{168} \entry {arrays, elements, order of access by \code {in} operator}{163} \entry {arrays, elements, retrieving number of}{178} \entry {arrays, \code {for} statement and}{163} \entry {arrays, indexing}{160} \entry {arrays, merging into strings}{225} \entry {arrays, multidimensional}{169} \entry {arrays, multidimensional, scanning}{171} \entry {arrays, numeric subscripts}{167} \entry {arrays, referencing elements}{161} \entry {arrays, scanning}{163} \entry {arrays, sorting}{304} \entry {arrays, sorting, and \code {IGNORECASE} variable}{305} \entry {arrays, sparse}{160} \entry {arrays, subscripts, uninitialized variables as}{167} \entry {arrays, unassigned elements}{161} \entry {artificial intelligence\comma {} \command {gawk} and}{430} \entry {ASCII}{224, 465} \entry {\code {asort()} function (\command {gawk})}{178, 304} \entry {\code {asort()} function (\command {gawk}), arrays\comma {} sorting}{304} \entry {\code {asorti()} function (\command {gawk})}{178, 304} \entry {\code {asorti()} function (\command {gawk}), arrays\comma {} sorting}{304} \entry {\code {assert()} function (C library)}{220} \entry {\code {assert()} user-defined function}{221} \entry {assertions}{220} \entry {\option {--assign} option}{32} \entry {assign values to variables, in debugger}{334} \entry {assignment operators}{116} \entry {assignment operators, evaluation order}{118} \entry {assignment operators, lvalues/rvalues}{116} \entry {assignments as filenames}{232} \entry {associative arrays}{160} \entry {asterisk (\code {*}), \code {*} operator, as multiplication operator}{128} \entry {asterisk (\code {*}), \code {*} operator, as regexp operator}{49} \entry {asterisk (\code {*}), \code {*} operator, null strings\comma {} matching}{186} \entry {asterisk (\code {*}), \code {**} operator}{115, 128} \entry {asterisk (\code {*}), \code {**=} operator}{118, 129} \entry {asterisk (\code {*}), \code {*=} operator}{118, 129} \entry {\code {atan2()} function}{176} \entry {automatic displays, in debugger}{335} \entry {\command {awf} (amazingly workable formatter) program}{463} \entry {\command {awk} debugging, enabling}{33} \entry {\command {awk} language, POSIX version}{118} \entry {\command {awk} profiling, enabling}{35} \entry {\command {awk} programs}{17, 19, 26} \entry {\command {awk} programs, complex}{29} \entry {\command {awk} programs, documenting}{20, 218} \entry {\command {awk} programs, examples of}{251} \entry {\command {awk} programs, execution of}{144} \entry {\command {awk} programs, internationalizing}{198, 317} \entry {\command {awk} programs, lengthy}{18} \entry {\command {awk} programs, lengthy, assertions}{220} \entry {\command {awk} programs, location of}{31, 33, 34} \entry {\command {awk} programs, one-line examples}{25} \entry {\command {awk} programs, profiling}{309} \entry {\command {awk} programs, running}{17, 18} \entry {\command {awk} programs, running, from shell scripts}{17} \entry {\command {awk} programs, running, without input files}{18} \entry {\command {awk} programs, shell variables in}{136} \entry {\command {awk}, function of}{17} \entry {\command {awk}, \command {gawk} and}{5, 7} \entry {\command {awk}, history of}{6} \entry {\command {awk}, implementation issues, pipes}{99} \entry {\command {awk}, implementations}{443} \entry {\command {awk}, implementations, limits}{83} \entry {\command {awk}, invoking}{31} \entry {\command {awk}, new vs.\: old}{6} \entry {\command {awk}, new vs.\: old, \code {OFMT} variable}{112} \entry {\command {awk}, POSIX and}{5} \entry {\command {awk}, POSIX and, See Also POSIX \command {awk}}{5} \entry {\command {awk}, regexp constants and}{123} \entry {\command {awk}, See Also \command {gawk}}{5} \entry {\command {awk}, terms describing}{7} \entry {\command {awk}, uses for}{5, 17, 29} \entry {\command {awk}, versions of}{413} \entry {\command {awk}, versions of, changes between SVR3.1 and SVR4}{414} \entry {\command {awk}, versions of, changes between SVR4 and POSIX \command {awk}}{414} \entry {\command {awk}, versions of, changes between V7 and SVR3.1}{413} \entry {\command {awk}, versions of, See Also Brian Kernighan's \command {awk}}{415, 444} \entry {\command {awka} compiler for \command {awk}}{444} \entry {\env {AWKLIBPATH} environment variable}{40} \entry {\env {AWKPATH} environment variable}{39, 437} \entry {\code {awkprof.out} file}{309} \entry {\command {awksed.awk} program}{284} \entry {\file {awkvars.out} file}{33} \initial {B} \entry {\code {b} debugger command (alias for \code {break})}{330} \entry {\option {-b} option}{32} \entry {backslash (\code {{\tt \backslashcurfont }})}{21} \entry {backslash (\code {{\tt \backslashcurfont }}), \code {{\tt \backslashcurfont }<} operator (\command {gawk})}{54} \entry {backslash (\code {{\tt \backslashcurfont }}), \code {{\tt \backslashcurfont }"} escape sequence}{47} \entry {backslash (\code {{\tt \backslashcurfont }}), \code {{\tt \backslashcurfont }'} operator (\command {gawk})}{55} \entry {backslash (\code {{\tt \backslashcurfont }}), \code {{\tt \backslashcurfont }/} escape sequence}{47} \entry {backslash (\code {{\tt \backslashcurfont }}), \code {{\tt \backslashcurfont }>} operator (\command {gawk})}{54} \entry {backslash (\code {{\tt \backslashcurfont }}), \code {{\tt \backslashcurfont }`} operator (\command {gawk})}{55} \entry {backslash (\code {{\tt \backslashcurfont }}), \code {{\tt \backslashcurfont }a} escape sequence}{46} \entry {backslash (\code {{\tt \backslashcurfont }}), as field separator}{70} \entry {backslash (\code {{\tt \backslashcurfont }}), \code {{\tt \backslashcurfont }b} escape sequence}{46} \entry {backslash (\code {{\tt \backslashcurfont }}), \code {{\tt \backslashcurfont }B} operator (\command {gawk})}{54} \entry {backslash (\code {{\tt \backslashcurfont }}), continuing lines and}{27} \entry {backslash (\code {{\tt \backslashcurfont }}), continuing lines and, comments and}{28} \entry {backslash (\code {{\tt \backslashcurfont }}), continuing lines and, in \command {csh}}{28} \entry {backslash (\code {{\tt \backslashcurfont }}), \code {{\tt \backslashcurfont }f} escape sequence}{46} \entry {backslash (\code {{\tt \backslashcurfont }}), \code {gsub()}/\code {gensub()}/\code {sub()} functions and}{186} \entry {backslash (\code {{\tt \backslashcurfont }}), in bracket expressions}{51} \entry {backslash (\code {{\tt \backslashcurfont }}), in escape sequences}{46, 47} \entry {backslash (\code {{\tt \backslashcurfont }}), in escape sequences, POSIX and}{47} \entry {backslash (\code {{\tt \backslashcurfont }}), in regexp constants}{53} \entry {backslash (\code {{\tt \backslashcurfont }}), in shell commands}{21} \entry {backslash (\code {{\tt \backslashcurfont }}), \code {{\tt \backslashcurfont }n} escape sequence}{46} \entry {backslash (\code {{\tt \backslashcurfont }}), \code {{\tt \backslashcurfont }}\var {nnn} escape sequence}{46} \entry {backslash (\code {{\tt \backslashcurfont }}), \code {{\tt \backslashcurfont }r} escape sequence}{46} \entry {backslash (\code {{\tt \backslashcurfont }}), regexp operator}{48} \entry {backslash (\code {{\tt \backslashcurfont }}), \code {{\tt \backslashcurfont }s} operator (\command {gawk})}{54} \entry {backslash (\code {{\tt \backslashcurfont }}), \code {{\tt \backslashcurfont }S} operator (\command {gawk})}{54} \entry {backslash (\code {{\tt \backslashcurfont }}), \code {{\tt \backslashcurfont }t} escape sequence}{46} \entry {backslash (\code {{\tt \backslashcurfont }}), \code {{\tt \backslashcurfont }v} escape sequence}{46} \entry {backslash (\code {{\tt \backslashcurfont }}), \code {{\tt \backslashcurfont }w} operator (\command {gawk})}{54} \entry {backslash (\code {{\tt \backslashcurfont }}), \code {{\tt \backslashcurfont }W} operator (\command {gawk})}{54} \entry {backslash (\code {{\tt \backslashcurfont }}), \code {{\tt \backslashcurfont }x} escape sequence}{46} \entry {backslash (\code {{\tt \backslashcurfont }}), \code {{\tt \backslashcurfont }y} operator (\command {gawk})}{54} \entry {\code {backtrace} debugger command}{335} \entry {Beebe, Nelson H.F.\:}{12, 445} \entry {\code {BEGIN} pattern}{67, 134} \entry {\code {BEGIN} pattern, and profiling}{309} \entry {\code {BEGIN} pattern, \code {assert()} user-defined function and}{222} \entry {\code {BEGIN} pattern, Boolean patterns and}{133} \entry {\code {BEGIN} pattern, \code {exit} statement and}{146} \entry {\code {BEGIN} pattern, \code {getline} and}{83} \entry {\code {BEGIN} pattern, headings\comma {} adding}{90} \entry {\code {BEGIN} pattern, \code {next}/\code {nextfile} statements and}{135, 145} \entry {\code {BEGIN} pattern, \code {OFS}/\code {ORS} variables, assigning values to}{91} \entry {\code {BEGIN} pattern, operators and}{134} \entry {\code {BEGIN} pattern, \code {print} statement and}{135} \entry {\code {BEGIN} pattern, \code {pwcat} program}{241} \entry {\code {BEGIN} pattern, running \command {awk} programs and}{252} \entry {\code {BEGIN} pattern, \code {TEXTDOMAIN} variable and}{318} \entry {\code {beginfile()} user-defined function}{230} \entry {\code {BEGINFILE} pattern}{135} \entry {\code {BEGINFILE} pattern, Boolean patterns and}{133} \entry {Bentley, Jon}{466} \entry {Benzinger, Michael}{426} \entry {Berry, Karl}{12, 425} \entry {\option {--bignum} option}{35} \entry {binary input/output}{147} \entry {\code {bindtextdomain()} function (C library)}{316} \entry {\code {bindtextdomain()} function (\command {gawk})}{199, 317} \entry {\code {bindtextdomain()} function (\command {gawk}), portability and}{321} \entry {\code {BINMODE} variable}{147, 437} \entry {bit-manipulation functions}{196} \entry {\code {bits2str()} user-defined function}{197} \entry {bitwise AND}{196} \entry {bitwise complement}{196} \entry {bitwise OR}{197} \entry {bitwise XOR}{197} \entry {bitwise, complement}{196} \entry {bitwise, operations}{196} \entry {bitwise, shift}{196} \entry {body, in actions}{138} \entry {body, in loops}{139} \entry {Boolean expressions}{124} \entry {Boolean expressions, as patterns}{132} \entry {Boolean operators, See Boolean expressions}{124} \entry {Bourne shell, quoting rules for}{21} \entry {braces (\code {{\tt \char 123}{\tt \char 125}})}{311} \entry {braces (\code {{\tt \char 123}{\tt \char 125}}), actions and}{137} \entry {braces (\code {{\tt \char 123}{\tt \char 125}}), statements, grouping}{138} \entry {bracket expressions}{49, 50} \entry {bracket expressions, character classes}{51} \entry {bracket expressions, collating elements}{52} \entry {bracket expressions, collating symbols}{52} \entry {bracket expressions, complemented}{49} \entry {bracket expressions, equivalence classes}{52} \entry {bracket expressions, non-ASCII}{52} \entry {bracket expressions, range expressions}{50} \entry {\code {break} debugger command}{330} \entry {\code {break} statement}{142} \entry {breakpoint}{326} \entry {breakpoint at location, how to delete}{331} \entry {breakpoint commands}{332} \entry {breakpoint condition}{331} \entry {breakpoint, delete by number}{331} \entry {breakpoint, how to disable or enable}{331} \entry {breakpoint, setting}{330} \entry {Brennan, Michael}{2, 3, 12, 169, 284, 443, 444} \entry {Brian Kernighan's \command {awk}}{29, 47, 55, 69, 82, 115, 135, 143, 144, 146, 169, 185, 186, 189} \entry {Brian Kernighan's \command {awk}, extensions}{415} \entry {Brian Kernighan's \command {awk}, source code}{444} \entry {Brini, Davide}{293} \entry {Brink, Jeroen}{23} \entry {Broder, Alan J.\:}{426} \entry {Brown, Martin}{426} \entry {BSD-based operating systems}{474} \entry {\code {bt} debugger command (alias for \code {backtrace})}{335} \entry {Buening, Andreas}{12, 426, 443} \entry {buffering, input/output}{191, 306} \entry {buffering, interactive vs.\: noninteractive}{190} \entry {buffers, flushing}{189, 191} \entry {buffers, operators for}{55} \entry {bug reports, email address, \code address@hidden \entry {\code address@hidden bug reporting address}{442} \entry {built-in functions}{175} \entry {built-in functions, evaluation order}{175} \entry {BusyBox Awk}{445} \initial {C} \entry {\option {-c} option}{32} \entry {c.e., See common extensions}{10} \entry {\option {-C} option}{32} \entry {call by reference}{205} \entry {call by value}{205} \entry {call stack, display in debugger}{335} \entry {caret (\code {^}), \code {^} operator}{128} \entry {caret (\code {^}), \code {^=} operator}{118, 129} \entry {caret (\code {^}), in bracket expressions}{51} \entry {caret (\code {^}), regexp operator}{48, 55} \entry {\code {case} keyword}{141} \entry {case sensitivity, and regexps}{148} \entry {case sensitivity, and string comparisons}{148} \entry {case sensitivity, array indices and}{161} \entry {case sensitivity, converting case}{186} \entry {case sensitivity, example programs}{217} \entry {case sensitivity, \command {gawk}}{56} \entry {case sensitivity, regexps and}{55} \entry {CGI, \command {awk} scripts for}{33} \entry {character classes, See bracket expressions}{49} \entry {character lists in regular expression}{50} \entry {character lists, See bracket expressions}{49} \entry {character sets (machine character encodings)}{224, 465} \entry {character sets, See Also bracket expressions}{49} \entry {characters, counting}{269} \entry {characters, transliterating}{274} \entry {characters, values of as numbers}{223} \entry {\option {--characters-as-bytes} option}{32} \entry {Chassell, Robert J.\:}{12} \entry {\code {chdir()} extension function}{398} \entry {\command {chem} utility}{466} \entry {\code {chr()} extension function}{404} \entry {\code {chr()} user-defined function}{223} \entry {\code {clear} debugger command}{331} \entry {Cliff random numbers}{223} \entry {\code {cliff_rand()} user-defined function}{223} \entry {close file or coprocess}{189} \entry {\code {close()} function}{102, 189} \entry {\code {close()} function, portability}{103} \entry {\code {close()} function, return value}{104} \entry {\code {close()} function, two-way pipes and}{306} \entry {Close, Diane}{10, 425} \entry {Collado, Manuel}{12} \entry {collating elements}{52} \entry {collating symbols}{52} \entry {Colombo, Antonio}{12, 427} \entry {columns, aligning}{90} \entry {columns, cutting}{251} \entry {comma (\code {,}), in range patterns}{133} \entry {command completion, in debugger}{338} \entry {command line, arguments}{37, 149, 155} \entry {command line, directories on}{86} \entry {command line, formats}{17} \entry {command line, \code {FS} on\comma {} setting}{69} \entry {command line, invoking \command {awk} from}{31} \entry {command line, option \option {-f}}{18} \entry {command line, options}{31} \entry {command line, options, end of}{32} \entry {command line, variables\comma {} assigning on}{111} \entry {command-line options, processing}{233} \entry {command-line options, string extraction}{319} \entry {\code {commands} debugger command}{332} \entry {commands to execute at breakpoint}{332} \entry {commenting}{20} \entry {commenting, backslash continuation and}{28} \entry {common extensions, \code {**} operator}{114} \entry {common extensions, \code {**=} operator}{118} \entry {common extensions, \code {/dev/stderr} special file}{101} \entry {common extensions, \code {/dev/stdin} special file}{101} \entry {common extensions, \code {/dev/stdout} special file}{101} \entry {common extensions, \code {BINMODE} variable}{437} \entry {common extensions, \code {delete} to delete entire arrays}{169} \entry {common extensions, \code {func} keyword}{200} \entry {common extensions, \code {length()} applied to an array}{180} \entry {common extensions, \code {RS} as a regexp}{61} \entry {common extensions, single character fields}{69} \entry {common extensions, \code {{\tt \backslashcurfont }x} escape sequence}{46} \entry {\code {comp.lang.awk} newsgroup}{443} \entry {comparison expressions}{120} \entry {comparison expressions, as patterns}{132} \entry {comparison expressions, string vs.\: regexp}{123} \entry {compatibility mode (\command {gawk}), extensions}{415} \entry {compatibility mode (\command {gawk}), file names}{102} \entry {compatibility mode (\command {gawk}), hexadecimal numbers}{108} \entry {compatibility mode (\command {gawk}), octal numbers}{108} \entry {compatibility mode (\command {gawk}), specifying}{32} \entry {compiled programs}{459, 466} \entry {compiling \command {gawk} for Cygwin}{438} \entry {compiling \command {gawk} for MS-DOS and MS-Windows}{436} \entry {compiling \command {gawk} for VMS}{439} \entry {compiling \command {gawk} with EMX for OS/2}{436} \entry {\code {compl()} function (\command {gawk})}{196} \entry {complement, bitwise}{196} \entry {compound statements\comma {} control statements and}{138} \entry {concatenating}{115} \entry {\code {condition} debugger command}{331} \entry {conditional expressions}{125} \entry {configuration option, \code {--disable-extensions}}{433} \entry {configuration option, \code {--disable-lint}}{433} \entry {configuration option, \code {--disable-nls}}{434} \entry {configuration option, \code {--with-whiny-user-strftime}}{434} \entry {configuration options\comma {} \command {gawk}}{433} \entry {constant regexps}{46} \entry {constants, nondecimal}{299} \entry {constants, numeric}{107} \entry {constants, types of}{107} \entry {continue program, in debugger}{332} \entry {\code {continue} statement}{143} \entry {control statements}{138} \entry {controlling array scanning order}{164} \entry {convert string to lower case}{186} \entry {convert string to number}{183} \entry {convert string to upper case}{186} \entry {converting integer array subscripts}{167} \entry {converting, dates to timestamps}{193} \entry {converting, numbers to strings}{111, 198} \entry {converting, strings to numbers}{111, 198} \entry {\code {CONVFMT} variable}{112, 147} \entry {\code {CONVFMT} variable, and array subscripts}{167} \entry {cookie}{467} \entry {coprocesses}{99, 306} \entry {coprocesses, closing}{102} \entry {coprocesses, \code {getline} from}{82} \entry {\option {--copyright} option}{32} \entry {\code {cos()} function}{176} \entry {cosine}{176} \entry {counting}{269} \entry {\command {csh} utility}{28} \entry {\command {csh} utility, \code {|&} operator, comparison with}{306} \entry {\command {csh} utility, \env {POSIXLY_CORRECT} environment variable}{37} \entry {\code {ctime()} user-defined function}{202} \entry {currency symbols, localization}{316} \entry {current system time}{193} \entry {\code {custom.h} file}{434} \entry {customized input parser}{365} \entry {customized output wrapper}{368} \entry {customized two-way processor}{370} \entry {\command {cut} utility}{251} \entry {\code {cut.awk} program}{252} \initial {D} \entry {\code {d} debugger command (alias for \code {delete})}{331} \entry {\option {-d} option}{33} \entry {d.c., See dark corner}{10} \entry {\option {-D} option}{33} \entry {dark corner}{10, 467} \entry {dark corner, \code {"0"} is actually true}{120} \entry {dark corner, \code {/=} operator vs. \code {/=\dots {}/} regexp constant}{118} \entry {dark corner, \code {^}, in \code {FS}}{69} \entry {dark corner, array subscripts}{168} \entry {dark corner, \code {break} statement}{143} \entry {dark corner, \code {close()} function}{104} \entry {dark corner, command-line arguments}{111} \entry {dark corner, \code {continue} statement}{144} \entry {dark corner, \code {CONVFMT} variable}{112} \entry {dark corner, escape sequences}{38} \entry {dark corner, escape sequences, for metacharacters}{48} \entry {dark corner, \code {exit} statement}{146} \entry {dark corner, field separators}{71} \entry {dark corner, \code {FILENAME} variable}{83, 150} \entry {dark corner, \code {FNR}/\code {NR} variables}{155} \entry {dark corner, format-control characters}{93, 94} \entry {dark corner, \code {FS} as null string}{69} \entry {dark corner, input files}{61} \entry {dark corner, invoking \command {awk}}{31} \entry {dark corner, \code {length()} function}{180} \entry {dark corner, locale's decimal point character}{112} \entry {dark corner, multiline records}{76} \entry {dark corner, \code {NF} variable, decrementing}{66} \entry {dark corner, \code {OFMT} variable}{92} \entry {dark corner, regexp as second argument to \code {index()}}{180} \entry {dark corner, regexp constants}{109} \entry {dark corner, regexp constants, \code {/=} operator and}{118} \entry {dark corner, regexp constants, as arguments to user-defined functions}{109} \entry {dark corner, \code {split()} function}{183} \entry {dark corner, strings, storing}{63} \entry {dark corner, value of \code {ARGV[0]}}{150} \entry {data, fixed-width}{72} \entry {database, group, reading}{242} \entry {database, users\comma {} reading}{238} \entry {data-driven languages}{460} \entry {\command {date} utility, GNU}{192} \entry {\code {date} utility, POSIX}{195} \entry {dates, converting to timestamps}{193} \entry {dates, information related to\comma {} localization}{317} \entry {Davies, Stephen}{12, 426} \entry {Day, Robert P.J.\:}{12} \entry {\code {dcgettext()} function (\command {gawk})}{199, 317} \entry {\code {dcgettext()} function (\command {gawk}), portability and}{321} \entry {\code {dcngettext()} function (\command {gawk})}{199, 317} \entry {\code {dcngettext()} function (\command {gawk}), portability and}{321} \entry {deadlocks}{306} \entry {\option {--debug} option}{33} \entry {debugger commands, \code {b} (\code {break})}{330} \entry {debugger commands, \code {backtrace}}{335} \entry {debugger commands, \code {break}}{330} \entry {debugger commands, \code {bt} (\code {backtrace})}{335} \entry {debugger commands, \code {c} (\code {continue})}{332} \entry {debugger commands, \code {clear}}{331} \entry {debugger commands, \code {commands}}{332} \entry {debugger commands, \code {condition}}{331} \entry {debugger commands, \code {continue}}{332} \entry {debugger commands, \code {d} (\code {delete})}{331} \entry {debugger commands, \code {delete}}{331} \entry {debugger commands, \code {disable}}{331} \entry {debugger commands, \code {display}}{333} \entry {debugger commands, \code {down}}{335} \entry {debugger commands, \code {dump}}{337} \entry {debugger commands, \code {e} (\code {enable})}{331} \entry {debugger commands, \code {enable}}{331} \entry {debugger commands, \code {end}}{332} \entry {debugger commands, \code {eval}}{333} \entry {debugger commands, \code {f} (\code {frame})}{335} \entry {debugger commands, \code {finish}}{332} \entry {debugger commands, \code {frame}}{335} \entry {debugger commands, \code {h} (\code {help})}{338} \entry {debugger commands, \code {help}}{338} \entry {debugger commands, \code {i} (\code {info})}{335} \entry {debugger commands, \code {ignore}}{331} \entry {debugger commands, \code {info}}{335} \entry {debugger commands, \code {l} (\code {list})}{338} \entry {debugger commands, \code {list}}{338} \entry {debugger commands, \code {n} (\code {next})}{332} \entry {debugger commands, \code {next}}{332} \entry {debugger commands, \code {nexti}}{332} \entry {debugger commands, \code {ni} (\code {nexti})}{332} \entry {debugger commands, \code {o} (\code {option})}{336} \entry {debugger commands, \code {option}}{336} \entry {debugger commands, \code {p} (\code {print})}{333} \entry {debugger commands, \code {print}}{333} \entry {debugger commands, \code {printf}}{334} \entry {debugger commands, \code {q} (\code {quit})}{338} \entry {debugger commands, \code {quit}}{338} \entry {debugger commands, \code {r} (\code {run})}{332} \entry {debugger commands, \code {return}}{332} \entry {debugger commands, \code {run}}{332} \entry {debugger commands, \code {s} (\code {step})}{333} \entry {debugger commands, \code {set}}{334} \entry {debugger commands, \code {si} (\code {stepi})}{333} \entry {debugger commands, \code {silent}}{332} \entry {debugger commands, \code {step}}{333} \entry {debugger commands, \code {stepi}}{333} \entry {debugger commands, \code {t} (\code {tbreak})}{331} \entry {debugger commands, \code {tbreak}}{331} \entry {debugger commands, \code {trace}}{338} \entry {debugger commands, \code {u} (\code {until})}{333} \entry {debugger commands, \code {undisplay}}{334} \entry {debugger commands, \code {until}}{333} \entry {debugger commands, \code {unwatch}}{334} \entry {debugger commands, \code {up}}{335} \entry {debugger commands, \code {w} (\code {watch})}{334} \entry {debugger commands, \code {watch}}{334} \entry {debugger commands, \code {where} (\code {backtrace})}{335} \entry {debugger default list amount}{336} \entry {debugger history file}{336} \entry {debugger history size}{336} \entry {debugger options}{336} \entry {debugger prompt}{336} \entry {debugger, how to start}{327} \entry {debugger, read commands from a file}{336} \entry {debugging \command {awk} programs}{325} \entry {debugging \command {gawk}, bug reports}{442} \entry {decimal point character, locale specific}{36} \entry {decrement operators}{119} \entry {\code {default} keyword}{141} \entry {Deifik, Scott}{12, 426, 443} \entry {\code {delete} \var {array}}{169} \entry {delete breakpoint at location}{331} \entry {delete breakpoint by number}{331} \entry {\code {delete} debugger command}{331} \entry {\code {delete} statement}{168} \entry {delete watchpoint}{334} \entry {deleting elements in arrays}{168} \entry {deleting entire arrays}{169} \entry {Demaille, Akim}{12} \entry {describe call stack frame, in debugger}{335} \entry {differences between \command {gawk} and \command {awk}}{180} \entry {differences in \command {awk} and \command {gawk}, \code {ARGC}/\code {ARGV} variables}{156} \entry {differences in \command {awk} and \command {gawk}, \code {ARGIND} variable}{150} \entry {differences in \command {awk} and \command {gawk}, array elements, deleting}{169} \entry {differences in \command {awk} and \command {gawk}, \code {AWKLIBPATH} environment variable}{40} \entry {differences in \command {awk} and \command {gawk}, \env {AWKPATH} environment variable}{39} \entry {differences in \command {awk} and \command {gawk}, \code {BEGIN}/\code {END} patterns}{135} \entry {differences in \command {awk} and \command {gawk}, \code {BEGINFILE}/\code {ENDFILE} patterns}{135} \entry {differences in \command {awk} and \command {gawk}, \code {BINMODE} variable}{147, 437} \entry {differences in \command {awk} and \command {gawk}, \code {close()} function}{103, 104} \entry {differences in \command {awk} and \command {gawk}, command-line directories}{86} \entry {differences in \command {awk} and \command {gawk}, \code {ERRNO} variable}{150} \entry {differences in \command {awk} and \command {gawk}, error messages}{100} \entry {differences in \command {awk} and \command {gawk}, \code {FIELDWIDTHS} variable}{147} \entry {differences in \command {awk} and \command {gawk}, \code {FPAT} variable}{147} \entry {differences in \command {awk} and \command {gawk}, \code {FUNCTAB} variable}{151} \entry {differences in \command {awk} and \command {gawk}, function arguments (\command {gawk})}{175} \entry {differences in \command {awk} and \command {gawk}, \code {getline} command}{78} \entry {differences in \command {awk} and \command {gawk}, \code {IGNORECASE} variable}{148} \entry {differences in \command {awk} and \command {gawk}, implementation limitations}{83, 99} \entry {differences in \command {awk} and \command {gawk}, indirect function calls}{208} \entry {differences in \command {awk} and \command {gawk}, input/output operators}{82, 99} \entry {differences in \command {awk} and \command {gawk}, line continuations}{126} \entry {differences in \command {awk} and \command {gawk}, \code {LINT} variable}{148} \entry {differences in \command {awk} and \command {gawk}, \code {match()} function}{181} \entry {differences in \command {awk} and \command {gawk}, \code {print}/\code {printf} statements}{94} \entry {differences in \command {awk} and \command {gawk}, \code {PROCINFO} array}{151} \entry {differences in \command {awk} and \command {gawk}, read timeouts}{84} \entry {differences in \command {awk} and \command {gawk}, record separators}{61} \entry {differences in \command {awk} and \command {gawk}, regexp constants}{109} \entry {differences in \command {awk} and \command {gawk}, regular expressions}{56} \entry {differences in \command {awk} and \command {gawk}, \code {RS}/\code {RT} variables}{62} \entry {differences in \command {awk} and \command {gawk}, \code {RT} variable}{153} \entry {differences in \command {awk} and \command {gawk}, single-character fields}{69} \entry {differences in \command {awk} and \command {gawk}, \code {split()} function}{183} \entry {differences in \command {awk} and \command {gawk}, strings}{107} \entry {differences in \command {awk} and \command {gawk}, strings, storing}{63} \entry {differences in \command {awk} and \command {gawk}, \code {SYMTAB} variable}{153} \entry {differences in \command {awk} and \command {gawk}, \code {TEXTDOMAIN} variable}{149} \entry {differences in \command {awk} and \command {gawk}, trunc-mod operation}{114} \entry {directories, command-line}{86} \entry {directories, searching}{295} \entry {directories, searching for loadable extensions}{40} \entry {directories, searching for source files}{39} \entry {disable breakpoint}{331} \entry {\code {disable} debugger command}{331} \entry {\option {--disable-extensions} configuration option}{433} \entry {\option {--disable-lint} configuration option}{433} \entry {\option {--disable-nls} configuration option}{434} \entry {\code {display} debugger command}{333} \entry {display debugger options}{336} \entry {division}{114} \entry {documentation, of \command {awk} programs}{218} \entry {documentation, online}{10} \entry {documents\comma {} searching}{271} \entry {dollar sign (\code {$}), \code {$} field operator}{63, 128} \entry {dollar sign (\code {$}), incrementing fields and arrays}{119} \entry {dollar sign (\code {$}), regexp operator}{48} \entry {double quote (\code {"}), in regexp constants}{53} \entry {double quote (\code {"}), in shell commands}{22} \entry {\code {do}-\code {while} statement}{140} \entry {\code {do}-\code {while} statement, use of regexps in}{45} \entry {\code {down} debugger command}{335} \entry {Drepper, Ulrich}{12} \entry {Duman, Patrice}{12} \entry {dump all variables of a program}{33} \entry {\code {dump} debugger command}{337} \entry {\option {--dump-variables} option}{33} \entry {\option {--dump-variables} option, using for library functions}{218} \entry {\code {dupword.awk} program}{271} \entry {dynamic profiling}{311} \entry {dynamically loaded extensions}{355} \initial {E} \entry {\code {e} debugger command (alias for \code {enable})}{331} \entry {\option {-e} option}{33, 37} \entry {\option {-E} option}{33} \entry {EBCDIC}{224} \entry {effective group ID of \command {gawk} user}{151} \entry {effective user ID of \command {gawk} user}{151} \entry {\command {egrep} utility}{51, 256} \entry {\code {egrep.awk} program}{257} \entry {elements in arrays, assigning values}{162} \entry {elements in arrays, deleting}{168} \entry {elements in arrays, order of access by \code {in} operator}{163} \entry {elements in arrays, scanning}{163} \entry {elements of arrays}{161} \entry {email address for bug reports, \code address@hidden \entry {\code {EMISTERED}}{307} \entry {empty array elements}{161} \entry {empty pattern}{136} \entry {empty strings}{61} \entry {empty strings, See null strings}{68} \entry {enable breakpoint}{331} \entry {\code {enable} debugger command}{331} \entry {\code {end} debugger command}{332} \entry {\code {END} pattern}{134} \entry {\code {END} pattern, and profiling}{309} \entry {\code {END} pattern, \code {assert()} user-defined function and}{221} \entry {\code {END} pattern, Boolean patterns and}{133} \entry {\code {END} pattern, \code {exit} statement and}{146} \entry {\code {END} pattern, \code {next}/\code {nextfile} statements and}{135, 145} \entry {\code {END} pattern, operators and}{134} \entry {\code {END} pattern, \code {print} statement and}{135} \entry {\code {endfile()} user-defined function}{230} \entry {\code {ENDFILE} pattern}{135} \entry {\code {ENDFILE} pattern, Boolean patterns and}{133} \entry {\code {endgrent()} function (C library)}{246} \entry {\code {endgrent()} user-defined function}{246} \entry {\code {endpwent()} function (C library)}{242} \entry {\code {endpwent()} user-defined function}{242} \entry {English, Steve}{299} \entry {\code {ENVIRON} array}{150} \entry {environment variables used by \command {gawk}}{39} \entry {environment variables, in \code {ENVIRON} array}{150} \entry {epoch, definition of}{467} \entry {equals sign (\code {=}), \code {=} operator}{116} \entry {equals sign (\code {=}), \code {==} operator}{122, 128} \entry {EREs (Extended Regular Expressions)}{51} \entry {\code {ERRNO} variable}{150, 308} \entry {\code {ERRNO} variable, with \code {BEGINFILE} pattern}{136} \entry {\code {ERRNO} variable, with \command {close()} function}{104} \entry {\code {ERRNO} variable, with \command {getline} command}{78} \entry {error handling}{100} \entry {error handling, \code {ERRNO} variable and}{150} \entry {error output}{100} \entry {escape processing, \code {gsub()}/\code {gensub()}/\code {sub()} functions}{186} \entry {escape sequences, in strings}{46} \entry {\code {eval} debugger command}{333} \entry {evaluate expressions, in debugger}{333} \entry {evaluation order}{120} \entry {evaluation order, concatenation}{115} \entry {evaluation order, functions}{175} \entry {examining fields}{63} \entry {exclamation point (\code {!}), \code {!} operator}{125, 128, 259} \entry {exclamation point (\code {!}), \code {!=} operator}{122, 128} \entry {exclamation point (\code {!}), \code {!~} operator}{45, 52, 56, 108, 122, 123, 129, 132} \entry {\option {--exec} option}{33} \entry {\code {exit} statement}{146} \entry {exit status, of \command {gawk}}{41} \entry {exit status, of VMS}{441} \entry {exit the debugger}{338} \entry {\code {exp()} function}{176} \entry {\command {expand} utility}{25} \entry {Expat XML parser library}{408} \entry {exponent}{176} \entry {expressions}{107} \entry {expressions, as patterns}{131} \entry {expressions, assignment}{116} \entry {expressions, Boolean}{124} \entry {expressions, comparison}{120} \entry {expressions, conditional}{125} \entry {expressions, matching, See comparison expressions}{120} \entry {expressions, selecting}{125} \entry {Extended Regular Expressions (EREs)}{51} \entry {extension API}{357} \entry {extension API informational variables}{386} \entry {extension API version}{385} \entry {extension API, version number}{153} \entry {extension example}{388} \entry {extension registration}{363} \entry {extension search path}{388} \entry {extensions distributed with \command {gawk}}{398} \entry {extensions, allocating memory}{362} \entry {extensions, Brian Kernighan's \command {awk}}{415, 423} \entry {extensions, common\comma {} \code {**} operator}{114} \entry {extensions, common\comma {} \code {**=} operator}{118} \entry {extensions, common\comma {} \code {/dev/stderr} special file}{101} \entry {extensions, common\comma {} \code {/dev/stdin} special file}{101} \entry {extensions, common\comma {} \code {/dev/stdout} special file}{101} \entry {extensions, common\comma {} \code {BINMODE} variable}{437} \entry {extensions, common\comma {} \code {delete} to delete entire arrays}{169} \entry {extensions, common\comma {} \code {fflush()} function}{189} \entry {extensions, common\comma {} \code {func} keyword}{200} \entry {extensions, common\comma {} \code {length()} applied to an array}{180} \entry {extensions, common\comma {} \code {RS} as a regexp}{61} \entry {extensions, common\comma {} single character fields}{69} \entry {extensions, common\comma {} \code {{\tt \backslashcurfont }x} escape sequence}{46} \entry {extensions, in \command {gawk}, not in POSIX \command {awk}}{415} \entry {extensions, loading, \code address@hidden directive}{43} \entry {extensions, \command {mawk}}{423} \entry {extensions, where to find}{407} \entry {\code {extract.awk} program}{282} \entry {extraction, of marked strings (internationalization)}{319} \initial {F} \entry {\code {f} debugger command (alias for \code {frame})}{335} \entry {\option {-f} option}{18, 31} \entry {\option {-f} option, multiple uses}{36} \entry {\option {-F} option}{31} \entry {\option {-F} option, command-line}{69} \entry {\option {-F} option, \option {-Ft} sets \code {FS} to TAB}{36} \entry {false, logical}{120} \entry {FDL (Free Documentation License)}{487} \entry {features, adding to \command {gawk}}{448} \entry {features, deprecated}{43} \entry {features, undocumented}{44} \entry {Fenlason, Jay}{6, 425} \entry {\code {fflush()} function}{189} \entry {field numbers}{64} \entry {field operator \code {$}}{63} \entry {field operators\comma {} dollar sign as}{63} \entry {field separator, in multiline records}{76} \entry {field separator, on command line}{69} \entry {field separator, POSIX and}{71} \entry {field separators}{67, 147, 148} \entry {field separators, choice of}{67} \entry {field separators, \code {FIELDWIDTHS} variable and}{147} \entry {field separators, \code {FPAT} variable and}{147} \entry {field separators, POSIX and}{63} \entry {field separators, regular expressions as}{67, 68} \entry {field separators, See Also \code {OFS}}{66} \entry {field separators, spaces as}{253} \entry {fields}{59, 63, 460} \entry {fields, adding}{65} \entry {fields, changing contents of}{65} \entry {fields, cutting}{251} \entry {fields, examining}{63} \entry {fields, number of}{63} \entry {fields, numbers}{64} \entry {fields, printing}{89} \entry {fields, separating}{67} \entry {fields, single-character}{69} \entry {\option {--field-separator} option}{31} \entry {\code {FIELDWIDTHS} variable}{72, 147} \entry {file descriptors}{100} \entry {file inclusion, \code address@hidden directive}{42} \entry {file names, distinguishing}{150} \entry {file names, in compatibility mode}{102} \entry {file names, standard streams in \command {gawk}}{101} \entry {\option {--file} option}{31} \entry {\code {FILENAME} variable}{59, 150} \entry {\code {FILENAME} variable, \code {getline}\comma {} setting with}{83} \entry {filenames, assignments as}{232} \entry {files, \code {.gmo}}{316} \entry {files, \code {.gmo}, specifying directory of}{316, 317} \entry {files, \code {.mo}, converting from \code {.po}}{322} \entry {files, \code {.po}}{315, 319} \entry {files, \code {.po}, converting to \code {.mo}}{322} \entry {files, \code {.pot}}{315} \entry {files, \code {/dev/\dots {}} special files}{101} \entry {files, \code {/inet/\dots {}} (\command {gawk})}{307} \entry {files, \code {/inet4/\dots {}} (\command {gawk})}{307} \entry {files, \code {/inet6/\dots {}} (\command {gawk})}{307} \entry {files, \command {awk} programs in}{18} \entry {files, \code {awkprof.out}}{309} \entry {files, \file {awkvars.out}}{33} \entry {files, closing}{189} \entry {files, descriptors, See file descriptors}{100} \entry {files, group}{242} \entry {files, initialization and cleanup}{229} \entry {files, input, See input files}{18} \entry {files, log\comma {} timestamps in}{191} \entry {files, managing}{229} \entry {files, managing, data file boundaries}{229} \entry {files, message object}{316} \entry {files, message object, converting from portable object files}{322} \entry {files, message object, specifying directory of}{316, 317} \entry {files, multiple passes over}{38} \entry {files, multiple\comma {} duplicating output into}{263} \entry {files, output, See output files}{102} \entry {files, password}{238} \entry {files, portable object}{315, 319} \entry {files, portable object template}{315} \entry {files, portable object, converting to message object files}{322} \entry {files, portable object, generating}{34} \entry {files, processing\comma {} \code {ARGIND} variable and}{150} \entry {files, reading}{230} \entry {files, reading, multiline records}{76} \entry {files, searching for regular expressions}{256} \entry {files, skipping}{231} \entry {files, source\comma {} search path for}{295} \entry {files, splitting}{262} \entry {files, Texinfo\comma {} extracting programs from}{281} \entry {find substring in string}{180} \entry {finding extensions}{388} \entry {\code {finish} debugger command}{332} \entry {Fish, Fred}{426} \entry {fixed-width data}{72} \entry {flag variables}{125, 263} \entry {floating-point, numbers\comma {} arbitrary precision}{341} \entry {floating-point, VAX/VMS}{441} \entry {flush buffered output}{189} \entry {\code {fnmatch()} extension function}{401} \entry {\code {FNR} variable}{59, 151} \entry {\code {FNR} variable, changing}{155} \entry {\code {for} statement}{140} \entry {\code {for} statement, looping over arrays}{163} \entry {\code {fork()} extension function}{402} \entry {format specifiers}{92} \entry {format specifiers, mixing regular with positional specifiers}{320} \entry {format specifiers, \code {printf} statement}{93} \entry {format specifiers, \code {strftime()} function (\command {gawk})}{193} \entry {format time string}{192} \entry {formats\comma {} numeric output}{92} \entry {formatting output}{92} \entry {formatting strings}{183} \entry {forward slash (\code {/}) to enclose regular expressions}{45} \entry {forward slash (\code {/}), \code {/} operator}{128} \entry {forward slash (\code {/}), \code {/=} operator}{118, 129} \entry {forward slash (\code {/}), \code {/=} operator, vs. \code {/=\dots {}/} regexp constant}{118} \entry {forward slash (\code {/}), patterns and}{132} \entry {\code {FPAT} variable}{74, 147} \entry {\code {frame} debugger command}{335} \entry {Free Documentation License (FDL)}{487} \entry {Free Software Foundation (FSF)}{10, 429, 468, 469} \entry {FreeBSD}{474} \entry {\code {FS} variable}{67, 147} \entry {\code {FS} variable, as null string}{69} \entry {\code {FS} variable, as TAB character}{36} \entry {\code {FS} variable, changing value of}{67} \entry {\code {FS} variable, \code {--field-separator} option and}{31} \entry {\code {FS} variable, running \command {awk} programs and}{252} \entry {\code {FS} variable, setting from command line}{69} \entry {\code {FS}, containing \code {^}}{69} \entry {\code {FS}, in multiline records}{76} \entry {FSF (Free Software Foundation)}{10, 429, 468, 469} \entry {\code {fts()} extension function}{399} \entry {\code {FUNCTAB} array}{151} \entry {function calls}{126} \entry {function calls, indirect}{208} \entry {function calls, indirect, \code address@hidden for}{209} \entry {function definition example}{201} \entry {function pointers}{208} \entry {functions, arrays as parameters to}{205} \entry {functions, built-in}{126, 175} \entry {functions, built-in, evaluation order}{175} \entry {functions, defining}{199} \entry {functions, library}{217} \entry {functions, library, assertions}{220} \entry {functions, library, associative arrays and}{218} \entry {functions, library, C library}{233} \entry {functions, library, character values as numbers}{223} \entry {functions, library, Cliff random numbers}{223} \entry {functions, library, command-line options}{233} \entry {functions, library, example program for using}{285} \entry {functions, library, group database\comma {} reading}{242} \entry {functions, library, managing data files}{229} \entry {functions, library, managing time}{225} \entry {functions, library, merging arrays into strings}{225} \entry {functions, library, rounding numbers}{222} \entry {functions, library, user database\comma {} reading}{238} \entry {functions, names of}{199} \entry {functions, recursive}{200} \entry {functions, string-translation}{198} \entry {functions, undefined}{206} \entry {functions, user-defined}{199} \entry {functions, user-defined, calling}{202} \entry {functions, user-defined, counts, in a profile}{311} \entry {functions, user-defined, library of}{217} \entry {functions, user-defined, \code {next}/\code {nextfile} statements and}{145, 146} \initial {G} \entry {\option {-g} option}{34} \entry {G., Daniel Richard}{12, 443} \entry {Garfinkle, Scott}{425} \entry {\command {gawk} program, dynamic profiling}{311} \entry {\command {gawk} version}{152} \entry {\command {gawk}, \code {ARGIND} variable in}{37} \entry {\command {gawk}, \command {awk} and}{5, 7} \entry {\command {gawk}, bitwise operations in}{196} \entry {\command {gawk}, \code {break} statement in}{143} \entry {\command {gawk}, character classes and}{52} \entry {\command {gawk}, coding style in}{448} \entry {\command {gawk}, command-line options, and regular expressions}{55} \entry {\command {gawk}, configuring}{434} \entry {\command {gawk}, configuring, options}{433} \entry {\command {gawk}, \code {continue} statement in}{144} \entry {\command {gawk}, distribution}{430} \entry {\command {gawk}, \code {ERRNO} variable in}{78, 104, 136, 150, 308} \entry {\command {gawk}, escape sequences}{47} \entry {\command {gawk}, extensions\comma {} disabling}{35} \entry {\command {gawk}, features, adding}{448} \entry {\command {gawk}, features, advanced}{299} \entry {\command {gawk}, field separators and}{148} \entry {\command {gawk}, \code {FIELDWIDTHS} variable in}{72, 147} \entry {\command {gawk}, file names in}{101} \entry {\command {gawk}, format-control characters}{93, 94} \entry {\command {gawk}, \code {FPAT} variable in}{74, 147} \entry {\command {gawk}, \code {FUNCTAB} array in}{151} \entry {\command {gawk}, function arguments and}{175} \entry {\command {gawk}, hexadecimal numbers and}{108} \entry {\command {gawk}, \code {IGNORECASE} variable in}{56, 148, 161, 178, 305} \entry {\command {gawk}, implementation issues}{447} \entry {\command {gawk}, implementation issues, debugging}{447} \entry {\command {gawk}, implementation issues, downward compatibility}{447} \entry {\command {gawk}, implementation issues, limits}{83} \entry {\command {gawk}, implementation issues, pipes}{99} \entry {\command {gawk}, installing}{429} \entry {\command {gawk}, internationalization and, See internationalization}{315} \entry {\command {gawk}, interpreter\comma {} adding code to}{397} \entry {\command {gawk}, interval expressions and}{50} \entry {\command {gawk}, line continuation in}{126} \entry {\command {gawk}, \code {LINT} variable in}{148} \entry {\command {gawk}, list of contributors to}{425} \entry {\command {gawk}, MS-DOS version of}{437} \entry {\command {gawk}, MS-Windows version of}{437} \entry {\command {gawk}, newlines in}{27} \entry {\command {gawk}, octal numbers and}{108} \entry {\command {gawk}, OS/2 version of}{437} \entry {\command {gawk}, predefined variables and}{147} \entry {\command {gawk}, \code {PROCINFO} array in}{151, 153, 192, 307} \entry {\command {gawk}, regexp constants and}{109} \entry {\command {gawk}, regular expressions, case sensitivity}{56} \entry {\command {gawk}, regular expressions, operators}{54} \entry {\command {gawk}, regular expressions, precedence}{50} \entry {\command {gawk}, \code {RT} variable in}{61, 78, 153} \entry {\command {gawk}, See Also \command {awk}}{5} \entry {\command {gawk}, source code\comma {} obtaining}{429} \entry {\command {gawk}, splitting fields and}{73} \entry {\command {gawk}, string-translation functions}{198} \entry {\command {gawk}, \code {SYMTAB} array in}{153} \entry {\command {gawk}, \code {TEXTDOMAIN} variable in}{149} \entry {\command {gawk}, timestamps}{191} \entry {\command {gawk}, uses for}{5} \entry {\command {gawk}, versions of, information about\comma {} printing}{36} \entry {\command {gawk}, VMS version of}{439} \entry {\command {gawk}, word-boundary operator}{55} \entry {\code {gawkextlib}}{407} \entry {\code {gawkextlib} project}{407} \entry {G-d}{12} \entry {General Public License (GPL)}{469} \entry {General Public License, See GPL}{10} \entry {generate time values}{192} \entry {\option {--gen-pot} option}{34, 319} \entry {\code {gensub()} function (\command {gawk})}{109, 178} \entry {\code {gensub()} function (\command {gawk}), escape processing}{186} \entry {\code {getaddrinfo()} function (C library)}{308} \entry {\code {getgrent()} function (C library)}{242, 246} \entry {\code {getgrent()} user-defined function}{242, 246} \entry {\code {getgrgid()} function (C library)}{245} \entry {\code {getgrgid()} user-defined function}{245} \entry {\code {getgrnam()} function (C library)}{245} \entry {\code {getgrnam()} user-defined function}{245} \entry {\code {getgruser()} function (C library)}{246} \entry {\code {getgruser()} function, user-defined}{246} \entry {\code {getline} command}{59} \entry {\code {getline} command, \code {_gr_init()} user-defined function}{243} \entry {\code {getline} command, \code {_pw_init()} function}{241} \entry {\code {getline} command, coprocesses\comma {} using from}{82, 102} \entry {\code {getline} command, deadlock and}{306} \entry {\code {getline} command, explicit input with}{78} \entry {\code {getline} command, \code {FILENAME} variable and}{83} \entry {\code {getline} command, return values}{78} \entry {\code {getline} command, variants}{84} \entry {\code {getline} from a file}{80} \entry {\code {getline} into a variable}{79} \entry {\code {getline} statement, \code {BEGINFILE}/\code {ENDFILE} patterns and}{136} \entry {\code {getlocaltime()} user-defined function}{225} \entry {\code {getopt()} function (C library)}{233} \entry {\code {getopt()} user-defined function}{235} \entry {\code {getpwent()} function (C library)}{238, 241} \entry {\code {getpwent()} user-defined function}{238, 241} \entry {\code {getpwnam()} function (C library)}{241} \entry {\code {getpwnam()} user-defined function}{241} \entry {\code {getpwuid()} function (C library)}{241} \entry {\code {getpwuid()} user-defined function}{241} \entry {\command {gettext} library}{315} \entry {\command {gettext} library, locale categories}{316} \entry {\code {gettext()} function (C library)}{316} \entry {\code {gettimeofday()} extension function}{407} \entry {\command {git} utility}{408, 444, 447, 449} \entry {Git, use of for \command {gawk} source code}{451} \entry {GNITS mailing list}{12} \entry {GNU \command {awk}, See \command {gawk}}{5} \entry {GNU Free Documentation License}{487} \entry {GNU General Public License}{469} \entry {GNU Lesser General Public License}{470} \entry {GNU long options}{31} \entry {GNU long options, printing list of}{34} \entry {GNU Project}{10, 469} \entry {GNU/Linux}{10, 322, 474} \entry {Gordon, Assaf}{426} \entry {GPL (General Public License)}{10, 469} \entry {GPL (General Public License), printing}{32} \entry {\command {grcat} program}{242} \entry {Grigera, Juan}{426} \entry {group database, reading}{242} \entry {group file}{242} \entry {group ID of \command {gawk} user}{152} \entry {groups\comma {} information about}{242} \entry {\code {gsub()} function}{109, 179} \entry {\code {gsub()} function, arguments of}{185} \entry {\code {gsub()} function, escape processing}{186} \initial {H} \entry {\code {h} debugger command (alias for \code {help})}{338} \entry {\option {-h} option}{34} \entry {Hankerson, Darrel}{12, 426} \entry {Haque, John}{426} \entry {Hartholz, Elaine}{12} \entry {Hartholz, Marshall}{12} \entry {Hasegawa, Isamu}{426} \entry {\code {help} debugger command}{338} \entry {\option {--help} option}{34} \entry {hexadecimal numbers}{107} \entry {hexadecimal values\comma {} enabling interpretation of}{35} \entry {history expansion, in debugger}{338} \entry {\code {histsort.awk} program}{280} \entry {Hughes, Phil}{12} \entry {\code {HUP} signal, for dynamic profiling}{312} \entry {hyphen (\code {-}), \code {--} operator}{119, 128} \entry {hyphen (\code {-}), \code {-=} operator}{118, 129} \entry {hyphen (\code {-}), filenames beginning with}{32} \entry {hyphen (\code {-}), in bracket expressions}{51} \initial {I} \entry {\code {i} debugger command (alias for \code {info})}{335} \entry {\option {-i} option}{34} \entry {\command {id} utility}{260} \entry {\code {id.awk} program}{260} \entry {\code {if} statement}{138} \entry {\code {if} statement, actions\comma {} changing}{133} \entry {\code {if} statement, use of regexps in}{45} \entry {\code {igawk.sh} program}{287} \entry {ignore breakpoint}{331} \entry {\code {ignore} debugger command}{331} \entry {\code {IGNORECASE} variable}{148} \entry {\code {IGNORECASE} variable, and array indices}{161} \entry {\code {IGNORECASE} variable, and array sorting functions}{305} \entry {\code {IGNORECASE} variable, in example programs}{217} \entry {\code {IGNORECASE} variable, with \code {~} and \code {!~} operators}{56} \entry {Illumos}{445} \entry {Illumos, POSIX-compliant \command {awk}}{445} \entry {implementation issues, \command {gawk}}{447} \entry {implementation issues, \command {gawk}, limits}{83, 99} \entry {implementation issues\comma {} \command {gawk}, debugging}{447} \entry {\code {in} operator}{122, 129, 141} \entry {\code {in} operator, index existence in multidimensional arrays}{170} \entry {\code {in} operator, order of array access}{163} \entry {\code {in} operator, testing if array element exists}{161} \entry {\code {in} operator, use in loops}{163} \entry {\code address@hidden directive}{42} \entry {\option {--include} option}{34} \entry {including files, \code address@hidden directive}{42} \entry {increment operators}{119} \entry {\code {index()} function}{180} \entry {indexing arrays}{160} \entry {indirect function calls}{208} \entry {indirect function calls, \code address@hidden \entry {infinite precision}{341} \entry {\code {info} debugger command}{335} \entry {initialization, automatic}{27} \entry {\code {inplace} extension}{402} \entry {input files}{59} \entry {input files, closing}{102} \entry {input files, counting elements in}{269} \entry {input files, examples}{23} \entry {input files, reading}{59} \entry {input files, running \command {awk} without}{18} \entry {input files, variable assignments and}{38} \entry {input pipeline}{81} \entry {input record, length of}{180} \entry {input redirection}{80} \entry {input, data\comma {} nondecimal}{299} \entry {input, explicit}{78} \entry {input, files, See input files}{76} \entry {input, multiline records}{76} \entry {input, splitting into records}{59} \entry {input, standard}{18, 100} \entry {input/output functions}{189} \entry {input/output, binary}{147} \entry {input/output, from \code {BEGIN} and \code {END}}{135} \entry {input/output, two-way}{306} \entry {insomnia, cure for}{272} \entry {installation, VMS}{439} \entry {installing \command {gawk}}{429} \entry {instruction tracing, in debugger}{336} \entry {\code {int()} function}{176} \entry {\code {INT} signal (MS-Windows)}{312} \entry {integer array indices}{167} \entry {integers, arbitrary precision}{350} \entry {integers, unsigned}{341} \entry {interacting with other programs}{190} \entry {internationalization}{198, 315} \entry {internationalization, localization}{149, 315} \entry {internationalization, localization, character classes}{52} \entry {internationalization, localization, \command {gawk} and}{315} \entry {internationalization, localization, locale categories}{316} \entry {internationalization, localization, marked strings}{317} \entry {internationalization, localization, portability and}{320} \entry {internationalizing a program}{315} \entry {interpreted programs}{459, 469} \entry {interval expressions, regexp operator}{50} \entry {\code {inventory-shipped} file}{23} \entry {invoke shell command}{190} \entry {\code {isarray()} function (\command {gawk})}{198} \entry {ISO}{470} \entry {ISO 8859-1}{465} \entry {ISO Latin-1}{465} \initial {J} \entry {Jacobs, Andrew}{239} \entry {Jaegermann, Michal}{12, 426} \entry {Java implementation of \command {awk}}{445} \entry {Java programming language}{470} \entry {\command {jawk}}{445} \entry {Jedi knights}{44} \entry {Johansen, Chris}{293} \entry {\code {join()} user-defined function}{225} \initial {K} \entry {Kahrs, J\"urgen}{12, 426} \entry {Kasal, Stepan}{12} \entry {Kenobi, Obi-Wan}{44} \entry {Kernighan, Brian}{6, 10, 12, 81, 115, 217, 415, 425, 444, 461, 466} \entry {\command {kill} command\comma {} dynamic profiling}{312} \entry {Knights, jedi}{44} \entry {Kwok, Conrad}{425} \initial {L} \entry {\code {l} debugger command (alias for \code {list})}{338} \entry {\option {-l} option}{34} \entry {\option {-L} option}{36} \entry {\code {labels.awk} program}{277} \entry {Langston, Peter}{299} \entry {languages\comma {} data-driven}{460} \entry {\code {LC_ALL} locale category}{317} \entry {\code {LC_COLLATE} locale category}{316} \entry {\code {LC_CTYPE} locale category}{316} \entry {\code {LC_MESSAGES} locale category}{316} \entry {\code {LC_MESSAGES} locale category, \code {bindtextdomain()} function (\command {gawk})}{318} \entry {\code {LC_MONETARY} locale category}{316} \entry {\code {LC_NUMERIC} locale category}{317} \entry {\code {LC_TIME} locale category}{317} \entry {left angle bracket (\code {<}), \code {<} operator}{122, 128} \entry {left angle bracket (\code {<}), \code {<} operator (I/O)}{80} \entry {left angle bracket (\code {<}), \code {<=} operator}{122, 128} \entry {left shift}{197} \entry {left shift, bitwise}{196} \entry {leftmost longest match}{76} \entry {length of input record}{180} \entry {length of string}{180} \entry {\code {length()} function}{180} \entry {Lesser General Public License (LGPL)}{470} \entry {LGPL (Lesser General Public License)}{470} \entry {libmawk}{445} \entry {libraries of \command {awk} functions}{217} \entry {libraries of \command {awk} functions, assertions}{220} \entry {libraries of \command {awk} functions, associative arrays and}{218} \entry {libraries of \command {awk} functions, character values as numbers}{223} \entry {libraries of \command {awk} functions, command-line options}{233} \entry {libraries of \command {awk} functions, example program for using}{285} \entry {libraries of \command {awk} functions, group database, reading}{242} \entry {libraries of \command {awk} functions, managing, data files}{229} \entry {libraries of \command {awk} functions, managing, time}{225} \entry {libraries of \command {awk} functions, merging arrays into strings}{225} \entry {libraries of \command {awk} functions, rounding numbers}{222} \entry {libraries of \command {awk} functions, user database, reading}{238} \entry {line breaks}{27} \entry {line continuations}{125} \entry {line continuations, \command {gawk}}{126} \entry {line continuations, in \code {print} statement}{90} \entry {line continuations, with C shell}{27} \entry {lines, blank, printing}{89} \entry {lines, counting}{269} \entry {lines, duplicate\comma {} removing}{280} \entry {lines, matching ranges of}{133} \entry {lines, skipping between markers}{133} \entry {lint checking}{148} \entry {lint checking, array elements}{168} \entry {lint checking, array subscripts}{168} \entry {lint checking, empty programs}{31} \entry {lint checking, issuing warnings}{34} \entry {lint checking, \env {POSIXLY_CORRECT} environment variable}{37} \entry {lint checking, undefined functions}{206} \entry {\option {--lint} option}{31, 34} \entry {\code {LINT} variable}{148} \entry {\option {--lint-old} option}{36} \entry {Linux}{10, 322, 474} \entry {list all global variables, in debugger}{336} \entry {\code {list} debugger command}{338} \entry {list function definitions, in debugger}{335} \entry {\code address@hidden directive}{43} \entry {\option {--load} option}{34} \entry {loading extensions, \code address@hidden directive}{43} \entry {loading, extensions}{34} \entry {local variables, in a function}{203} \entry {locale categories}{316} \entry {locale decimal point character}{36} \entry {locale, definition of}{129} \entry {localization}{315} \entry {localization, See internationalization\comma {} localization}{315} \entry {log files, timestamps in}{191} \entry {\code {log()} function}{176} \entry {logarithm}{176} \entry {logical false/true}{120} \entry {logical operators, See Boolean expressions}{124} \entry {login information}{238} \entry {long options}{31} \entry {loops}{139} \entry {loops, \code {break} statement and}{142} \entry {loops, \code {continue} statements and}{141} \entry {loops, count for header, in a profile}{311} \entry {loops, \code {do}-\code {while}}{140} \entry {loops, exiting}{142} \entry {loops, \code {for}, array scanning}{163} \entry {loops, \code {for}, iterative}{140} \entry {loops, See Also \code {while} statement}{139} \entry {loops, \code {while}}{139} \entry {\command {ls} utility}{26} \entry {\code {lshift()} function (\command {gawk})}{197} \entry {lvalues/rvalues}{116} \initial {M} \entry {\option {-M} option}{35} \entry {mailing labels\comma {} printing}{276} \entry {mailing list, GNITS}{12} \entry {\code {mail-list} file}{23} \entry {Malmberg, John}{12, 443} \entry {Malmberg, John E.}{427} \entry {mark parity}{224} \entry {marked string extraction (internationalization)}{319} \entry {marked strings\comma {} extracting}{319} \entry {Marx, Groucho}{120} \entry {match regexp in string}{180} \entry {\code {match()} function}{180} \entry {\code {match()} function, \code {RSTART}/\code {RLENGTH} variables}{181} \entry {matching, expressions, See comparison expressions}{120} \entry {matching, leftmost longest}{76} \entry {matching, null strings}{186} \entry {\command {mawk} utility}{47, 82, 115, 146, 444} \entry {maximum precision supported by MPFR library}{153} \entry {McIlroy, Doug}{467} \entry {McPhee, Patrick}{426} \entry {message object files}{316} \entry {message object files, converting from portable object files}{322} \entry {message object files, specifying directory of}{316, 317} \entry {messages from extensions}{371} \entry {metacharacters in regular expressions}{48} \entry {metacharacters, escape sequences for}{48} \entry {minimum precision required by MPFR library}{153} \entry {\code {mktime()} function (\command {gawk})}{192} \entry {modifiers\comma {} in format specifiers}{94} \entry {monetary information, localization}{316} \entry {Moore, Duncan}{83} \entry {\command {msgfmt} utility}{322} \entry {multiple precision}{341} \entry {multiple-line records}{76} \initial {N} \entry {\code {n} debugger command (alias for \code {next})}{332} \entry {\option {-n} option}{35} \entry {\option {-N} option}{35} \entry {names, arrays/variables}{218} \entry {names, functions}{199, 218} \entry {namespace issues}{218} \entry {namespace issues, functions}{199} \entry {NetBSD}{474} \entry {networks, programming}{307} \entry {networks, support for}{101} \entry {newlines}{27, 36, 125} \entry {newlines, as field separators}{68} \entry {newlines, as record separators}{59} \entry {newlines, in dynamic regexps}{54} \entry {newlines, in regexp constants}{54} \entry {newlines, printing}{89} \entry {newlines, separating statements in actions}{137, 138} \entry {\code {next} debugger command}{332} \entry {\code {next file} statement}{420} \entry {\code {next} statement}{125, 144} \entry {\code {next} statement, \code {BEGIN}/\code {END} patterns and}{135} \entry {\code {next} statement, \code {BEGINFILE}/\code {ENDFILE} patterns and}{136} \entry {\code {next} statement, user-defined functions and}{145} \entry {\code {nextfile} statement}{145} \entry {\code {nextfile} statement, \code {BEGIN}/\code {END} patterns and}{135} \entry {\code {nextfile} statement, \code {BEGINFILE}/\code {ENDFILE} patterns and}{136} \entry {\code {nextfile} statement, user-defined functions and}{146} \entry {\code {nexti} debugger command}{332} \entry {\code {NF} variable}{63, 151} \entry {\code {NF} variable, decrementing}{66} \entry {\code {ni} debugger command (alias for \code {nexti})}{332} \entry {\code {noassign.awk} program}{233} \entry {\option {--non-decimal-data} option}{35, 299} \entry {\option {--non-decimal-data} option, \code {strtonum()} function and}{299} \entry {non-existent array elements}{161} \entry {not Boolean-logic operator}{124} \entry {\code address@hidden for indirect function calls}{209} \entry {\code {NR} variable}{59, 151} \entry {\code {NR} variable, changing}{155} \entry {null strings}{61, 68, 120, 461} \entry {null strings in \command {gawk} arguments, quoting and}{22} \entry {null strings, and deleting array elements}{168} \entry {null strings, as array subscripts}{168} \entry {null strings, converting numbers to strings}{112} \entry {null strings, matching}{186} \entry {number as string of bits}{198} \entry {number of array elements}{180} \entry {number sign (\code {#}), \code {#!} (executable scripts)}{19} \entry {number sign (\code {#}), commenting}{20} \entry {numbers, as array subscripts}{167} \entry {numbers, as values of characters}{223} \entry {numbers, Cliff random}{223} \entry {numbers, converting}{111, 198} \entry {numbers, converting, to strings}{147, 148} \entry {numbers, hexadecimal}{107} \entry {numbers, octal}{107} \entry {numbers, rounding}{222} \entry {numeric constants}{107} \entry {numeric functions}{176} \entry {numeric, output format}{92} \entry {numeric, strings}{121} \initial {O} \entry {\code {o} debugger command (alias for \code {option})}{336} \entry {\option {-o} option}{35} \entry {\option {-O} option}{35} \entry {obsolete features}{43} \entry {octal numbers}{107} \entry {octal values\comma {} enabling interpretation of}{35} \entry {\code {OFMT} variable}{92, 112, 148} \entry {\code {OFMT} variable, POSIX \command {awk} and}{92} \entry {\code {OFS} variable}{66, 91, 148} \entry {OpenBSD}{474} \entry {OpenSolaris}{445} \entry {operating systems, BSD-based}{10} \entry {operating systems, PC, \command {gawk} on}{437} \entry {operating systems, PC\comma {} \command {gawk} on, installing}{435} \entry {operating systems, porting \command {gawk} to}{449} \entry {operating systems, See Also GNU/Linux\comma {} PC operating systems\comma {} Unix}{429} \entry {operations, bitwise}{196} \entry {operators, arithmetic}{114} \entry {operators, assignment}{116} \entry {operators, assignment, evaluation order}{118} \entry {operators, Boolean, See Boolean expressions}{124} \entry {operators, decrement/increment}{119} \entry {operators, GNU-specific}{54} \entry {operators, input/output}{80, 81, 82, 98, 99, 128} \entry {operators, logical, See Boolean expressions}{124} \entry {operators, precedence}{120, 128} \entry {operators, relational, See operators\comma {} comparison}{120} \entry {operators, short-circuit}{125} \entry {operators, string}{115} \entry {operators, string-matching}{45} \entry {operators, string-matching, for buffers}{55} \entry {operators, word-boundary (\command {gawk})}{55} \entry {\option {--optimize} option}{35} \entry {\code {option} debugger command}{336} \entry {options, command-line}{31} \entry {options, command-line, end of}{32} \entry {options, command-line, invoking \command {awk}}{31} \entry {options, command-line, processing}{233} \entry {options, deprecated}{43} \entry {options, long}{31} \entry {options, printing list of}{34} \entry {or Boolean-logic operator}{124} \entry {\code {or()} function (\command {gawk})}{197} \entry {OR bitwise operation}{196} \entry {\code {ord()} extension function}{404} \entry {\code {ord()} user-defined function}{223} \entry {order of evaluation, concatenation}{115} \entry {\code {ORS} variable}{91, 148} \entry {output field separator, See \code {OFS} variable}{66} \entry {output record separator, See \code {ORS} variable}{91} \entry {output redirection}{97} \entry {output wrapper}{368} \entry {output, buffering}{189, 191} \entry {output, duplicating into files}{263} \entry {output, files\comma {} closing}{102} \entry {output, format specifier\comma {} \code {OFMT}}{92} \entry {output, formatted}{92} \entry {output, pipes}{98} \entry {output, printing, See printing}{89} \entry {output, records}{91} \entry {output, standard}{100} \initial {P} \entry {\code {p} debugger command (alias for \code {print})}{333} \entry {\option {-p} option}{35} \entry {\option {-P} option}{35} \entry {Papadopoulos, Panos}{427} \entry {parent process ID of \command {gawk} process}{152} \entry {parentheses \code {()}, in a profile}{311} \entry {parentheses \code {()}, regexp operator}{49} \entry {password file}{238} \entry {\code {patsplit()} function (\command {gawk})}{182} \entry {patterns}{131} \entry {patterns, comparison expressions as}{132} \entry {patterns, counts, in a profile}{311} \entry {patterns, default}{24} \entry {patterns, empty}{136} \entry {patterns, expressions as}{131} \entry {patterns, ranges in}{133} \entry {patterns, regexp constants as}{132} \entry {patterns, types of}{131} \entry {\command {pawk} (profiling version of Brian Kernighan's \command {awk})}{445} \entry {\code {pawk}, \command {awk}-like facilities for Python}{445} \entry {PC operating systems, \command {gawk} on}{437} \entry {PC operating systems\comma {} \command {gawk} on, installing}{435} \entry {percent sign (\code {%}), \code {%} operator}{128} \entry {percent sign (\code {%}), \code {%=} operator}{118, 129} \entry {period (\code {.}), regexp operator}{48} \entry {Perl}{453} \entry {Peters, Arno}{426} \entry {Peterson, Hal}{425} \entry {pipe, closing}{102} \entry {pipe, input}{81} \entry {pipe, output}{98} \entry {Pitts, Dave}{12, 443} \entry {Plauger, P.J.\:}{217} \entry {plug-in}{355} \entry {plus sign (\code {+}), \code {+} operator}{128} \entry {plus sign (\code {+}), \code {++} operator}{119, 128} \entry {plus sign (\code {+}), \code {+=} operator}{117, 129} \entry {plus sign (\code {+}), regexp operator}{49} \entry {pointers to functions}{208} \entry {portability}{47} \entry {portability, \code {#!} (executable scripts)}{20} \entry {portability, \code {**} operator and}{115} \entry {portability, \code {**=} operator and}{118} \entry {portability, \code {ARGV} variable}{20} \entry {portability, backslash continuation and}{28} \entry {portability, backslash in escape sequences}{47} \entry {portability, \code {close()} function and}{103} \entry {portability, data files as single record}{63} \entry {portability, deleting array elements}{169} \entry {portability, example programs}{217} \entry {portability, functions\comma {} defining}{201} \entry {portability, \command {gawk}}{449} \entry {portability, \command {gettext} library and}{315} \entry {portability, internationalization and}{320} \entry {portability, \code {length()} function}{180} \entry {portability, new \command {awk} vs.\: old \command {awk}}{112} \entry {portability, \code {next} statement in user-defined functions}{206} \entry {portability, \code {NF} variable\comma {} decrementing}{66} \entry {portability, operators}{120} \entry {portability, operators, not in POSIX \command {awk}}{129} \entry {portability, \env {POSIXLY_CORRECT} environment variable}{37} \entry {portability, \code {substr()} function}{185} \entry {portable object files}{315, 319} \entry {portable object files, converting to message object files}{322} \entry {portable object files, generating}{34} \entry {portable object template files}{315} \entry {porting \command {gawk}}{449} \entry {positional specifiers, \code {printf} statement}{94, 319} \entry {positional specifiers, \code {printf} statement, mixing with regular formats}{320} \entry {\option {--posix} option}{35} \entry {\option {--posix} option, \code {--traditional} option and}{36} \entry {POSIX \command {awk}}{7, 118} \entry {POSIX \command {awk}, \code {<} operator and}{80} \entry {POSIX \command {awk}, \code {**} operator and}{129} \entry {POSIX \command {awk}, \code {**=} operator and}{118} \entry {POSIX \command {awk}, \code {|} I/O operator and}{82} \entry {POSIX \command {awk}, arithmetic operators and}{114} \entry {POSIX \command {awk}, backslashes in string constants}{47} \entry {POSIX \command {awk}, \code {BEGIN}/\code {END} patterns}{135} \entry {POSIX \command {awk}, bracket expressions and}{51} \entry {POSIX \command {awk}, bracket expressions and, character classes}{51, 52} \entry {POSIX \command {awk}, \code {break} statement and}{143} \entry {POSIX \command {awk}, changes in \command {awk} versions}{414} \entry {POSIX \command {awk}, \code {continue} statement and}{144} \entry {POSIX \command {awk}, \code {CONVFMT} variable and}{147} \entry {POSIX \command {awk}, \code {date} utility and}{195} \entry {POSIX \command {awk}, field separators and}{63, 71} \entry {POSIX \command {awk}, \code {FS} variable and}{148} \entry {POSIX \command {awk}, \code {function} keyword in}{200} \entry {POSIX \command {awk}, functions and, \code {gsub()}/\code {sub()}}{187} \entry {POSIX \command {awk}, functions and, \code {length()}}{180} \entry {POSIX \command {awk}, GNU long options and}{31} \entry {POSIX \command {awk}, interval expressions in}{50} \entry {POSIX \command {awk}, \code {next}/\code {nextfile} statements and}{145} \entry {POSIX \command {awk}, numeric strings and}{121} \entry {POSIX \command {awk}, \code {OFMT} variable and}{92, 112} \entry {POSIX \command {awk}, period (\code {.})\comma {} using}{49} \entry {POSIX \command {awk}, \code {printf} format strings and}{96} \entry {POSIX \command {awk}, regular expressions and}{50} \entry {POSIX \command {awk}, timestamps and}{191} \entry {POSIX mode}{35, 37} \entry {POSIX, \command {awk} and}{5} \entry {POSIX, \command {gawk} extensions not included in}{415} \entry {POSIX, programs\comma {} implementing in \command {awk}}{251} \entry {\env {POSIXLY_CORRECT} environment variable}{37} \entry {\code {PREC} variable}{149} \entry {precedence}{120, 128} \entry {precedence, regexp operators}{50} \entry {predefined variables}{147} \entry {predefined variables, conveying information}{149} \entry {predefined variables, user-modifiable}{147} \entry {predefined variables, \code {-v} option\comma {} setting with}{32} \entry {\option {--pretty-print} option}{35} \entry {\code {print} debugger command}{333} \entry {\code {print} statement}{89} \entry {\code {print} statement, \code {BEGIN}/\code {END} patterns and}{135} \entry {\code {print} statement, commas, omitting}{90} \entry {\code {print} statement, I/O operators in}{128} \entry {\code {print} statement, line continuations and}{90} \entry {\code {print} statement, \code {OFMT} variable and}{148} \entry {\code {print} statement, See Also redirection\comma {} of output}{98} \entry {\code {print} statement, \code {sprintf()} function and}{222} \entry {print variables, in debugger}{333} \entry {\code {printf} debugger command}{334} \entry {\code {printf} statement}{89, 92} \entry {\code {printf} statement, columns\comma {} aligning}{90} \entry {\code {printf} statement, format-control characters}{93} \entry {\code {printf} statement, I/O operators in}{128} \entry {\code {printf} statement, modifiers}{94} \entry {\code {printf} statement, positional specifiers}{94, 319} \entry {\code {printf} statement, positional specifiers, mixing with regular formats}{320} \entry {\code {printf} statement, See Also redirection\comma {} of output}{98} \entry {\code {printf} statement, \code {sprintf()} function and}{222} \entry {\code {printf} statement, syntax of}{92} \entry {printing}{89} \entry {printing messages from extensions}{371} \entry {printing, list of options}{34} \entry {printing, mailing labels}{276} \entry {printing, unduplicated lines of text}{265} \entry {printing, user information}{260} \entry {private variables}{218} \entry {process group ID of \command {gawk} process}{152} \entry {process ID of \command {gawk} process}{152} \entry {processes, two-way communications with}{305} \entry {processing data}{459} \entry {\code {PROCINFO} array}{151, 192, 238} \entry {\code {PROCINFO} array, and communications via ptys}{307} \entry {\code {PROCINFO} array, and group membership}{242} \entry {\code {PROCINFO} array, and user and group ID numbers}{260} \entry {\code {PROCINFO} array, testing the field splitting}{241} \entry {\code {PROCINFO} array, uses}{153} \entry {\code {PROCINFO}, values of \code {sorted_in}}{165} \entry {\option {--profile} option}{35, 309} \entry {profiling \command {awk} programs}{309} \entry {profiling \command {awk} programs, dynamically}{311} \entry {program identifiers}{151} \entry {program, definition of}{17} \entry {programming conventions, \code {ARGC}/\code {ARGV} variables}{150} \entry {programming conventions, \code {exit} statement}{146} \entry {programming conventions, function parameters}{207} \entry {programming conventions, functions, calling}{175} \entry {programming conventions, functions, writing}{200} \entry {programming conventions, \command {gawk} extensions}{391} \entry {programming conventions, \code {--non-decimal-data} option}{299} \entry {programming conventions, private variable names}{218} \entry {programming language, recipe for}{6} \entry {programming languages, Ada}{463} \entry {programming languages, Java}{470} \entry {programming languages\comma {} data-driven vs.\: procedural}{17} \entry {programming, basic steps}{459} \entry {programming, concepts}{459} \entry {\command {pwcat} program}{238} \initial {Q} \entry {\code {q} debugger command (alias for \code {quit})}{338} \entry {QSE \command {awk}}{445} \entry {Quanstrom, Erik}{272} \entry {question mark (\code {?}), \code {?:} operator}{129} \entry {question mark (\code {?}), regexp operator}{49, 55} \entry {QuikTrim Awk}{445} \entry {\code {quit} debugger command}{338} \entry {\code {QUIT} signal (MS-Windows)}{312} \entry {quoting in \command {gawk} command lines}{19} \entry {quoting in \command {gawk} command lines, tricks for}{22} \entry {quoting, for small awk programs}{20} \initial {R} \entry {\code {r} debugger command (alias for \code {run})}{332} \entry {\option {-r} option}{36} \entry {Rakitzis, Byron}{280} \entry {Ramey, Chet}{12, 359} \entry {\code {rand()} function}{176} \entry {random numbers, Cliff}{223} \entry {random numbers, \code {rand()}/\code {srand()} functions}{176} \entry {random numbers, seed of}{176} \entry {range expressions (regexps)}{50} \entry {range patterns}{133} \entry {range patterns, line continuation and}{134} \entry {Rankin, Pat}{12, 117, 425} \entry {\code {reada()} extension function}{406} \entry {readable data files\comma {} checking}{231} \entry {\code {readable.awk} program}{231} \entry {\code {readdir} extension}{404} \entry {\code {readfile()} extension function}{406} \entry {\code {readfile()} user-defined function}{227} \entry {reading input files}{59} \entry {recipe for a programming language}{6} \entry {record separators}{59, 149} \entry {record separators, changing}{60} \entry {record separators, regular expressions as}{61} \entry {record separators, with multiline records}{76} \entry {records}{59, 460} \entry {records, multiline}{76} \entry {records, printing}{89} \entry {records, splitting input into}{59} \entry {records, terminating}{61} \entry {records, treating files as}{63} \entry {recursive functions}{200} \entry {redirect \command {gawk} output, in debugger}{336} \entry {redirection of input}{80} \entry {redirection of output}{97} \entry {reference counting, sorting arrays}{305} \entry {regexp}{45} \entry {regexp constants}{46, 108, 123} \entry {regexp constants, \code {/=\dots {}/}, \code {/=} operator and}{118} \entry {regexp constants, as patterns}{132} \entry {regexp constants, in \command {gawk}}{109} \entry {regexp constants, slashes vs.\: quotes}{53} \entry {regexp constants, vs.\: string constants}{53} \entry {register extension}{363} \entry {regular expressions}{45} \entry {regular expressions as field separators}{67} \entry {regular expressions, anchors in}{48} \entry {regular expressions, as field separators}{68} \entry {regular expressions, as patterns}{45, 131} \entry {regular expressions, as record separators}{61} \entry {regular expressions, case sensitivity}{55, 148} \entry {regular expressions, computed}{52} \entry {regular expressions, constants, See regexp constants}{46} \entry {regular expressions, dynamic}{52} \entry {regular expressions, dynamic, with embedded newlines}{54} \entry {regular expressions, \command {gawk}, command-line options}{55} \entry {regular expressions, interval expressions and}{36} \entry {regular expressions, leftmost longest match}{52} \entry {regular expressions, operators}{45, 48} \entry {regular expressions, operators, for buffers}{55} \entry {regular expressions, operators, for words}{54} \entry {regular expressions, operators, \command {gawk}}{54} \entry {regular expressions, operators, precedence of}{50} \entry {regular expressions, searching for}{256} \entry {\option {--re-interval} option}{36} \entry {relational operators, See comparison operators}{120} \entry {replace in string}{184} \entry {\code {return} debugger command}{332} \entry {\code {return} statement\comma {} user-defined functions}{206} \entry {return value\comma {} \code {close()} function}{104} \entry {\code {rev()} user-defined function}{202} \entry {\code {revoutput} extension}{405} \entry {\code {revtwoway} extension}{405} \entry {\code {rewind()} user-defined function}{230} \entry {right angle bracket (\code {>}), \code {>} operator}{122, 128} \entry {right angle bracket (\code {>}), \code {>} operator (I/O)}{98} \entry {right angle bracket (\code {>}), \code {>=} operator}{122, 128} \entry {right angle bracket (\code {>}), \code {>>} operator (I/O)}{98, 128} \entry {right shift}{197} \entry {right shift, bitwise}{196} \entry {Ritchie, Dennis}{461} \entry {\code {RLENGTH} variable}{153} \entry {\code {RLENGTH} variable, \code {match()} function and}{181} \entry {Robbins, Arnold}{70, 82, 239, 272, 359, 427, 443, 453} \entry {Robbins, Bill}{82} \entry {Robbins, Harry}{12} \entry {Robbins, Jean}{12} \entry {Robbins, Miriam}{12, 82, 239} \entry {Rommel, Kai Uwe}{426} \entry {round to nearest integer}{176} \entry {\code {round()} user-defined function}{222} \entry {rounding numbers}{222} \entry {\code {ROUNDMODE} variable}{149} \entry {\code {RS} variable}{59, 149} \entry {\code {RS} variable, multiline records and}{76} \entry {\code {rshift()} function (\command {gawk})}{197} \entry {\code {RSTART} variable}{153} \entry {\code {RSTART} variable, \code {match()} function and}{181} \entry {\code {RT} variable}{61, 78, 153} \entry {Rubin, Paul}{6, 425} \entry {rule, definition of}{17} \entry {\code {run} debugger command}{332} \entry {rvalues/lvalues}{116} \initial {S} \entry {\code {s} debugger command (alias for \code {step})}{333} \entry {\option {-S} option}{36} \entry {sample debugging session}{326} \entry {sandbox mode}{36} \entry {\option {--sandbox} option}{36} \entry {\option {--sandbox} option, disabling \code {system()} function}{191} \entry {\option {--sandbox} option, input redirection with \code {getline}}{78} \entry {\option {--sandbox} option, output redirection with \code {print}, \code {printf}}{97} \entry {save debugger options}{336} \entry {scalar or array}{198} \entry {scalar values}{460} \entry {scanning arrays}{163} \entry {scanning multidimensional arrays}{171} \entry {Schorr, Andrew}{12, 154, 427} \entry {Schreiber, Bert}{12} \entry {Schreiber, Rita}{12} \entry {search and replace in strings}{178} \entry {search in string}{180} \entry {search paths}{295, 437, 442} \entry {search paths, for loadable extensions}{40} \entry {search paths, for source files}{39, 295, 437, 442} \entry {searching, files for regular expressions}{256} \entry {searching, for words}{271} \entry {\command {sed} utility}{71, 284, 463} \entry {seeding random number generator}{176} \entry {semicolon (\code {;}), \env {AWKPATH} variable and}{437} \entry {semicolon (\code {;}), separating statements in actions}{29, 137, 138} \entry {separators, field}{147, 148} \entry {separators, field, \code {FIELDWIDTHS} variable and}{147} \entry {separators, field, \code {FPAT} variable and}{147} \entry {separators, field, POSIX and}{63} \entry {separators, for records}{59, 60, 149} \entry {separators, for records, regular expressions as}{61} \entry {separators, for statements in actions}{137} \entry {separators, subscript}{149} \entry {set breakpoint}{330} \entry {\code {set} debugger command}{334} \entry {set directory of message catalogs}{199} \entry {set watchpoint}{334} \entry {shadowing of variable values}{200} \entry {shell quoting, rules for}{21} \entry {shells, piping commands into}{100} \entry {shells, quoting}{136} \entry {shells, quoting, rules for}{21} \entry {shells, scripts}{17} \entry {shells, sea}{44} \entry {shells, variables}{136} \entry {shift, bitwise}{196} \entry {short-circuit operators}{125} \entry {show all source files, in debugger}{336} \entry {show breakpoints}{335} \entry {show function arguments, in debugger}{335} \entry {show local variables, in debugger}{335} \entry {show name of current source file, in debugger}{335} \entry {show watchpoints}{336} \entry {\code {si} debugger command (alias for \code {stepi})}{333} \entry {side effects}{115, 119, 120} \entry {side effects, array indexing}{161} \entry {side effects, \code {asort()} function}{304} \entry {side effects, assignment expressions}{116} \entry {side effects, Boolean operators}{124} \entry {side effects, conditional expressions}{126} \entry {side effects, decrement/increment operators}{119} \entry {side effects, \code {FILENAME} variable}{83} \entry {side effects, function calls}{127} \entry {side effects, statements}{138} \entry {sidebar, A Constant's Base Does Not Affect Its Value}{108} \entry {sidebar, Backslash Before Regular Characters}{47} \entry {sidebar, Changing \code {FS} Does Not Affect the Fields}{71} \entry {sidebar, Changing \code {NR} and \code {FNR}}{154} \entry {sidebar, Controlling Output Buffering with \code {system()}}{191} \entry {sidebar, Escape Sequences for Metacharacters}{48} \entry {sidebar, \code {FS} and \code {IGNORECASE}}{72} \entry {sidebar, Interactive Versus Noninteractive Buffering}{190} \entry {sidebar, Matching the Null String}{186} \entry {sidebar, Operator Evaluation Order}{120} \entry {sidebar, Piping into \command {sh}}{100} \entry {sidebar, Pre-POSIX \command {awk} Used \code {OFMT} for String Conversion}{112} \entry {sidebar, Recipe for a Programming Language}{6} \entry {sidebar, \code {RS = "{\tt \backslashcurfont }0"} Is Not Portable}{62} \entry {sidebar, So Why Does \command {gawk} Have \code {BEGINFILE} and \code {ENDFILE}?}{230} \entry {sidebar, Syntactic Ambiguities Between \samp {/=} and Regular Expressions}{118} \entry {sidebar, Understanding \samp {#!}}{19} \entry {sidebar, Understanding \code {$0}}{67} \entry {sidebar, Using \code {close()}'s Return Value}{104} \entry {sidebar, Using \code {{\tt \backslashcurfont }n} in Bracket Expressions of Dynamic Regexps}{54} \entry {\code {SIGHUP} signal, for dynamic profiling}{312} \entry {\code {SIGINT} signal (MS-Windows)}{312} \entry {signals, \code {HUP}/\code {SIGHUP}, for profiling}{312} \entry {signals, \code {INT}/\code {SIGINT} (MS-Windows)}{312} \entry {signals, \code {QUIT}/\code {SIGQUIT} (MS-Windows)}{312} \entry {signals, \code {USR1}/\code {SIGUSR1}, for profiling}{312} \entry {signature program}{293} \entry {\code {SIGQUIT} signal (MS-Windows)}{312} \entry {\code {SIGUSR1} signal, for dynamic profiling}{312} \entry {\code {silent} debugger command}{332} \entry {\code {sin()} function}{177} \entry {sine}{177} \entry {single quote (\code {'})}{17} \entry {single quote (\code {'}) in \command {gawk} command lines}{19} \entry {single quote (\code {'}), in shell commands}{21} \entry {single quote (\code {'}), vs.\: apostrophe}{20} \entry {single quote (\code {'}), with double quotes}{22} \entry {single-character fields}{69} \entry {single-step execution, in the debugger}{332} \entry {Skywalker, Luke}{44} \entry {\command {sleep} utility}{274} \entry {\code {sleep()} extension function}{407} \entry {Solaris, POSIX-compliant \command {awk}}{445} \entry {sort array}{178} \entry {sort array indices}{178} \entry {sort function, arrays, sorting}{304} \entry {\command {sort} utility}{279} \entry {\command {sort} utility, coprocesses and}{306} \entry {sorting characters in different languages}{316} \entry {source code, \command {awka}}{444} \entry {source code, Brian Kernighan's \command {awk}}{444} \entry {source code, BusyBox Awk}{445} \entry {source code, \command {gawk}}{429} \entry {source code, Illumos \command {awk}}{445} \entry {source code, \command {jawk}}{445} \entry {source code, libmawk}{445} \entry {source code, \command {mawk}}{444} \entry {source code, mixing}{33} \entry {source code, \command {pawk}}{445} \entry {source code, \command {pawk} (Python version)}{445} \entry {source code, QSE \command {awk}}{445} \entry {source code, QuikTrim Awk}{445} \entry {source code, Solaris \command {awk}}{445} \entry {source files\comma {} search path for}{295} \entry {\option {--source} option}{33} \entry {sparse arrays}{160} \entry {Spencer, Henry}{463} \entry {split string into array}{182} \entry {\code {split} utility}{262} \entry {\code {split()} function}{182} \entry {\code {split()} function, array elements\comma {} deleting}{169} \entry {\code {split.awk} program}{262} \entry {\code {sprintf()} function}{92, 183} \entry {\code {sprintf()} function, \code {OFMT} variable and}{148} \entry {\code {sprintf()} function, \code {print}/\code {printf} statements and}{222} \entry {\code {sqrt()} function}{177} \entry {square brackets (\code {[]}), regexp operator}{49} \entry {square root}{177} \entry {\code {srand()} function}{177} \entry {stack frame}{325} \entry {Stallman, Richard}{10, 11, 425, 468} \entry {standard error}{100} \entry {standard input}{18, 100} \entry {standard output}{100} \entry {starting the debugger}{327} \entry {\code {stat()} extension function}{398} \entry {statements, compound\comma {} control statements and}{138} \entry {statements, control, in actions}{138} \entry {statements, multiple}{29} \entry {\code {step} debugger command}{333} \entry {\code {stepi} debugger command}{333} \entry {stop automatic display, in debugger}{334} \entry {stream editors}{71, 284} \entry {\code {strftime()} function (\command {gawk})}{192} \entry {string constants}{107} \entry {string constants, vs.\: regexp constants}{53} \entry {string extraction (internationalization)}{319} \entry {string length}{180} \entry {string operators}{115} \entry {string, regular expression match}{180} \entry {string-manipulation functions}{177} \entry {string-matching operators}{45} \entry {strings splitting, example}{183} \entry {strings, converting}{111, 198} \entry {strings, converting letter case}{186} \entry {strings, converting, numbers to}{147, 148} \entry {strings, empty, See null strings}{61} \entry {strings, extracting}{319} \entry {strings, for localization}{317} \entry {strings, length limitations}{107} \entry {strings, merging arrays into}{225} \entry {strings, null}{68} \entry {strings, numeric}{121} \entry {string-translation functions}{198} \entry {\code {strtonum()} function (\command {gawk})}{183} \entry {\code {strtonum()} function (\command {gawk}), \code {--non-decimal-data} option and}{299} \entry {\code {sub()} function}{109, 184} \entry {\code {sub()} function, arguments of}{185} \entry {\code {sub()} function, escape processing}{186} \entry {subscript separators}{149} \entry {subscripts in arrays, multidimensional}{169} \entry {subscripts in arrays, multidimensional, scanning}{171} \entry {subscripts in arrays, numbers as}{167} \entry {subscripts in arrays, uninitialized variables as}{167} \entry {\code {SUBSEP} variable}{149} \entry {\code {SUBSEP} variable, and multidimensional arrays}{169} \entry {substitute in string}{178} \entry {\code {substr()} function}{185} \entry {substring}{185} \entry {Sumner, Andrew}{444} \entry {supplementary groups of \command {gawk} process}{153} \entry {\code {switch} statement}{141} \entry {\code {SYMTAB} array}{153} \entry {syntactic ambiguity: \code {/=} operator vs. \code {/=\dots {}/} regexp constant}{118} \entry {\code {system()} function}{190} \entry {\code {systime()} function (\command {gawk})}{193} \initial {T} \entry {\code {t} debugger command (alias for \code {tbreak})}{331} \entry {\code {tbreak} debugger command}{331} \entry {Tcl}{218} \entry {TCP/IP}{307} \entry {TCP/IP, support for}{101} \entry {\code {tee} utility}{263} \entry {\code {tee.awk} program}{264} \entry {temporary breakpoint}{331} \entry {terminating records}{61} \entry {\code {testbits.awk} program}{197} \entry {\code {testext} extension}{407} \entry {Texinfo}{9, 217, 271, 281, 431, 449} \entry {Texinfo, chapter beginnings in files}{48} \entry {Texinfo, extracting programs from source files}{281} \entry {text, printing}{89} \entry {text\comma {} printing, unduplicated lines of}{265} \entry {\code {textdomain()} function (C library)}{315} \entry {\code {TEXTDOMAIN} variable}{149, 317} \entry {\code {TEXTDOMAIN} variable, \code {BEGIN} pattern and}{318} \entry {\code {TEXTDOMAIN} variable, portability and}{321} \entry {tilde (\code {~}), \code {~} operator}{45, 52, 56, 108, 122, 123, 129, 132} \entry {time functions}{191} \entry {time, alarm clock example program}{272} \entry {time, localization and}{317} \entry {time, managing}{225} \entry {time, retrieving}{192} \entry {timeout, reading input}{84} \entry {timestamps}{191, 193} \entry {timestamps, converting dates to}{193} \entry {timestamps, formatted}{225} \entry {\code {tolower()} function}{186} \entry {\code {toupper()} function}{186} \entry {\command {tr} utility}{274} \entry {\code {trace} debugger command}{338} \entry {traceback, display in debugger}{335} \entry {\option {--traditional} option}{32} \entry {\option {--traditional} option, \code {--posix} option and}{36} \entry {translate string}{199} \entry {\code {translate.awk} program}{275} \entry {treating files, as single records}{63} \entry {troubleshooting, \code {==} operator}{122} \entry {troubleshooting, \command {awk} uses \code {FS} not \code {IFS}}{67} \entry {troubleshooting, backslash before nonspecial character}{47} \entry {troubleshooting, division}{114} \entry {troubleshooting, fatal errors, field widths\comma {} specifying}{72} \entry {troubleshooting, fatal errors, \code {printf} format strings}{96} \entry {troubleshooting, \code {fflush()} function}{189} \entry {troubleshooting, function call syntax}{126} \entry {troubleshooting, \command {gawk}}{447} \entry {troubleshooting, \command {gawk}, bug reports}{442} \entry {troubleshooting, \command {gawk}, fatal errors\comma {} function arguments}{175} \entry {troubleshooting, \code {getline} function}{231} \entry {troubleshooting, \code {gsub()}/\code {sub()} functions}{185} \entry {troubleshooting, \code {match()} function}{182} \entry {troubleshooting, \code {--non-decimal-data} option}{35} \entry {troubleshooting, \code {print} statement\comma {} omitting commas}{90} \entry {troubleshooting, printing}{99} \entry {troubleshooting, quotes with file names}{101} \entry {troubleshooting, readable data files}{231} \entry {troubleshooting, regexp constants vs.\: string constants}{53} \entry {troubleshooting, string concatenation}{115} \entry {troubleshooting, \code {substr()} function}{185} \entry {troubleshooting, \code {system()} function}{191} \entry {troubleshooting, typographical errors\comma {} global variables}{33} \entry {true, logical}{120} \entry {Trueman, David}{6, 12, 425} \entry {trunc-mod operation}{114} \entry {truth values}{120} \entry {type conversion}{112} \initial {U} \entry {\code {u} debugger command (alias for \code {until})}{333} \entry {unassigned array elements}{161} \entry {undefined functions}{206} \entry {underscore (\code {_}), C macro}{316} \entry {underscore (\code {_}), in names of private variables}{218} \entry {underscore (\code {_}), translatable string}{318} \entry {\code {undisplay} debugger command}{334} \entry {undocumented features}{44} \entry {Unicode}{224, 424, 465} \entry {uninitialized variables, as array subscripts}{167} \entry {\command {uniq} utility}{265} \entry {\code {uniq.awk} program}{266} \entry {Unix}{474} \entry {Unix \command {awk}, backslashes in escape sequences}{47} \entry {Unix \command {awk}, \code {close()} function and}{104} \entry {Unix \command {awk}, password files\comma {} field separators and}{70} \entry {Unix, \command {awk} scripts and}{19} \entry {\code {UNIXROOT} variable, on OS/2 systems}{437} \entry {unsigned integers}{341} \entry {\code {until} debugger command}{333} \entry {\code {unwatch} debugger command}{334} \entry {\code {up} debugger command}{335} \entry {\option {--use-lc-numeric} option}{35} \entry {user database\comma {} reading}{238} \entry {user-defined functions}{199} \entry {user-defined, functions, counts, in a profile}{311} \entry {user-defined, variables}{110} \entry {user-modifiable variables}{147} \entry {users, information about, printing}{260} \entry {users, information about, retrieving}{238} \entry {\code {USR1} signal, for dynamic profiling}{312} \initial {V} \entry {\option {-v} option}{32, 111} \entry {\option {-V} option}{36} \entry {values, numeric}{460} \entry {values, string}{460} \entry {variable assignments and input files}{38} \entry {variable typing}{120} \entry {variables}{29, 460} \entry {variables, assigning on command line}{111} \entry {variables, built-in}{110} \entry {variables, flag}{125} \entry {variables, \code {getline} command into\comma {} using}{79, 80, 82, 83} \entry {variables, global, for library functions}{218} \entry {variables, global, printing list of}{33} \entry {variables, initializing}{110} \entry {variables, local to a function}{203} \entry {variables, predefined}{147} \entry {variables, predefined conveying information}{149} \entry {variables, predefined \code {-v} option\comma {} setting with}{32} \entry {variables, private}{218} \entry {variables, setting}{32} \entry {variables, shadowing}{200} \entry {variables, types of}{116} \entry {variables, types of, comparison expressions and}{120} \entry {variables, uninitialized\comma {} as array subscripts}{167} \entry {variables, user-defined}{110} \entry {version of \command {gawk}}{152} \entry {version of \command {gawk} extension API}{153} \entry {version of GNU MP library}{153} \entry {version of GNU MPFR library}{153} \entry {\option {--version} option}{36} \entry {vertical bar (\code {|})}{49} \entry {vertical bar (\code {|}), \code {|} operator (I/O)}{81, 128} \entry {vertical bar (\code {|}), \code {|&} operator (I/O)}{82, 128, 306} \entry {vertical bar (\code {|}), \code {||} operator}{125, 129} \entry {Vinschen, Corinna}{12} \initial {W} \entry {\code {w} debugger command (alias for \code {watch})}{334} \entry {\command {w} utility}{72} \entry {\option {-W} option}{32} \entry {\code {wait()} extension function}{402} \entry {\code {waitpid()} extension function}{402} \entry {\code {walk_array()} user-defined function}{246} \entry {Wall, Larry}{159, 453} \entry {Wallin, Anders}{426} \entry {warnings, issuing}{34} \entry {\code {watch} debugger command}{334} \entry {watchpoint}{326} \entry {\command {wc} utility}{269} \entry {\code {wc.awk} program}{269} \entry {Weinberger, Peter}{6, 425} \entry {\code {where} debugger command}{335} \entry {\code {where} debugger command (alias for \code {backtrace})}{335} \entry {\code {while} statement}{139} \entry {\code {while} statement, use of regexps in}{45} \entry {whitespace, as field separators}{68} \entry {whitespace, functions\comma {} calling}{175} \entry {whitespace, newlines as}{36} \entry {Williams, Kent}{425} \entry {\option {--with-whiny-user-strftime} configuration option}{434} \entry {Woehlke, Matthew}{426} \entry {Woods, John}{425} \entry {word boundaries\comma {} matching}{54} \entry {word, regexp definition of}{54} \entry {word-boundary operator (\command {gawk})}{55} \entry {\code {wordfreq.awk} program}{279} \entry {words, counting}{269} \entry {words, duplicate\comma {} searching for}{271} \entry {words, usage counts\comma {} generating}{278} \entry {\code {writea()} extension function}{406} \initial {X} \entry {\code {xgettext} utility}{319} \entry {\code {xor()} function (\command {gawk})}{197} \entry {XOR bitwise operation}{196} \initial {Y} \entry {Yawitz, Efraim}{427} \initial {Z} \entry {Zaretskii, Eli}{12, 426, 443} \entry {\code {zerofile.awk} program}{232} \entry {Zoulas, Christos}{426}