aboutsummaryrefslogtreecommitdiffstats
path: root/gawk-info-5
diff options
context:
space:
mode:
Diffstat (limited to 'gawk-info-5')
-rw-r--r--gawk-info-5960
1 files changed, 960 insertions, 0 deletions
diff --git a/gawk-info-5 b/gawk-info-5
new file mode 100644
index 00000000..fd8d7eec
--- /dev/null
+++ b/gawk-info-5
@@ -0,0 +1,960 @@
+Info file gawk-info, produced by Makeinfo, -*- Text -*- from input
+file gawk.texinfo.
+
+This file documents `awk', a program that you can use to select
+particular records in a file and perform operations upon them.
+
+Copyright (C) 1989 Free Software Foundation, Inc.
+
+Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice are
+preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of
+this manual under the conditions for verbatim copying, provided that
+the entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be stated in a
+translation approved by the Foundation.
+
+
+
+File: gawk-info, Node: User-modified, Next: Auto-set, Up: Special
+
+Special Variables That Control `awk'
+====================================
+
+This is a list of the variables which you can change to control how
+`awk' does certain things.
+
+`FS'
+ `FS' is the input field separator (*note Field Separators::.).
+ The value is a regular expression that matches the separations
+ between fields in an input record.
+
+ The default value is `" "', a string consisting of a single
+ space. As a special exception, this value actually means that
+ any sequence of spaces and tabs is a single separator. It also
+ causes spaces and tabs at the beginning or end of a line to be
+ ignored.
+
+ You can set the value of `FS' on the command line using the `-F'
+ option:
+
+ awk -F, 'PROGRAM' INPUT-FILES
+
+`OFMT'
+ This string is used by `awk' to control conversion of numbers to
+ strings (*note Conversion::.). It works by being passed, in
+ effect, as the first argument to the `sprintf' function. Its
+ default value is `"%.6g"'.
+
+`OFS'
+ This is the output field separator (*note Output Separators::.).
+ It is output between the fields output by a `print' statement.
+ Its default value is `" "', a string consisting of a single space.
+
+`ORS'
+ This is the output record separator (*note Output
+ Separators::.). It is output at the end of every `print'
+ statement. Its default value is the newline character, often
+ represented in `awk' programs as `\n'.
+
+`RS'
+ This is `awk''s record separator (*note Records::.). Its
+ default value is a string containing a single newline character,
+ which means that an input record consists of a single line of
+ text.
+
+`SUBSEP'
+ `SUBSEP' is a subscript separator (*note Multi-dimensional::.).
+ It has the default value of `"\034"', and is used to separate
+ the parts of the name of a multi--dimensional array. Thus, if
+ you access `foo[12,3]', it really accesses `foo["12\0343"]'.
+
+
+
+File: gawk-info, Node: Auto-set, Prev: User-modified, Up: Special
+
+Special Variables That Convey Information to You
+================================================
+
+This is a list of the variables that are set automatically by `awk'
+on certain occasions so as to provide information for your program.
+
+`ARGC'
+`ARGV'
+ The command--line arguments available to `awk' are stored in an
+ array called `ARGV'. `ARGC' is the number of command--line
+ arguments present. `ARGV' is indexed from zero to `ARGC' - 1.
+ For example:
+
+ awk '{ print ARGV[$1] }' inventory-shipped BBS-list
+
+ In this example, `ARGV[0]' contains `"awk"', `ARGV[1]' contains
+ `"inventory-shipped"', and `ARGV[2]' contains `"BBS-list"'.
+ `ARGC' is 3, one more than the index of the last element in
+ `ARGV' since the elements are numbered from zero.
+
+ Notice that the `awk' program is not treated as an argument.
+ The `-f' `FILENAME' option, and the `-F' option, are also not
+ treated as arguments for this purpose.
+
+ Variable assignments on the command line *are* treated as
+ arguments, and do show up in the `ARGV' array.
+
+ Your program can alter `ARGC' the elements of `ARGV'. Each time
+ `awk' reaches the end of an input file, it uses the next element
+ of `ARGV' as the name of the next input file. By storing a
+ different string there, your program can change which files are
+ read. You can use `-' to represent the standard input. By
+ storing additional elements and incrementing `ARGC' you can
+ cause additional files to be read.
+
+ If you decrease the value of `ARGC', that eliminates input files
+ from the end of the list. By recording the old value of `ARGC'
+ elsewhere, your program can treat the eliminated arguments as
+ something other than file names.
+
+ To eliminate a file from the middle of the list, store the null
+ string (`""') into `ARGV' in place of the file's name. As a
+ special feature, `awk' ignores file names that have been
+ replaced with the null string.
+
+`ENVIRON'
+ This is an array that contains the values of the environment.
+ The array indices are the environment variable names; the values
+ are the values of the particular environment variables. For
+ example, `ENVIRON["HOME"]' might be `/u/close'. Changing this
+ array does not affect the environment passed on to any programs
+ that `awk' may spawn via redirection or the `system' function.
+ (This may not work under operating systems other than MS-DOS,
+ Unix, or GNU.)
+
+`FILENAME'
+ This is the name of the file that `awk' is currently reading.
+ If `awk' is reading from the standard input (in other words,
+ there are no files listed on the command line), `FILENAME' is
+ set to `"-"'. `FILENAME' is changed each time a new file is
+ read (*note Reading Files::.).
+
+`FNR'
+ `FNR' is the current record number in the current file. `FNR'
+ is incremented each time a new record is read (*note Getline::.).
+ It is reinitialized to 0 each time a new input file is started.
+
+`NF'
+ `NF' is the number of fields in the current input record. `NF'
+ is set each time a new record is read, when a new field is
+ created, or when $0 changes (*note Fields::.).
+
+`NR'
+ This is the number of input records `awk' has processed since
+ the beginning of the program's execution. (*note Records::.).
+ `NR' is set each time a new record is read.
+
+`RLENGTH'
+ `RLENGTH' is the length of the string matched by the `match'
+ function (*note String Functions::.). `RLENGTH' is set by
+ invoking the `match' function. Its value is the length of the
+ matched string, or -1 if no match was found.
+
+`RSTART'
+ `RSTART' is the start of the string matched by the `match'
+ function (*note String Functions::.). `RSTART' is set by
+ invoking the `match' function. Its value is the position of the
+ string where the matched string starts, or 0 if no match was
+ found.
+
+
+
+File: gawk-info, Node: Sample Program, Next: Notes, Prev: Special, Up: Top
+
+Sample Program
+**************
+
+The following example is a complete `awk' program, which prints the
+number of occurrences of each word in its input. It illustrates the
+associative nature of `awk' arrays by using strings as subscripts.
+It also demonstrates the `for X in ARRAY' construction. Finally, it
+shows how `awk' can be used in conjunction with other utility
+programs to do a useful task of some complexity with a minimum of
+effort. Some explanations follow the program listing.
+
+ awk '
+ # Print list of word frequencies
+ {
+ for (i = 1; i <= NF; i++)
+ freq[$i]++
+ }
+
+ END {
+ for (word in freq)
+ printf "%s\t%d\n", word, freq[word]
+ }'
+
+The first thing to notice about this program is that it has two
+rules. The first rule, because it has an empty pattern, is executed
+on every line of the input. It uses `awk''s field--accessing
+mechanism (*note Fields::.) to pick out the individual words from the
+line, and the special variable `NF' (*note Special::.) to know how
+many fields are available.
+
+For each input word, an element of the array `freq' is incremented to
+reflect that the word has been seen an additional time.
+
+The second rule, because it has the pattern `END', is not executed
+until the input has been exhausted. It prints out the contents of
+the `freq' table that has been built up inside the first action.
+
+Note that this program has several problems that would prevent it
+from being useful by itself on real text files:
+
+ * Words are detected using the `awk' convention that fields are
+ separated by whitespace and that other characters in the input
+ (except newlines) don't have any special meaning to `awk'. This
+ means that punctuation characters count as part of words.
+
+ * The `awk' language considers upper and lower case characters to
+ be distinct. Therefore, `foo' and `Foo' will not be treated by
+ this program as the same word. This is undesirable since in
+ normal text, words are capitalized if they begin sentences, and
+ a frequency analyzer should not be sensitive to that.
+
+ * The output does not come out in any useful order. You're more
+ likely to be interested in which words occur most frequently, or
+ having an alphabetized table of how frequently each word occurs.
+
+The way to solve these problems is to use other operating system
+utilities to process the input and output of the `awk' script.
+Suppose the script shown above is saved in the file `frequency.awk'.
+Then the shell command:
+
+ tr A-Z a-z < file1 | tr -cd 'a-z\012' \
+ | awk -f frequency.awk \
+ | sort +1 -nr
+
+produces a table of the words appearing in `file1' in order of
+decreasing frequency.
+
+The first `tr' command in this pipeline translates all the upper case
+characters in `file1' to lower case. The second `tr' command deletes
+all the characters in the input except lower case characters and
+newlines. The second argument to the second `tr' is quoted to
+protect the backslash in it from being interpreted by the shell. The
+`awk' program reads this suitably massaged data and produces a word
+frequency table, which is not ordered.
+
+The `awk' script's output is now sorted by the `sort' command and
+printed on the terminal. The options given to `sort' in this example
+specify to sort by the second field of each input line (skipping one
+field), that the sort keys should be treated as numeric quantities
+(otherwise `15' would come before `5'), and that the sorting should
+be done in descending (reverse) order.
+
+See the general operating system documentation for more information
+on how to use the `tr' and `sort' commands.
+
+
+
+File: gawk-info, Node: Notes, Next: Glossary, Prev: Sample Program, Up: Top
+
+Implementation Notes
+********************
+
+This appendix contains information mainly of interest to implementors
+and maintainers of `gawk'. Everything in it applies specifically to
+`gawk', and not to other implementations.
+
+* Menu:
+
+* Extensions:: Things`gawk' does that Unix `awk' does not.
+
+* Future Extensions:: Things likely to appear in a future release.
+
+* Improvements:: Suggestions for future improvements.
+
+* Manual Improvements:: Suggestions for improvements to this manual.
+
+
+
+File: gawk-info, Node: Extensions, Next: Future Extensions, Up: Notes
+
+GNU Extensions to the AWK Language
+==================================
+
+Several new features are in a state of flux. They are described here
+merely to document them somewhat, but they will probably change. We
+hope they will be incorporated into other versions of `awk', too.
+
+All of these features can be turned off either by compiling `gawk'
+with `-DSTRICT', or by invoking `gawk' as `awk'.
+
+The `AWKPATH' environment variable
+ When opening a file supplied via the `-f' option, if the
+ filename does not contain a `/', `gawk' will perform a "path
+ search" for the file, similar to that performed by the shell.
+ `gawk' gets its search path from the `AWKPATH' environment
+ variable. If that variable does not exist, it uses the default
+ path `".:/usr/lib/awk:/usr/local/lib/awk"'.
+
+Case Independent Matching
+ Two new operators have been introduced, `~~', and `!~~'. These
+ perform regular expression match and no-match operations that
+ are case independent. In other words, `A' and `a' would both
+ match `/a/'.
+
+The `-i' option
+ This option causes the `~' and `!~' operators to behave like the
+ `~~' and `!~~' operators described above.
+
+The `-v' option
+ This option prints version information for this particular copy
+ of `gawk'. This is so you can determine if your copy of `gawk'
+ is up to date with respect to whatever the Free Software
+ Foundation is currently distributing. It may disappear in a
+ future version of `gawk'.
+
+
+
+File: gawk-info, Node: Future Extensions, Next: Improvements, Prev: Extensions, Up: Notes
+
+Extensions Likely To Appear In A Future Release
+===============================================
+
+Here are some more extensions that indicate the directions we are
+currently considering for `gawk'. Like the previous section, this
+section is also subject to change. None of these are implemented yet.
+
+The `IGNORECASE' special variable
+ If `IGNORECASE' is non--zero, then *all* regular expression
+ matching will be done in a case--independent fashion. The `-i'
+ option and the `~~' and `!~~' operators will go away, as this
+ mechanism generalizes those facilities.
+
+More Escape Sequences
+ The ANSI C `\a', and `\x' escape sequences will be recognized.
+ Unix `awk' does not recognize `\v', although `gawk' does.
+
+`RS' as a regexp
+ The meaning of `RS' will be generalized along the lines of `FS'.
+
+Transliteration Functions
+ We are planning on adding `toupper' and `tolower' functions
+ which will take string arguments, and return strings where the
+ case of each letter has been transformed to upper-- or
+ lower--case respectively.
+
+Access To System File Descriptors
+ `gawk' will recognize the special file names `/dev/stdin',
+ `/dev/stdout', `/dev/stderr', and `/dev/fd/N' internally. These
+ will allow access to inherited file descriptors from within an
+ `awk' program.
+
+
+
+File: gawk-info, Node: Improvements, Next: Manual Improvements, Prev: Future Extensions, Up: Notes
+
+Suggestions for Future Improvements
+===================================
+
+Here are some projects that would--be `gawk' hackers might like to
+take on. They vary in size from a few days to a few weeks of
+programming, depending on which one you choose and how fast a
+programmer you are. Please send any improvements you write to the
+maintainers at the GNU project.
+
+ 1. State machine regexp matcher: At present, `gawk' uses the
+ backtracking regular expression matcher from the GNU subroutine
+ library. If a regexp is really going to be used a lot of times,
+ it is faster to convert it once to a description of a finite
+ state machine, then run a routine simulating that machine every
+ time you want to match the regexp. You could use the matching
+ routines used by GNU `egrep'.
+
+ 2. Compilation of `awk' programs: `gawk' uses a `Bison'
+ (YACC--like) parser to convert the script given it into a syntax
+ tree; the syntax tree is then executed by a simple recursive
+ evaluator. Both of these steps incur a lot of overhead, since
+ parsing can be slow (especially if you also do the previous
+ project and convert regular expressions to finite state machines
+ at compile time) and the recursive evaluator performs many
+ procedure calls to do even the simplest things.
+
+ It should be possible for `gawk' to convert the script's parse
+ tree into a C program which the user would then compile, using
+ the normal C compiler and a special `gawk' library to provide
+ all the needed functions (regexps, fields, associative arrays,
+ type coercion, and so on).
+
+ An easier possibility might be for an intermediate phase of
+ `awk' to convert the parse tree into a linear byte code form
+ like the one used in GNU Emacs Lisp. The recursive evaluator
+ would then be replaced by a straight line byte code interpreter
+ that would be intermediate in speed between running a compiled
+ program and doing what `gawk' does now.
+
+
+
+File: gawk-info, Node: Manual Improvements, Prev: Improvements, Up: Notes
+
+Suggestions For Future Improvements of This Manual
+==================================================
+
+ 1. An error message section has not been included in this version
+ of the manual. Perhaps some nice beta testers will document
+ some of the messages for the future.
+
+ 2. A summary page has not been included, as the ``man'', or help,
+ page that comes with the `gawk' code should suffice.
+
+ GNU only supports Info, so this manual itself should contain
+ whatever forms of information it would be useful to have on an
+ Info summary page.
+
+ 3. A function and variable index has not been included as we are
+ not sure what to put in it.
+
+ 4. A section summarizing the differences between V7 `awk' and
+ System V Release 4 `awk' would be useful for long--time `awk'
+ hackers.
+
+
+
+File: gawk-info, Node: Glossary, Next: Index, Prev: Notes, Up: Top
+
+Glossary
+********
+
+Action
+ A series of `awk' statements attached to a rule. If the rule's
+ pattern matches an input record, the `awk' language executes the
+ rule's action. Actions are always enclosed in curly braces.
+
+Amazing `awk' assembler
+ Henry Spencer at the University of Toronto wrote a retargetable
+ assembler completely as `awk' scripts. It is thousands of lines
+ long, including machine descriptions for several 8--bit
+ microcomputers. It is distributed with `gawk' and is a good
+ example of a program that would have been better written in
+ another language.
+
+Assignment
+ An `awk' expression that changes the value of some `awk'
+ variable or data object. An object that you can assign to is
+ called an "lvalue".
+
+Built-in function
+ The `awk' language provides built--in functions that perform
+ various numerical and string computations. Examples are `sqrt'
+ (for the square root of a number) and `substr' (for a substring
+ of a string).
+
+C
+ The system programming language that most of GNU is written in.
+ The `awk' programming language has C--like syntax, and this
+ manual points out similarities between `awk' and C when
+ appropriate.
+
+Compound statement
+ A series of `awk' statements, enclosed in curly braces.
+ Compound statements may be nested.
+
+Concatenation
+ Concatenating two strings means sticking them together, one
+ after another, giving a new string. For example, the string
+ `foo' concatenated with the string `bar' gives the string
+ `foobar'.
+
+Conditional expression
+ A relation that is either true or false, such as `(a < b)'.
+ Conditional expressions are used in `if' and `while' statements,
+ and in patterns to select which input records to process.
+
+Curly braces
+ The characters `{' and `}'. Curly braces are used in `awk' for
+ delimiting actions, compound statements, and function bodies.
+
+Data objects
+ These are numbers and strings of characters. Numbers are
+ converted into strings and vice versa, as needed.
+
+Escape Sequences
+ A special sequence of characters used for describing
+ non--printable characters, such as `\n' for newline, or `\033'
+ for the ASCII ESC (escape) character.
+
+Field
+ When `awk' reads an input record, it splits the record into
+ pieces separated by whitespace (or by a separator regexp which
+ you can change by setting the special variable `FS'). Such
+ pieces are called fields.
+
+Format
+ Format strings are used to control the appearance of output in
+ the `printf' statement. Also, data conversions from numbers to
+ strings are controlled by the format string contained in the
+ special variable `OFMT'.
+
+Function
+ A specialized group of statements often used to encapsulate
+ general or program--specific tasks. `awk' has a number of
+ built--in functions, and also allows you to define your own.
+
+`gawk'
+ The GNU implementation of `awk'.
+
+`awk' language
+ The language in which `awk' programs are written.
+
+`awk' program
+ An `awk' program consists of a series of "patterns" and
+ "actions", collectively known as "rules". For each input record
+ given to the program, the program's rules are all processed in
+ turn. `awk' programs may also contain function definitions.
+
+`awk' script
+ Another name for an `awk' program.
+
+Input record
+ A single chunk of data read in by `awk'. Usually, an `awk'
+ input record consists of one line of text.
+
+Keyword
+ In the `awk' language, a keyword is a word that has special
+ meaning. Keywords are reserved and may not be used as variable
+ names.
+
+ The keywords are: `if', `else', `while', `do...while', `for',
+ `for...in', `break', `continue', `delete', `next', `function',
+ `func', and `exit'.
+
+Lvalue
+ An expression that can appear on the left side of an assignment
+ operator. In most languages, lvalues can be variables or array
+ elements. In `awk', a field designator can also be used as an
+ lvalue.
+
+Number
+ A numeric valued data object. The `gawk' implementation uses
+ double precision floating point to represent numbers.
+
+Pattern
+ Patterns tell `awk' which input records are interesting to which
+ rules.
+
+ A pattern is an arbitrary conditional expression against which
+ input is tested. If the condition is satisfied, the pattern is
+ said to "match" the input record. A typical pattern might
+ compare the input record against a regular expression.
+
+Range (of input lines)
+ A sequence of consecutive lines from the input file. A pattern
+ can specify ranges of input lines for `awk' to process, or it
+ can specify single lines.
+
+Recursion
+ When a function calls itself, either directly or indirectly. If
+ this isn't clear, refer to the entry for ``recursion''.
+
+Redirection
+ Redirection means performing input from other than the standard
+ input stream, or output to other than the standard output stream.
+
+ You can redirect the output of the `print' and `printf'
+ statements to a file or a system command, using the `>', `>>',
+ and `|' operators. You can redirect input to the `getline'
+ statement using the `<' and `|' operators.
+
+Regular Expression
+ See ``regexp''.
+
+Regexp
+ Short for "regular expression". A regexp is a pattern that
+ denotes a set of strings, possibly an infinite set. For
+ example, the regexp `R.*xp' matches any string starting with the
+ letter `R' and ending with the letters `xp'. In `awk', regexps
+ are used in patterns and in conditional expressions.
+
+Rule
+ A segment of an `awk' program, that specifies how to process
+ single input records. A rule consists of a "pattern" and an
+ "action". `awk' reads an input record; then, for each rule, if
+ the input record satisfies the rule's pattern, `awk' executes
+ the rule's action. Otherwise, the rule does nothing for that
+ input record.
+
+Special Variable
+ The variables `ARGC', `ARGV', `ENVIRON', `FILENAME', `FNR',
+ `FS', `NF', `NR', `OFMT', `OFS', `ORS', `RLENGTH', `RSTART',
+ `RS', `SUBSEP', have special meaning to `awk'. Changing some of
+ them affects `awk''s running environment.
+
+Stream Editor
+ A program that reads records from an input stream and processes
+ them one or more at a time. This is in contrast with batch
+ programs, which may expect to read their input files in entirety
+ before starting to do anything, and with interactive programs,
+ which require input from the user.
+
+String
+ A datum consisting of a sequence of characters, such as `I am a
+ string'. Constant strings are written with double--quotes in
+ the `awk' language, and may contain "escape sequences".
+
+Whitespace
+ A sequence of blank or tab characters occurring inside an input
+ record or a string.
+
+
+
+File: gawk-info, Node: Index, Prev: Glossary, Up: Top
+
+Index
+*****
+
+* Menu:
+
+* #!: Executable Scripts.
+* -f option: Long.
+* `$NF', last field in record: Fields.
+* `$' (field operator): Fields.
+* `>>': Redirection.
+* `>': Redirection.
+* `BEGIN', special pattern: BEGIN/END.
+* `END', special pattern: BEGIN/END.
+* `awk' language: This Manual.
+* `awk' program: This Manual.
+* `break' statement: Break.
+* `close' statement for input: Close Input.
+* `close' statement for output: Close Output.
+* `continue' statement: Continue.
+* `delete' statement: Delete.
+* `exit' statement: Exit.
+* `for (x in ...)': Scanning an Array.
+* `for' statement: For.
+* `if' statement: If.
+* `next' statement: Next.
+* `print $0': Very Simple.
+* `printf' statement, format of: Basic Printf.
+* `printf', format-control characters: Format-Control.
+* `printf', modifiers: Modifiers.
+* `print' statement: Print.
+* `return' statement: Return Statement.
+* `while' statement: While.
+* `|': Redirection.
+* `BBS-list' file: The Files.
+* `inventory-shipped' file: The Files.
+* Accessing fields: Fields.
+* Acronym: History.
+* Action, curly braces: Actions.
+* Action, curly braces: Getting Started.
+* Action, default: Very Simple.
+* Action, definition of: Getting Started.
+* Action, general: Actions.
+* Action, separating statements: Actions.
+* Applications of `awk': When.
+* Arguments in function call: Function Calls.
+* Arguments, Command Line: Command Line.
+* Arithmetic operators: Arithmetic Ops.
+* Array assignment: Assigning Elements.
+* Array reference: Reference to Elements.
+* Arrays: Array Intro.
+* Arrays, definition of: Array Intro.
+* Arrays, deleting an element: Delete.
+* Arrays, determining presence of elements: Reference to Elements.
+* Arrays, multi-dimensional subscripts: Multi-dimensional.
+* Arrays, special `for' statement: Scanning an Array.
+* Assignment operators: Assignment Ops.
+* Associative arrays: Array Intro.
+* Backslash Continuation: Statements/Lines.
+* Basic function of `gawk': Getting Started.
+* Body of a loop: While.
+* Boolean expressions: Boolean Ops.
+* Boolean operators: Boolean Ops.
+* Boolean patterns: Boolean.
+* Built-in functions, list of: Built-in.
+* Built-in variables: Variables.
+* Calling a function: Function Calls.
+* Case sensitivity and gawk: Read Terminal.
+* Changing contents of a field: Changing Fields.
+* Changing the record separator: Records.
+* Closing files and pipes: Close Output.
+* Command Line: Command Line.
+* Command line formats: Running gawk.
+* Command line, setting `FS' on: Field Separators.
+* Comments: Comments.
+* Comparison expressions: Comparison Ops.
+* Comparison expressions as patterns: Comparison Patterns.
+* Compound statements: Actions.
+* Computed Regular Expressions: Regexp Usage.
+* Concatenation: Concatenation.
+* Conditional Patterns: Conditional Patterns.
+* Conditional expression: Conditional Exp.
+* Constants, types of: Constants.
+* Continuing statements on the next line: Statements/Lines.
+* Conversion of strings and numbers: Conversion.
+* Curly braces: Actions.
+* Curly braces: Getting Started.
+* Default action: Very Simple.
+* Default pattern: Very Simple.
+* Deleting elements of arrays: Delete.
+* Differences between `gawk' and `awk': Arithmetic Ops.
+* Differences between `gawk' and `awk': Constants.
+* Documenting `awk' programs: Comments.
+* Dynamic Regular Expressions: Regexp Usage.
+* Element assignment: Assigning Elements.
+* Element of array: Reference to Elements.
+* Emacs Lisp: When.
+* Empty pattern: Empty.
+* Escape sequence notation: Constants.
+* Examining fields: Fields.
+* Executable Scripts: Executable Scripts.
+* Expression, conditional: Conditional Exp.
+* Expressions: Actions.
+* Expressions, boolean: Boolean Ops.
+* Expressions, comparison: Comparison Ops.
+* Field separator, `FS': Field Separators.
+* Field separator, choice of: Field Separators.
+* Field separator, setting on command line: Field Separators.
+* Field, changing contents of: Changing Fields.
+* Fields: Fields.
+* Fields, negative-numbered: Non-Constant Fields.
+* Fields, semantics of: Field Separators.
+* Fields, separating: Field Separators.
+* Format specifier: Format-Control.
+* Format string: Basic Printf.
+* Formatted output: Printf.
+* Function call: Function Calls.
+* Function definitions: Actions.
+* Functions, user-defined: User-defined.
+* General input: Reading Files.
+* History of `awk': History.
+* How gawk works: Two Rules.
+* Increment operators: Increment Ops.
+* Input file, sample: The Files.
+* Input, `getline' function: Getline.
+* Input, general: Reading Files.
+* Input, multiple line records: Multiple.
+* Input, standard: Read Terminal.
+* Input, standard: Reading Files.
+* Interaction of `awk' with other programs: I/O Functions.
+* Invocation of `gawk': Command Line.
+* Language, `awk': This Manual.
+* Loop: While.
+* Loops, breaking out of: Break.
+* Lvalue: Assignment Ops.
+* Manual, using this: This Manual.
+* Metacharacters: Regexp Operators.
+* Mod function, semantics of: Arithmetic Ops.
+* Modifiers (in format specifiers): Modifiers.
+* Multiple line records: Multiple.
+* Multiple passes over data: Command Line.
+* Multiple statements on one line: Statements/Lines.
+* Negative-numbered fields: Non-Constant Fields.
+* Number of fields, `NF': Fields.
+* Number of records, `FNR': Records.
+* Number of records, `NR': Records.
+* Numerical constant: Constants.
+* Numerical value: Constants.
+* One-liners: One-liners.
+* Operator, Ternary: Conditional Patterns.
+* Operators, `$': Fields.
+* Operators, arithmetic: Arithmetic Ops.
+* Operators, assignment: Assignment Ops.
+* Operators, boolean: Boolean Ops.
+* Operators, increment: Increment Ops.
+* Operators, regular expression matching: Regexp Usage.
+* Operators, relational: Comparison Ops.
+* Operators, relational: Comparison Patterns.
+* Operators, string: Concatenation.
+* Operators, string-matching: Regexp Usage.
+* Options, Command Line: Command Line.
+* Output: Printing.
+* Output field separator, `OFS': Output Separators.
+* Output record separator, `ORS': Output Separators.
+* Output redirection: Redirection.
+* Output, formatted: Printf.
+* Output, piping: Redirection.
+* Passes, Multiple: Command Line.
+* Pattern, case sensitive: Read Terminal.
+* Pattern, comparison expressions: Comparison Patterns.
+* Pattern, default: Very Simple.
+* Pattern, definition of: Getting Started.
+* Pattern, empty: Empty.
+* Pattern, regular expressions: Regexp.
+* Patterns, `BEGIN': BEGIN/END.
+* Patterns, `END': BEGIN/END.
+* Patterns, Conditional: Conditional Patterns.
+* Patterns, boolean: Boolean.
+* Patterns, definition of: Patterns.
+* Patterns, types of: Patterns.
+* Pipes for output: Redirection.
+* Printing, general: Printing.
+* Program, `awk': This Manual.
+* Program, Self contained: Executable Scripts.
+* Program, definition of: Getting Started.
+* Programs, documenting: Comments.
+* Range pattern: Ranges.
+* Reading files, `getline' function: Getline.
+* Reading files, general: Reading Files.
+* Reading files, multiple line records: Multiple.
+* Record separator, `RS': Records.
+* Records, multiple line: Multiple.
+* Redirection of output: Redirection.
+* Reference to array: Reference to Elements.
+* Regexp: Regexp.
+* Regular Expressions, Computed: Regexp Usage.
+* Regular Expressions, Dynamic: Regexp Usage.
+* Regular expression matching operators: Regexp Usage.
+* Regular expression, metacharacters: Regexp Operators.
+* Regular expressions as patterns: Regexp.
+* Regular expressions, field separators and: Field Separators.
+* Relational operators: Comparison Patterns.
+* Relational operators: Comparison Ops.
+* Removing elements of arrays: Delete.
+* Rule, definition of: Getting Started.
+* Running gawk programs: Running gawk.
+* Sample input file: The Files.
+* Scanning an array: Scanning an Array.
+* Script, definition of: Getting Started.
+* Scripts, Executable: Executable Scripts.
+* Scripts, Shell: Executable Scripts.
+* Self contained Programs: Executable Scripts.
+* Separator character, choice of: Field Separators.
+* Shell Scripts: Executable Scripts.
+* Single quotes, why they are needed: One-shot.
+* Special variables, user modifiable: User-modified.
+* Standard input: Read Terminal.
+* Standard input: Reading Files.
+* Statements: Statements.
+* Statements: Actions.
+* String constants: Constants.
+* String operators: Concatenation.
+* String value: Constants.
+* String-matching operators: Regexp Usage.
+* Subscripts, multi-dimensional in arrays: Multi-dimensional.
+* Ternary Operator: Conditional Patterns.
+* Use of comments: Comments.
+* User-defined functions: User-defined.
+* User-defined variables: Variables.
+* Uses of `awk': Preface.
+* Using this manual: This Manual.
+* Variables, built-in: Variables.
+* Variables, user-defined: Variables.
+* What is `awk': Preface.
+* When to use `awk': When.
+* file, `awk' program: Long.
+* patterns, range: Ranges.
+* program file: Long.
+* regexp search operators: Regexp Usage.
+* running long programs: Long.
+
+
+ 
+Tag Table:
+Node: Top918
+Node: Preface2804
+Node: History4267
+Node: License5644
+Node: This Manual18989
+Node: The Files20330
+Node: Getting Started22914
+Node: Very Simple24249
+Node: Two Rules26030
+Node: More Complex28066
+Node: Running gawk30908
+Node: One-shot31827
+Node: Read Terminal32945
+Node: Long33862
+Node: Executable Scripts34991
+Node: Command Line36534
+Node: Comments40168
+Node: Statements/Lines41067
+Node: When43498
+Node: Reading Files45420
+Node: Records47119
+Node: Fields49902
+Node: Non-Constant Fields52789
+Node: Changing Fields54591
+Node: Field Separators57302
+Node: Multiple62004
+Node: Assignment Options64393
+Node: Getline65608
+Node: Close Input74958
+Node: Printing76023
+Node: Print76748
+Node: Print Examples78712
+Node: Output Separators80751
+Node: Redirection82417
+Node: Close Output85886
+Node: Printf88132
+Node: Basic Printf88908
+Node: Format-Control90261
+Node: Modifiers91806
+Node: Printf Examples93108
+Node: One-liners95707
+Node: Patterns97642
+Node: Empty100130
+Node: Regexp100402
+Node: Regexp Usage101173
+Node: Regexp Operators102947
+Node: Comparison Patterns107890
+Node: Ranges109336
+Node: BEGIN/END110722
+Node: Boolean113151
+Node: Conditional Patterns115605
+Node: Actions116105
+Node: Expressions117435
+Node: Constants119124
+Node: Variables121097
+Node: Arithmetic Ops122454
+Node: Concatenation123840
+Node: Comparison Ops124569
+Node: Boolean Ops125973
+Node: Assignment Ops128266
+Node: Increment Ops131817
+Node: Conversion134112
+Node: Conditional Exp136066
+Node: Function Calls137384
+Node: Statements139939
+Node: If141253
+Node: While142627
+Node: Do144232
+Node: For145265
+Node: Break148306
+Node: Continue149848
+Node: Next151476
+Node: Exit152985
+Node: Arrays154514
+Node: Array Intro155624
+Node: Reference to Elements159227
+Node: Assigning Elements161115
+Node: Array Example161615
+Node: Scanning an Array163336
+Node: Delete165642
+Node: Multi-dimensional166529
+Node: Multi-scanning169746
+Node: Built-in171303
+Node: Numeric Functions172806
+Node: String Functions176601
+Node: I/O Functions183717
+Node: User-defined185189
+Node: Definition Syntax185834
+Node: Function Example187928
+Node: Function Caveats189034
+Node: Return Statement191386
+Node: Special193612
+Node: User-modified194478
+Node: Auto-set196511
+Node: Sample Program200558
+Node: Notes204316
+Node: Extensions204909
+Node: Future Extensions206490
+Node: Improvements207922
+Node: Manual Improvements210034
+Node: Glossary210928
+Node: Index217934