~vcs-imports/gawk/master

« back to all changes in this revision

Viewing changes to doc/gawk.info

  • Committer: Arnold D. Robbins
  • Date: 2010-07-16 09:54:45 UTC
  • Revision ID: git-v1:f20ab7c3039a4023f41372bfe4bde3b16d481df7
Tags: gawk-3.0.4
Move to gawk-3.0.4.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
This is Info file gawk.info, produced by Makeinfo version 1.67 from the
 
1
This is Info file gawk.info, produced by Makeinfo version 1.68 from the
2
2
input file ./gawk.texi.
3
3
 
4
4
INFO-DIR-SECTION Programming Languages
9
9
   This file documents `awk', a program that you can use to select
10
10
particular records in a file and perform operations upon them.
11
11
 
12
 
   This is Edition 1.0.3 of `Effective AWK Programming', for the
13
 
3.0.3 version of the GNU implementation of AWK.
 
12
   This is Edition 1.0.4 of `Effective AWK Programming', for the
 
13
3.0.4 version of the GNU implementation of AWK.
14
14
 
15
 
   Copyright (C) 1989, 1991, 92, 93, 96, 97 Free Software Foundation,
16
 
Inc.
 
15
   Copyright (C) 1989, 1991, 92, 93, 96, 97, 98, 99 Free Software
 
16
Foundation, Inc.
17
17
 
18
18
   Permission is granted to make and distribute verbatim copies of this
19
19
manual provided the copyright notice and this permission notice are
38
38
   This file documents `awk', a program that you can use to select
39
39
particular records in a file and perform operations upon them.
40
40
 
41
 
   This is Edition 1.0.3 of `Effective AWK Programming',
42
 
for the 3.0.3 version of the GNU implementation
 
41
   This is Edition 1.0.4 of `Effective AWK Programming',
 
42
for the 3.0.4 version of the GNU implementation
43
43
of AWK.
44
44
 
45
45
* Menu:
382
382
 
383
383
   ---------- Footnotes ----------
384
384
 
385
 
   (1)  These commands are available on POSIX compliant systems, as
386
 
well as on traditional Unix based systems. If you are using some other
 
385
   (1) These commands are available on POSIX compliant systems, as well
 
386
as on traditional Unix based systems. If you are using some other
387
387
operating system, you still need to be familiar with the ideas of I/O
388
388
redirection and pipes.
389
389
 
849
849
 
850
850
   ---------- Footnotes ----------
851
851
 
852
 
   (1)  Often, these systems use `gawk' for their `awk' implementation!
 
852
   (1) Often, these systems use `gawk' for their `awk' implementation!
853
853
 
854
854
 
855
855
File: gawk.info,  Node: Running gawk,  Next: Very Simple,  Prev: Names,  Up: Getting Started
1030
1030
program which users can invoke without their having to know that the
1031
1031
program is written in `awk'.
1032
1032
 
 
1033
   *Caution:* You should not put more than one argument on the `#!'
 
1034
line after the path to `awk'. This will not work. The operating system
 
1035
treats the rest of the line as a single agument, and passes it to `awk'.
 
1036
Doing this will lead to confusing behavior: most likely a usage
 
1037
diagnostic of some sort from `awk'.
 
1038
 
1033
1039
   Some older systems do not support the `#!' mechanism. You can get a
1034
1040
similar effect using a regular shell script.  It would look something
1035
1041
like this:
1049
1055
 
1050
1056
   ---------- Footnotes ----------
1051
1057
 
1052
 
   (1)  The `#!' mechanism works on Linux systems, Unix systems derived
 
1058
   (1) The `#!' mechanism works on Linux systems, Unix systems derived
1053
1059
from Berkeley Unix, System V Release 4, and some System V Release 3
1054
1060
systems.
1055
1061
 
1056
 
   (2)  The line beginning with `#!' lists the full file name of an
 
1062
   (2) The line beginning with `#!' lists the full file name of an
1057
1063
interpreter to be run, and an optional initial command line argument to
1058
1064
pass to that interpreter.  The operating system then runs the
1059
1065
interpreter with the given argument and the full argument list of the
1088
1094
comment is to help you or another person understand the program at a
1089
1095
later time.
1090
1096
 
 
1097
   *Caution:* As mentioned in *Note One-shot Throw-away `awk' Programs:
 
1098
One-shot, you can enclose small to medium programs in single quotes, in
 
1099
order to keep your shell scripts self-contained.  When doing so,
 
1100
*don't* put an apostrophe (i.e., a single quote) into a comment (or
 
1101
anywhere else in your program). The shell will interpret the quote as
 
1102
the closing quote for the entire program. As a result, usually the
 
1103
shell will print a message about mismatched quotes, and if `awk'
 
1104
actually runs, it will probably print strange messages about syntax
 
1105
errors.  For example:
 
1106
 
 
1107
     awk 'BEGIN { print "hello" } # let's be cute'
 
1108
 
1091
1109
 
1092
1110
File: gawk.info,  Node: Very Simple,  Next: Two Rules,  Prev: Running gawk,  Up: Getting Started
1093
1111
 
1670
1688
   Another interesting question arises. Suppose you use an octal or
1671
1689
hexadecimal escape to represent a regexp metacharacter (*note Regular
1672
1690
Expression Operators: Regexp Operators.).  Does `awk' treat the
1673
 
character as literal character, or as a regexp operator?
 
1691
character as a literal character, or as a regexp operator?
1674
1692
 
1675
1693
   It turns out that historically, such characters were taken literally
1676
1694
(d.c.).  However, the POSIX standard indicates that they should be
2066
2084
of two evils.
2067
2085
 
2068
2086
   The various command line options (*note Command Line Options:
2069
 
Options.) control how `gawk' interprets characters in regexps.
 
2087
Options.)  control how `gawk' interprets characters in regexps.
2070
2088
 
2071
2089
No options
2072
2090
     In the default case, `gawk' provide all the facilities of POSIX
2169
2187
     echo aaaabcd | awk '{ sub(/a+/, "<A>"); print }'
2170
2188
 
2171
2189
   This example uses the `sub' function (which we haven't discussed yet,
2172
 
*note Built-in Functions for String Manipulation: String Functions.) to
2173
 
make a change to the input record. Here, the regexp `/a+/' indicates
 
2190
*note Built-in Functions for String Manipulation: String Functions.)
 
2191
to make a change to the input record. Here, the regexp `/a+/' indicates
2174
2192
"one or more `a' characters," and the replacement text is `<A>'.
2175
2193
 
2176
2194
   The input contains four `a' characters.  What will the output be?
2512
2530
 
2513
2531
   ---------- Footnotes ----------
2514
2532
 
2515
 
   (1)  In POSIX `awk', newlines are not considered whitespace for
 
2533
   (1) In POSIX `awk', newlines are not considered whitespace for
2516
2534
separating fields.
2517
2535
 
2518
2536
 
2584
2602
 
2585
2603
The `-' sign represents subtraction, so this program reassigns field
2586
2604
three, `$3', to be the value of field two minus ten, `$2 - 10'.  (*Note
2587
 
Arithmetic Operators: Arithmetic Ops.) Then field two, and the new
 
2605
Arithmetic Operators: Arithmetic Ops.)  Then field two, and the new
2588
2606
value for field three, are printed.
2589
2607
 
2590
2608
   In order for this to work, the text in field `$2' must make sense as
2954
2972
   However, many implementations of `awk' do not work this way.
2955
2973
Instead, they defer splitting the fields until a field is actually
2956
2974
referenced.  The fields will be split using the *current* value of
2957
 
`FS'! (d.c.) This behavior can be difficult to diagnose. The following
 
2975
`FS'! (d.c.)  This behavior can be difficult to diagnose. The following
2958
2976
example illustrates the difference between the two methods.  (The
2959
2977
`sed'(1) command prints just the first line of `/etc/passwd'.)
2960
2978
 
2992
3010
 
2993
3011
   ---------- Footnotes ----------
2994
3012
 
2995
 
   (1)  The `sed' utility is a "stream editor." Its behavior is also
 
3013
   (1) The `sed' utility is a "stream editor."  Its behavior is also
2996
3014
defined by the POSIX standard.
2997
3015
 
2998
3016
 
3512
3530
example, `"echo " "date" | getline' is ambiguous because the
3513
3531
concatenation operator is not parenthesized, and you should write it as
3514
3532
`("echo " "date") | getline' if you want your program to be portable to
3515
 
other `awk' implementations.
 
3533
other `awk' implementations.  (It happens that `gawk' gets it right,
 
3534
but you should not rely on this. Parentheses make it easier to read,
 
3535
anyway.)
3516
3536
 
3517
3537
 
3518
3538
File: gawk.info,  Node: Getline/Variable/Pipe,  Next: Getline Summary,  Prev: Getline/Pipe,  Up: Getline
3540
3560
example, `"echo " "date" | getline VAR' is ambiguous because the
3541
3561
concatenation operator is not parenthesized, and you should write it as
3542
3562
`("echo " "date") | getline VAR' if you want your program to be
3543
 
portable to other `awk' implementations.
 
3563
portable to other `awk' implementations.  (It happens that `gawk' gets
 
3564
it right, but you should not rely on this. Parentheses make it easier
 
3565
to read, anyway.)
3544
3566
 
3545
3567
 
3546
3568
File: gawk.info,  Node: Getline Summary,  Prev: Getline/Variable/Pipe,  Up: Getline
3640
3662
values to print. However, with two exceptions, you cannot specify *how*
3641
3663
to print them--how many columns, whether to use exponential notation or
3642
3664
not, and so on.  (For the exceptions, *note Output Separators::., and
3643
 
*Note Controlling Numeric Output with `print': OFMT.) For that, you
 
3665
*Note Controlling Numeric Output with `print': OFMT.)  For that, you
3644
3666
need the `printf' statement (*note Using `printf' Statements for
3645
3667
Fancier Printing: Printf.).
3646
3668
 
3667
3689
 
3668
3690
   Here is an example of printing a string that contains embedded
3669
3691
newlines (the `\n' is an escape sequence, used to represent the newline
3670
 
character; see *Note Escape Sequences::):
 
3692
character; *note Escape Sequences::.):
3671
3693
 
3672
3694
     $ awk 'BEGIN { print "line one\nline two\nline three" }'
3673
3695
     -| line one
3699
3721
example's output makes much sense.  A heading line at the beginning
3700
3722
would make it clearer.  Let's add some headings to our table of months
3701
3723
(`$1') and green crates shipped (`$2').  We do this using the `BEGIN'
3702
 
pattern (*note The `BEGIN' and `END' Special Patterns: BEGIN/END.) to
 
3724
pattern (*note The `BEGIN' and `END' Special Patterns: BEGIN/END.)  to
3703
3725
force the headings to be printed only once:
3704
3726
 
3705
3727
     awk 'BEGIN {  print "Month Crates"
4104
4126
 
4105
4127
   We could make our table look even nicer by adding headings to the
4106
4128
tops of the columns.  To do this, we use the `BEGIN' pattern (*note The
4107
 
`BEGIN' and `END' Special Patterns: BEGIN/END.) to force the header to
 
4129
`BEGIN' and `END' Special Patterns: BEGIN/END.)  to force the header to
4108
4130
be printed only once, at the beginning of the `awk' program:
4109
4131
 
4110
4132
     awk 'BEGIN { print "Name      Number"
4377
4399
========================================
4378
4400
 
4379
4401
   If the same file name or the same shell command is used with
4380
 
`getline' (*note Explicit Input with `getline': Getline.) more than
 
4402
`getline' (*note Explicit Input with `getline': Getline.)  more than
4381
4403
once during the execution of an `awk' program, the file is opened (or
4382
4404
the command is executed) only the first time.  At that time, the first
4383
4405
record of input is read from that file or command.  The next time the
4551
4573
 
4552
4574
   ---------- Footnotes ----------
4553
4575
 
4554
 
   (1)  The internal representation uses double-precision floating
4555
 
point numbers. If you don't know what that means, then don't worry
4556
 
about it.
 
4576
   (1) The internal representation uses double-precision floating point
 
4577
numbers. If you don't know what that means, then don't worry about it.
4557
4578
 
4558
4579
 
4559
4580
File: gawk.info,  Node: Regexp Constants,  Prev: Scalar Constants,  Up: Constants
5506
5527
`?:' simply by putting a newline after either character.  However, you
5507
5528
cannot put a newline in front of either character without using
5508
5529
backslash continuation (*note `awk' Statements Versus Lines:
5509
 
Statements/Lines.).
 
5530
Statements/Lines.).  If `--posix' is specified (*note Command Line
 
5531
Options: Options.), then this extension is disabled.
5510
5532
 
5511
5533
 
5512
5534
File: gawk.info,  Node: Function Calls,  Next: Precedence,  Prev: Conditional Exp,  Up: Expressions
5789
5811
 
5790
5812
     $ awk '$1 == "foo" { print $2 }' BBS-list
5791
5813
 
5792
 
(There is no output, since there is no BBS site named "foo".) Contrast
 
5814
(There is no output, since there is no BBS site named "foo".)  Contrast
5793
5815
this with the following regular expression match, which would accept
5794
5816
any record with a first field that contains `foo':
5795
5817
 
6199
6221
 
6200
6222
   The first thing the `while' statement does is test CONDITION.  If
6201
6223
CONDITION is true, it executes the statement BODY.  (The CONDITION is
6202
 
true when the value is not zero and not a null string.) After BODY has
 
6224
true when the value is not zero and not a null string.)  After BODY has
6203
6225
been executed, CONDITION is tested again, and if it is still true, BODY
6204
6226
is executed again.  This process repeats until CONDITION is no longer
6205
6227
true.  If CONDITION is initially false, the body of the loop is never
6602
6624
using an `exit' statement with a non-zero argument.  Here is an example:
6603
6625
 
6604
6626
     BEGIN {
6605
 
            if (("date" | getline date_now) < 0) {
 
6627
            if (("date" | getline date_now) <= 0) {
6606
6628
              print "Can't get system date" > "/dev/stderr"
6607
6629
              exit 1
6608
6630
            }
6743
6765
 
6744
6766
   ---------- Footnotes ----------
6745
6767
 
6746
 
   (1)  In POSIX `awk', newline does not count as whitespace.
 
6768
   (1) In POSIX `awk', newline does not count as whitespace.
6747
6769
 
6748
6770
 
6749
6771
File: gawk.info,  Node: Auto-set,  Next: ARGC and ARGV,  Prev: User-modified,  Up: Built-in Variables
6896
6918
 
6897
6919
   ---------- Footnotes ----------
6898
6920
 
6899
 
   (1)  Some early implementations of Unix `awk' initialized `FILENAME'
 
6921
   (1) Some early implementations of Unix `awk' initialized `FILENAME'
6900
6922
to `"-"', even if there were data files to be processed. This behavior
6901
6923
was incorrect, and should not be relied upon in your programs.
6902
6924
 
6923
6945
 
6924
6946
   Notice that the `awk' program is not entered in `ARGV'.  The other
6925
6947
special command line options, with their arguments, are also not
6926
 
entered.  But variable assignments on the command line *are* treated as
6927
 
arguments, and do show up in the `ARGV' array.
 
6948
entered.  This includes variable assignments done with the `-v' option
 
6949
(*note Command Line Options: Options.).  Normal variable assignments on
 
6950
the command line *are* treated as arguments, and do show up in the
 
6951
`ARGV' array.
 
6952
 
 
6953
     $ cat showargs.awk
 
6954
     -| BEGIN {
 
6955
     -|     printf "A=%d, B=%d\n", A, B
 
6956
     -|     for (i = 0; i < ARGC; i++)
 
6957
     -|         printf "\tARGV[%d] = %s\n", i, ARGV[i]
 
6958
     -| }
 
6959
     -| END   { printf "A=%d, B=%d\n", A, B }
 
6960
     $ awk -v A=1 -f showargs.awk B=2 /dev/null
 
6961
     -| A=1, B=0
 
6962
     -|         ARGV[0] = awk
 
6963
     -|         ARGV[1] = B=2
 
6964
     -|         ARGV[2] = /dev/null
 
6965
     -| A=1, B=2
6928
6966
 
6929
6967
   Your program can alter `ARGC' and the elements of `ARGV'.  Each time
6930
6968
`awk' reaches the end of an input file, it uses the next element of
7355
7393
     split("", array)
7356
7394
 
7357
7395
   The `split' function (*note Built-in Functions for String
7358
 
Manipulation: String Functions.) clears out the target array first.
 
7396
Manipulation: String Functions.)  clears out the target array first.
7359
7397
This call asks it to split apart the null string. Since there is no
7360
7398
data to split out, the function simply clears the array and then
7361
7399
returns.
7362
7400
 
 
7401
   *Caution:* Deleting an array does not change its type; you cannot
 
7402
delete an array and then use the array's name as a scalar. For example,
 
7403
this will not work:
 
7404
 
 
7405
     a[1] = 3; delete a; a = 3
 
7406
 
7363
7407
 
7364
7408
File: gawk.info,  Node: Numeric Array Subscripts,  Next: Uninitialized Subscripts,  Prev: Delete,  Up: Arrays
7365
7409
 
7748
7792
 
7749
7793
   ---------- Footnotes ----------
7750
7794
 
7751
 
   (1)  Computer generated random numbers really are not truly random.
 
7795
   (1) Computer generated random numbers really are not truly random.
7752
7796
They are technically known as "pseudo-random."  This means that while
7753
7797
the numbers in a sequence appear to be random, you can in fact generate
7754
7798
the same sequence of random numbers over and over again.
7873
7917
     Before splitting the string, `split' deletes any previously
7874
7918
     existing elements in the array ARRAY (d.c.).
7875
7919
 
 
7920
     If STRING does not match FIELDSEP at all, ARRAY will have one
 
7921
     element. The value of that element will be the original STRING.
 
7922
 
7876
7923
`sprintf(FORMAT, EXPRESSION1,...)'
7877
7924
     This returns (without printing) the string that `printf' would
7878
7925
     have printed out with the same arguments (*note Using `printf'
7954
8001
     non-changeable object as the third parameter will cause a fatal
7955
8002
     error, and your program will not run.
7956
8003
 
 
8004
     Finally, if the REGEXP is not a regexp constant, it is converted
 
8005
     into a string and then the value of that string is treated as the
 
8006
     regexp to match.
 
8007
 
7957
8008
`gsub(REGEXP, REPLACEMENT [, TARGET])'
7958
8009
     This is similar to the `sub' function, except `gsub' replaces
7959
8010
     *all* of the longest, leftmost, *non-overlapping* matching
8018
8069
     `G', or if it is a number that is less than zero, only one
8019
8070
     substitution is performed.
8020
8071
 
 
8072
     If REGEXP does not match TARGET, `gensub''s return value is the
 
8073
     original, unchanged value of TARGET.
 
8074
 
8021
8075
     `gensub' is a `gawk' extension; it is not available in
8022
8076
     compatibility mode (*note Command Line Options: Options.).
8023
8077
 
8179
8233
 
8180
8234
   ---------- Footnotes ----------
8181
8235
 
8182
 
   (1)  This consequence was certainly unintended.
 
8236
   (1) This consequence was certainly unintended.
8183
8237
 
8184
 
   (2)  As of February 1997, with final approval and publication
8185
 
hopefully sometime in 1997.
 
8238
   (2) As of April, 1999, with final approval and publication hopefully
 
8239
sometime in 1997.
8186
8240
 
8187
8241
 
8188
8242
File: gawk.info,  Node: I/O Functions,  Next: Time Functions,  Prev: String Functions,  Up: Built-in
8231
8285
     nonzero otherwise.
8232
8286
 
8233
8287
`system(COMMAND)'
8234
 
     The system function allows the user to execute operating system
 
8288
     The `system' function allows the user to execute operating system
8235
8289
     commands and then return to the `awk' program.  The `system'
8236
8290
     function executes the command given by the string COMMAND.  It
8237
8291
     returns, as its value, the status returned by the command that was
8248
8302
     finishes processing input and begins its end-of-input processing.
8249
8303
 
8250
8304
     Note that redirecting `print' or `printf' into a pipe is often
8251
 
     enough to accomplish your task.  However, if your `awk' program is
8252
 
     interactive, `system' is useful for cranking up large
8253
 
     self-contained programs, such as a shell or an editor.
 
8305
     enough to accomplish your task.  If you need to run many commands,
 
8306
     it will be more efficient to simply print them to a pipe to the
 
8307
     shell:
 
8308
 
 
8309
          while (MORE STUFF TO DO)
 
8310
              print COMMAND | "/bin/sh"
 
8311
          close("/bin/sh")
 
8312
 
 
8313
     However, if your `awk' program is interactive, `system' is useful
 
8314
     for cranking up large self-contained programs, such as a shell or
 
8315
     an editor.
8254
8316
 
8255
8317
     Some operating systems cannot implement the `system' function.
8256
8318
     `system' causes a fatal error if it is not supported.
8334
8396
 
8335
8397
   ---------- Footnotes ----------
8336
8398
 
8337
 
   (1)  A program is interactive if the standard output is connected to
 
8399
   (1) A program is interactive if the standard output is connected to
8338
8400
a terminal device.
8339
8401
 
8340
8402
 
8590
8652
 
8591
8653
   ---------- Footnotes ----------
8592
8654
 
8593
 
   (1)  Occasionally there are minutes in a year with a leap second,
 
8655
   (1) Occasionally there are minutes in a year with a leap second,
8594
8656
which is why the seconds can go up to 60.
8595
8657
 
8596
 
   (2)  This is because ANSI C leaves the behavior of the C version of
 
8658
   (2) This is because ANSI C leaves the behavior of the C version of
8597
8659
`strftime' undefined, and `gawk' will use the system's version of
8598
8660
`strftime' if it's there.  Typically, the conversion specifier will
8599
8661
either not appear in the returned string, or it will appear literally.
8600
8662
 
8601
 
   (3)  If you don't understand any of this, don't worry about it;
8602
 
these facilities are meant to make it easier to "internationalize"
8603
 
programs.
 
8663
   (3) If you don't understand any of this, don't worry about it; these
 
8664
facilities are meant to make it easier to "internationalize" programs.
8604
8665
 
8605
8666
 
8606
8667
File: gawk.info,  Node: User-defined,  Next: Invoking Gawk,  Prev: Built-in,  Up: Top
8774
8835
 
8775
8836
   Here is an example that uses the built-in function `strftime'.
8776
8837
(*Note Functions for Dealing with Time Stamps: Time Functions, for more
8777
 
information on `strftime'.) The C `ctime' function takes a timestamp
 
8838
information on `strftime'.)  The C `ctime' function takes a timestamp
8778
8839
and returns it in a string, formatted in a well known fashion.  Here is
8779
8840
an `awk' version:
8780
8841
 
8889
8950
Options.), `gawk' will report about calls to undefined functions.
8890
8951
 
8891
8952
   Some `awk' implementations generate a run-time error if you use the
8892
 
`next' statement (*note The `next' Statement: Next Statement.) inside a
8893
 
user-defined function.  `gawk' does not have this problem.
 
8953
`next' statement (*note The `next' Statement: Next Statement.)  inside
 
8954
a user-defined function.  `gawk' does not have this problem.
8894
8955
 
8895
8956
 
8896
8957
File: gawk.info,  Node: Return Statement,  Prev: Function Caveats,  Up: User-defined
9222
9283
 
9223
9284
   ---------- Footnotes ----------
9224
9285
 
9225
 
   (1)  Not recommended.
 
9286
   (1) Not recommended.
9226
9287
 
9227
9288
 
9228
9289
File: gawk.info,  Node: Other Arguments,  Next: AWKPATH Variable,  Prev: Options,  Up: Invoking Gawk
9331
9392
 
9332
9393
   ---------- Footnotes ----------
9333
9394
 
9334
 
   (1)  Your version of `gawk' may use a directory that is different
 
9395
   (1) Your version of `gawk' may use a directory that is different
9335
9396
than `/usr/local/share/awk'; it will depend upon how `gawk' was built
9336
9397
and installed. The actual directory will be the value of `$(datadir)'
9337
9398
generated when `gawk' was configured.  You probably don't need to worry
9348
9409
current version, or that are still supported but deprecated (meaning
9349
9410
that they will *not* be in the next release).
9350
9411
 
9351
 
   For version 3.0.3 of `gawk', there are no command line options or
 
9412
   For version 3.0.4 of `gawk', there are no command line options or
9352
9413
other deprecated features from the previous version of `gawk'.  This
9353
9414
node is thus essentially a place holder, in case some option becomes
9354
9415
obsolete in a future version of `gawk'.
9371
9432
====================
9372
9433
 
9373
9434
   * The `-F' option for changing the value of `FS' (*note Command Line
9374
 
     Options: Options.) is not necessary given the command line variable
9375
 
     assignment feature; it remains only for backwards compatibility.
 
9435
     Options: Options.)  is not necessary given the command line
 
9436
     variable assignment feature; it remains only for backwards
 
9437
     compatibility.
9376
9438
 
9377
9439
   * If your system actually has support for `/dev/fd' and the
9378
9440
     associated `/dev/stdin', `/dev/stdout', and `/dev/stderr' files,
9396
9458
 
9397
9459
   This chapter presents a library of useful `awk' functions.  The
9398
9460
sample programs presented later (*note Practical `awk' Programs: Sample
9399
 
Programs.) use these functions.  The functions are presented here in a
 
9461
Programs.)  use these functions.  The functions are presented here in a
9400
9462
progression from simple to complex.
9401
9463
 
9402
9464
   *Note Extracting Programs from Texinfo Source Files: Extract Program,
9519
9581
 
9520
9582
     # nextfile --- skip remaining records in current file
9521
9583
     # correctly handle successive occurrences of the same file
9522
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
 
9584
     # Arnold Robbins, arnold@gnu.org, Public Domain
9523
9585
     # May, 1993
9524
9586
     
9525
9587
     # this should be read in before the "main" awk program
9569
9631
 
9570
9632
   ---------- Footnotes ----------
9571
9633
 
9572
 
   (1)  Some implementations of `awk' do not allow you to execute
9573
 
`next' from within a function body. Some other work-around will be
9574
 
necessary if you use such a version.
 
9634
   (1) Some implementations of `awk' do not allow you to execute `next'
 
9635
from within a function body. Some other work-around will be necessary
 
9636
if you use such a version.
9575
9637
 
9576
9638
 
9577
9639
File: gawk.info,  Node: Assert Function,  Next: Round Function,  Prev: Nextfile Function,  Up: Library Functions
9608
9670
version of the condition that is being tested.
9609
9671
 
9610
9672
     # assert --- assert that a condition is true. Otherwise exit.
9611
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
 
9673
     # Arnold Robbins, arnold@gnu.org, Public Domain
9612
9674
     # May, 1993
9613
9675
     
9614
9676
     function assert(condition, string)
9653
9715
     mydata:1357: assertion failed: a <= 5 && b >= 17
9654
9716
 
9655
9717
   There is a problem with this version of `assert', that it may not be
9656
 
possible to work around.  An `END' rule is automatically added to the
9657
 
program calling `assert'.  Normally, if a program consists of just a
9658
 
`BEGIN' rule, the input files and/or standard input are not read.
9659
 
However, now that the program has an `END' rule, `awk' will attempt to
9660
 
read the input data files, or standard input (*note Startup and Cleanup
9661
 
Actions: Using BEGIN/END.), most likely causing the program to hang,
9662
 
waiting for input.
 
9718
possible to work around with standard `awk'.  An `END' rule is
 
9719
automatically added to the program calling `assert'.  Normally, if a
 
9720
program consists of just a `BEGIN' rule, the input files and/or
 
9721
standard input are not read. However, now that the program has an `END'
 
9722
rule, `awk' will attempt to read the input data files, or standard input
 
9723
(*note Startup and Cleanup Actions: Using BEGIN/END.), most likely
 
9724
causing the program to hang, waiting for input.
9663
9725
 
9664
9726
 
9665
9727
File: gawk.info,  Node: Round Function,  Next: Ordinal Functions,  Prev: Assert Function,  Up: Library Functions
9668
9730
================
9669
9731
 
9670
9732
   The way `printf' and `sprintf' (*note Using `printf' Statements for
9671
 
Fancier Printing: Printf.) do rounding will often depend upon the
 
9733
Fancier Printing: Printf.)  do rounding will often depend upon the
9672
9734
system's C `sprintf' subroutine.  On many machines, `sprintf' rounding
9673
9735
is "unbiased," which means it doesn't always round a trailing `.5' up,
9674
9736
contrary to naive expectations.  In unbiased rounding, `.5' rounds to
9680
9742
 
9681
9743
     # round --- do normal rounding
9682
9744
     #
9683
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, August, 1996
 
9745
     # Arnold Robbins, arnold@gnu.org, August, 1996
9684
9746
     # Public Domain
9685
9747
     
9686
9748
     function round(x,   ival, aval, fraction)
9736
9798
     #    _ord_init:    function to initialize _ord_
9737
9799
     #
9738
9800
     # Arnold Robbins
9739
 
     # arnold@gnu.ai.mit.edu
 
9801
     # arnold@gnu.org
9740
9802
     # Public Domain
9741
9803
     # 16 January, 1992
9742
9804
     # 20 July, 1992, revised
9809
9871
 
9810
9872
   ---------- Footnotes ----------
9811
9873
 
9812
 
   (1)  ASCII has been extended in many countries to use the values
9813
 
from 128 to 255 for country-specific characters.  If your  system uses
9814
 
these extensions, you can simplify `_ord_init' to simply loop from zero
9815
 
to 255.
 
9874
   (1) ASCII has been extended in many countries to use the values from
 
9875
128 to 255 for country-specific characters.  If your  system uses these
 
9876
extensions, you can simplify `_ord_init' to simply loop from zero to
 
9877
255.
9816
9878
 
9817
9879
 
9818
9880
File: gawk.info,  Node: Join Function,  Next: Mktime Function,  Prev: Ordinal Functions,  Up: Library Functions
9835
9897
String Functions.).
9836
9898
 
9837
9899
     # join.awk --- join an array into a string
9838
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
 
9900
     # Arnold Robbins, arnold@gnu.org, Public Domain
9839
9901
     # May 1993
9840
9902
     
9841
9903
     function join(array, start, end, sep,    result, i)
9902
9964
 
9903
9965
     # mktime.awk --- convert a canonical date representation
9904
9966
     #                into a timestamp
9905
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
 
9967
     # Arnold Robbins, arnold@gnu.org, Public Domain
9906
9968
     # May 1993
9907
9969
     
9908
9970
     BEGIN    \
9923
9985
     }
9924
9986
 
9925
9987
   The benefit of merging multiple `BEGIN' rules (*note The `BEGIN' and
9926
 
`END' Special Patterns: BEGIN/END.) is particularly clear when writing
 
9988
`END' Special Patterns: BEGIN/END.)  is particularly clear when writing
9927
9989
library files.  Functions in library files can cleanly initialize their
9928
9990
own private data and also provide clean-up actions in private `END'
9929
9991
rules.
10124
10186
as UTC--four hours ahead of the local time zone.  The second line shows
10125
10187
that the difference is 14400 seconds, which is four hours.  (The
10126
10188
difference is only four hours, since daylight savings time is in effect
10127
 
during May.) The final line of test output shows that the timezone
 
10189
during May.)  The final line of test output shows that the timezone
10128
10190
compensation algorithm works; the returned time is the same as the
10129
10191
entered time.
10130
10192
 
10137
10199
 
10138
10200
   ---------- Footnotes ----------
10139
10201
 
10140
 
   (1)  This is the Epoch on POSIX systems.  It may be different on
 
10202
   (1) This is the Epoch on POSIX systems.  It may be different on
10141
10203
other systems.
10142
10204
 
10143
10205
 
10158
10220
the current time formatted in the same way as the `date' utility.
10159
10221
 
10160
10222
     # gettimeofday --- get the time of day in a usable format
10161
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain, May 1993
 
10223
     # Arnold Robbins, arnold@gnu.org, Public Domain, May 1993
10162
10224
     #
10163
10225
     # Returns a string in the format of output of date(1)
10164
10226
     # Populates the array argument time with individual values:
10258
10320
     # that each take the name of the file being started or
10259
10321
     # finished, respectively.
10260
10322
     #
10261
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, January 1992
 
10323
     # Arnold Robbins, arnold@gnu.org, January 1992
10262
10324
     # Public Domain
10263
10325
     
10264
10326
     FILENAME != _oldfilename \
10302
10364
     #
10303
10365
     # user supplies beginfile() and endfile() functions
10304
10366
     #
10305
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu. November 1992
 
10367
     # Arnold Robbins, arnold@gnu.org, November 1992
10306
10368
     # Public Domain
10307
10369
     
10308
10370
     FNR == 1 {
10428
10490
 
10429
10491
     # getopt --- do C library getopt(3) function in awk
10430
10492
     #
10431
 
     # arnold@gnu.ai.mit.edu
 
10493
     # arnold@gnu.org
10432
10494
     # Public domain
10433
10495
     #
10434
10496
     # Initial version: March, 1991
10616
10678
=========================
10617
10679
 
10618
10680
   The `/dev/user' special file (*note Special File Names in `gawk':
10619
 
Special Files.) provides access to the current user's real and
 
10681
Special Files.)  provides access to the current user's real and
10620
10682
effective user and group id numbers, and if available, the user's
10621
10683
supplementary group set.  However, since these are numbers, they do not
10622
10684
provide very useful information to the average user.  There needs to be
10629
10691
   The POSIX standard does not define the file where user information is
10630
10692
kept.  Instead, it provides the `<pwd.h>' header file and several C
10631
10693
language subroutines for obtaining user information.  The primary
10632
 
function is `getpwent', for "get password entry." The "password" comes
 
10694
function is `getpwent', for "get password entry."  The "password" comes
10633
10695
from the original user database file, `/etc/passwd', which kept user
10634
10696
information, along with the encrypted passwords (hence the name).
10635
10697
 
10653
10715
      * Generate a printable version of the password database
10654
10716
      *
10655
10717
      * Arnold Robbins
10656
 
      * arnold@gnu.ai.mit.edu
 
10718
      * arnold@gnu.org
10657
10719
      * May 1993
10658
10720
      * Public Domain
10659
10721
      */
10724
10786
functions of the same name.
10725
10787
 
10726
10788
     # passwd.awk --- access password file information
10727
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
 
10789
     # Arnold Robbins, arnold@gnu.org, Public Domain
10728
10790
     # May 1993
10729
10791
     
10730
10792
     BEGIN {
10868
10930
      *
10869
10931
      * Generate a printable version of the group database
10870
10932
      *
10871
 
      * Arnold Robbins, arnold@gnu.ai.mit.edu
 
10933
      * Arnold Robbins, arnold@gnu.org
10872
10934
      * May 1993
10873
10935
      * Public Domain
10874
10936
      */
10936
10998
the same names.
10937
10999
 
10938
11000
     # group.awk --- functions for dealing with the group file
10939
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
 
11001
     # Arnold Robbins, arnold@gnu.org, Public Domain
10940
11002
     # May 1993
10941
11003
     
10942
11004
     BEGIN    \
11059
11121
     function getgrent()
11060
11122
     {
11061
11123
         _gr_init()
11062
 
         if (++gr_count in _gr_bycount)
 
11124
         if (++_gr_count in _gr_bycount)
11063
11125
             return _gr_bycount[_gr_count]
11064
11126
         return ""
11065
11127
     }
11261
11323
is called if invalid arguments are supplied.
11262
11324
 
11263
11325
     # cut.awk --- implement cut in awk
11264
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
 
11326
     # Arnold Robbins, arnold@gnu.org, Public Domain
11265
11327
     # May 1993
11266
11328
     
11267
11329
     # Options:
11531
11593
`IGNORECASE' built in variable (*note Built-in Variables::.).
11532
11594
 
11533
11595
     # egrep.awk --- simulate egrep in awk
11534
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
 
11596
     # Arnold Robbins, arnold@gnu.org, Public Domain
11535
11597
     # May 1993
11536
11598
     
11537
11599
     # Options:
11736
11798
group numbers.
11737
11799
 
11738
11800
     # id.awk --- implement id in awk
11739
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
 
11801
     # Arnold Robbins, arnold@gnu.org, Public Domain
11740
11802
     # May 1993
11741
11803
     
11742
11804
     # output is:
11833
11895
output file names.
11834
11896
 
11835
11897
     # split.awk --- do split in awk
11836
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
 
11898
     # Arnold Robbins, arnold@gnu.org, Public Domain
11837
11899
     # May 1993
11838
11900
     
11839
11901
     # usage: split [-num] [file] [outname]
11930
11992
input by setting `ARGV[1]' to `"-"', and `ARGC' to two.
11931
11993
 
11932
11994
     # tee.awk --- tee in awk
11933
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
 
11995
     # Arnold Robbins, arnold@gnu.org, Public Domain
11934
11996
     # May 1993
11935
11997
     # Revised December 1995
11936
11998
     
12061
12123
standard output, `/dev/stdout'.
12062
12124
 
12063
12125
     # uniq.awk --- do uniq in awk
12064
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
 
12126
     # Arnold Robbins, arnold@gnu.org, Public Domain
12065
12127
     # May 1993
12066
12128
     
12067
12129
     function usage(    e)
12265
12327
command line.
12266
12328
 
12267
12329
     # wc.awk --- count lines, words, characters
12268
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
 
12330
     # Arnold Robbins, arnold@gnu.org, Public Domain
12269
12331
     # May 1993
12270
12332
     
12271
12333
     # Options:
12355
12417
 
12356
12418
   ---------- Footnotes ----------
12357
12419
 
12358
 
   (1)  Examine the code in *Note Noting Data File Boundaries:
12359
 
Filetrans Function.  Why must `wc' use a separate `lines' variable,
12360
 
instead of using the value of `FNR' in `endfile'?
 
12420
   (1) Examine the code in *Note Noting Data File Boundaries: Filetrans
 
12421
Function.  Why must `wc' use a separate `lines' variable, instead of
 
12422
using the value of `FNR' in `endfile'?
12361
12423
 
12362
12424
 
12363
12425
File: gawk.info,  Node: Miscellaneous Programs,  Prev: Clones,  Up: Sample Programs
12407
12469
that really are different, but this is unusual.
12408
12470
 
12409
12471
     # dupword --- find duplicate words in text
12410
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
 
12472
     # Arnold Robbins, arnold@gnu.org, Public Domain
12411
12473
     # December 1991
12412
12474
     
12413
12475
     {
12448
12510
at their computer or terminal.)
12449
12511
 
12450
12512
     # alarm --- set an alarm
12451
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
 
12513
     # Arnold Robbins, arnold@gnu.org, Public Domain
12452
12514
     # May 1993
12453
12515
     
12454
12516
     # usage: alarm time [ "message" [ count [ delay ] ] ]
12522
12584
         }
12523
12585
 
12524
12586
   Finally, the program uses the `system' function (*note Built-in
12525
 
Functions for Input/Output: I/O Functions.) to call the `sleep'
 
12587
Functions for Input/Output: I/O Functions.)  to call the `sleep'
12526
12588
utility.  The `sleep' utility simply pauses for the given number of
12527
12589
seconds.  If the exit status is not zero, the program assumes that
12528
12590
`sleep' was interrupted, and exits. If `sleep' exited with an OK status
12606
12668
record.
12607
12669
 
12608
12670
     # translate --- do tr like stuff
12609
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
 
12671
     # Arnold Robbins, arnold@gnu.org, Public Domain
12610
12672
     # August 1989
12611
12673
     
12612
12674
     # bugs: does not handle things like: tr A-Z a-z, it has
12668
12730
 
12669
12731
   ---------- Footnotes ----------
12670
12732
 
12671
 
   (1)  On older, non-POSIX systems, `tr' often does not require that
 
12733
   (1) On older, non-POSIX systems, `tr' often does not require that
12672
12734
the lists be enclosed in square brackets and quoted.  This is a feature.
12673
12735
 
12674
 
   (2)  This program was written before `gawk' acquired the ability to
 
12736
   (2) This program was written before `gawk' acquired the ability to
12675
12737
split each character in a string into separate array elements.  How
12676
12738
might this ability simplify the program?
12677
12739
 
12723
12785
not have been an even multiple of 20 labels in the data.
12724
12786
 
12725
12787
     # labels.awk
12726
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
 
12788
     # Arnold Robbins, arnold@gnu.org, Public Domain
12727
12789
     # June 1992
12728
12790
     
12729
12791
     # Program to print labels.  Each label is 5 lines of data
12778
12840
 
12779
12841
   ---------- Footnotes ----------
12780
12842
 
12781
 
   (1)  "Real world" is defined as "a program actually used to get
 
12843
   (1) "Real world" is defined as "a program actually used to get
12782
12844
something done."
12783
12845
 
12784
12846
 
12920
12982
encountered.  The `END' rule simply prints out the lines, in order.
12921
12983
 
12922
12984
     # histsort.awk --- compact a shell history file
12923
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
 
12985
     # Arnold Robbins, arnold@gnu.org, Public Domain
12924
12986
     # May 1993
12925
12987
     
12926
12988
     # Thanks to Byron Rakitzis for the general idea
12992
13054
AWK Programming' (`gawk.texi') have all been bracketed inside `file',
12993
13055
and `endfile' lines.  The `gawk' distribution uses a copy of
12994
13056
`extract.awk' to extract the sample programs and install many of them
12995
 
in a standard directory, where `gawk' can find them.
 
13057
in a standard directory, where `gawk' can find them.  The Texinfo file
 
13058
looks something like this:
 
13059
 
 
13060
     ...
 
13061
     This program has a @code{BEGIN} block,
 
13062
     which prints a nice message:
 
13063
     
 
13064
     @example
 
13065
     @c file examples/messages.awk
 
13066
     BEGIN @{ print "Don't panic!" @}
 
13067
     @c end file
 
13068
     @end example
 
13069
     
 
13070
     It also prints some final advice:
 
13071
     
 
13072
     @example
 
13073
     @c file examples/messages.awk
 
13074
     END @{ print "Always avoid bored archeologists!" @}
 
13075
     @c end file
 
13076
     @end example
 
13077
     ...
12996
13078
 
12997
13079
   `extract.awk' begins by setting `IGNORECASE' to one, so that mixed
12998
13080
upper-case and lower-case letters in the directives won't matter.
13003
13085
 
13004
13086
     # extract.awk --- extract files and run programs
13005
13087
     #                 from texinfo files
13006
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
 
13088
     # Arnold Robbins, arnold@gnu.org, Public Domain
13007
13089
     # May 1993
13008
13090
     
13009
13091
     BEGIN    { IGNORECASE = 1 }
13039
13121
file, it calls the `unexpected_eof' function.  If the line is an
13040
13122
"endfile" line, then it breaks out of the loop.  If the line is an
13041
13123
`@group' or `@end group' line, then it ignores it, and goes on to the
13042
 
next line.
 
13124
next line.  (These Texinfo control lines keep blocks of code together
 
13125
on one page; unfortunately, TeX isn't always smart enough to do things
 
13126
exactly right, and we have to give it some advice.)
13043
13127
 
13044
13128
   Most of the work is in the following few lines.  If the line has no
13045
13129
`@' symbols, it can be printed directly.  Otherwise, each leading `@'
13149
13233
     # awksed.awk --- do s/foo/bar/g using just print
13150
13234
     #    Thanks to Michael Brennan for the idea
13151
13235
     
13152
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
 
13236
     # Arnold Robbins, arnold@gnu.org, Public Domain
13153
13237
     # August 1995
13154
13238
     
13155
13239
     function usage()
13338
13422
     #! /bin/sh
13339
13423
     
13340
13424
     # igawk --- like gawk but do @include processing
13341
 
     # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
 
13425
     # Arnold Robbins, arnold@gnu.org, Public Domain
13342
13426
     # July 1993
13343
13427
     
13344
13428
     if [ "$1" = debug ]
13567
13651
 
13568
13652
   ---------- Footnotes ----------
13569
13653
 
13570
 
   (1)  On some very old versions of `awk', the test `getline junk < t'
 
13654
   (1) On some very old versions of `awk', the test `getline junk < t'
13571
13655
can loop forever if the file exists but is empty.  Caveat Emptor.
13572
13656
 
13573
13657
 
14051
14135
 
14052
14136
   ---------- Footnotes ----------
14053
14137
 
14054
 
   (1)  The path may use a directory other than `/usr/local/share/awk',
 
14138
   (1) The path may use a directory other than `/usr/local/share/awk',
14055
14139
depending upon how `gawk' was built and installed.
14056
14140
 
14057
14141
 
14087
14171
of spaces, tabs and/or newlines.(1) If `FS' is the null string (`""'),
14088
14172
then each individual character in the record becomes a separate field.
14089
14173
Note that the value of `IGNORECASE' (*note Case-sensitivity in
14090
 
Matching: Case-sensitivity.) also affects how fields are split when
 
14174
Matching: Case-sensitivity.)  also affects how fields are split when
14091
14175
`FS' is a regular expression.
14092
14176
 
14093
14177
   Each field in the input line may be referenced by its position, `$1',
14112
14196
 
14113
14197
   ---------- Footnotes ----------
14114
14198
 
14115
 
   (1)  In POSIX `awk', newline does not separate fields.
 
14199
   (1) In POSIX `awk', newline does not separate fields.
14116
14200
 
14117
14201
 
14118
14202
File: gawk.info,  Node: Built-in Summary,  Next: Arrays Summary,  Prev: Fields Summary,  Up: Variables/Fields
15207
15291
          Boston, MA  02111-1307 USA
15208
15292
          Phone: +1-617-542-5942
15209
15293
          Fax (including Japan): +1-617-542-2652
15210
 
          E-mail: `gnu@prep.ai.mit.edu'
 
15294
          E-mail: `gnu@gnu.org'
15211
15295
 
15212
15296
     Ordering from the FSF directly contributes to the support of the
15213
15297
     foundation and to the production of more free software.
15214
15298
 
15215
15299
  3. You can get `gawk' by using anonymous `ftp' to the Internet host
15216
 
     `ftp.gnu.ai.mit.edu', in the directory `/pub/gnu'.
 
15300
     `gnudist.gnu.org', in the directory `/gnu/gawk'.
15217
15301
 
15218
15302
     Here is a list of alternate `ftp' sites from which you can obtain
15219
15303
     GNU software.  When a site is listed as "SITE`:'DIRECTORY" the
15221
15305
     should use a site that is geographically close to you.
15222
15306
 
15223
15307
    Asia:
 
15308
 
15224
15309
         `cair-archive.kaist.ac.kr:/pub/gnu'
15225
15310
         `ftp.cs.titech.ac.jp'
15226
15311
         `ftp.nectec.or.th:/pub/mirrors/gnu'
15227
15312
         `utsun.s.u-tokyo.ac.jp:/ftpsync/prep'
 
15313
 
15228
15314
    Australia:
 
15315
 
15229
15316
         `archie.au:/gnu'
15230
15317
               (`archie.oz' or `archie.oz.au' for ACSnet)
15231
15318
 
15232
15319
    Africa:
 
15320
 
15233
15321
         `ftp.sun.ac.za:/pub/gnu'
 
15322
 
15234
15323
    Middle East:
 
15324
 
15235
15325
         `ftp.technion.ac.il:/pub/unsupported/gnu'
 
15326
 
15236
15327
    Europe:
 
15328
 
15237
15329
         `archive.eu.net'
15238
15330
         `ftp.denet.dk'
15239
15331
         `ftp.eunet.ch'
15252
15344
         `nic.switch.ch:/mirror/gnu'
15253
15345
         `src.doc.ic.ac.uk:/gnu'
15254
15346
         `unix.hensa.ac.uk:/pub/uunet/systems/gnu'
 
15347
 
15255
15348
    South America:
 
15349
 
15256
15350
         `ftp.inf.utfsm.cl:/pub/gnu'
15257
15351
         `ftp.unicamp.br:/pub/gnu'
 
15352
 
15258
15353
    Western Canada:
 
15354
 
15259
15355
         `ftp.cs.ubc.ca:/mirror2/gnu'
 
15356
 
15260
15357
    USA:
 
15358
 
15261
15359
         `col.hp.com:/mirrors/gnu'
15262
15360
         `f.ms.uky.edu:/pub3/gnu'
15263
15361
         `ftp.cc.gatech.edu:/pub/gnu'
15265
15363
         `ftp.digex.net:/pub/gnu'
15266
15364
         `ftp.hawaii.edu:/mirrors/gnu'
15267
15365
         `ftp.kpc.com:/pub/mirror/gnu'
 
15366
 
15268
15367
    USA (continued):
15269
15368
         `ftp.uu.net:/systems/gnu'
15270
15369
         `gatekeeper.dec.com:/pub/GNU'
15283
15382
   `gawk' is distributed as a `tar' file compressed with the GNU Zip
15284
15383
program, `gzip'.
15285
15384
 
15286
 
   Once you have the distribution (for example, `gawk-3.0.3.tar.gz'),
 
15385
   Once you have the distribution (for example, `gawk-3.0.4.tar.gz'),
15287
15386
first use `gzip' to expand the file, and then use `tar' to extract it.
15288
15387
You can use the following pipeline to produce the `gawk' distribution:
15289
15388
 
15290
15389
     # Under System V, add 'o' to the tar flags
15291
 
     gzip -d -c gawk-3.0.3.tar.gz | tar -xvpf -
 
15390
     gzip -d -c gawk-3.0.4.tar.gz | tar -xvpf -
15292
15391
 
15293
 
This will create a directory named `gawk-3.0.3' in the current
 
15392
This will create a directory named `gawk-3.0.4' in the current
15294
15393
directory.
15295
15394
 
15296
15395
   The distribution file name is of the form `gawk-V.R.N.tar.gz'.  The
15297
15396
V represents the major version of `gawk', the R represents the current
15298
15397
release of version V, and the N represents a "patch level", meaning
15299
15398
that minor bugs have been fixed in the release.  The current patch
15300
 
level is 3, but when retrieving distributions, you should get the
 
15399
level is 4, but when retrieving distributions, you should get the
15301
15400
version with the highest version, release, and patch level.  (Note that
15302
15401
release levels greater than or equal to 90 denote "beta," or
15303
15402
non-production software; you may not wish to retrieve such a version
15470
15569
-------------------------
15471
15570
 
15472
15571
   After you have extracted the `gawk' distribution, `cd' to
15473
 
`gawk-3.0.3'.  Like most GNU software, `gawk' is configured
 
15572
`gawk-3.0.4'.  Like most GNU software, `gawk' is configured
15474
15573
automatically for your Unix system by running the `configure' program.
15475
15574
This program is a Bourne shell script that was generated automatically
15476
15575
using GNU `autoconf'.  (The `autoconf' software is described fully
15958
16057
can send mail to.
15959
16058
 
15960
16059
Internet:
15961
 
     `bug-gnu-utils@prep.ai.mit.edu'
 
16060
     `bug-gnu-utils@gnu.org'
15962
16061
 
15963
16062
UUCP:
15964
 
     `uunet!prep.ai.mit.edu!bug-gnu-utils'
 
16063
     `uunet!gnu.org!bug-gnu-utils'
15965
16064
 
15966
16065
   Please include the version number of `gawk' you are using.  You can
15967
16066
get this information with the command `gawk --version'.  You should
15968
16067
send a carbon copy of your mail to Arnold Robbins, who can be reached
15969
 
at `arnold@gnu.ai.mit.edu'.
 
16068
at `arnold@gnu.org'.
15970
16069
 
15971
16070
   *Important!* Do *not* try to report bugs in `gawk' by posting to the
15972
16071
Usenet/Internet newsgroup `comp.lang.awk'.  While the `gawk' developers
16024
16123
Unix `awk'
16025
16124
     Brian Kernighan has been able to make his implementation of `awk'
16026
16125
     freely available.  You can get it via anonymous `ftp' to the host
16027
 
     `netlib.att.com'.  Change directory to `/netlib/research'. Use
16028
 
     "binary" or "image" mode, and retrieve `awk.bundle.Z'.
16029
 
 
16030
 
     This is a shell archive that has been compressed with the
16031
 
     `compress' utility. It can be uncompressed with either
16032
 
     `uncompress' or the GNU `gunzip' utility.
 
16126
     `netlib.bell-labs.com'.  Change directory to `/netlib/research'.
 
16127
     Use "binary" or "image" mode, and retrieve `awk.bundle.gz'.
 
16128
 
 
16129
     This is a shell archive that has been compressed with the GNU
 
16130
     `gzip' utility. It can be uncompressed with the `gunzip' utility.
 
16131
 
 
16132
     You can also retrieve this version via the World Wide Web from
 
16133
     Brian Kernighan's home page (http://cm.bell-labs.com/who/bwk).
16033
16134
 
16034
16135
     This version requires an ANSI C compiler; GCC (the GNU C compiler)
16035
16136
     works quite nicely.
16116
16217
   You are free to add any new features you like to `gawk'.  However,
16117
16218
if you want your changes to be incorporated into the `gawk'
16118
16219
distribution, there are several steps that you need to take in order to
16119
 
make it possible for me to include to your changes.
 
16220
make it possible for me to include your changes.
16120
16221
 
16121
16222
  1. Get the latest version.  It is much easier for me to integrate
16122
16223
     changes if they are relative to the most recent distributed
16125
16226
     Distribution: Getting, for information on getting the latest
16126
16227
     version of `gawk'.
16127
16228
 
16128
 
  2. See *note : (Version)Top standards, GNU Coding Standards.  This
 
16229
  2. See *note (Version)Top:: standards, GNU Coding Standards.  This
16129
16230
     document describes how GNU software should be written. If you
16130
16231
     haven't read it, please do so, preferably *before* starting to
16131
16232
     modify `gawk'.  (The `GNU Coding Standards' are available as part
16194
16295
     effect, or assign the copyright in your changes to the FSF.  Both
16195
16296
     of these actions are easy to do, and *many* people have done so
16196
16297
     already. If you have questions, please contact me (*note Reporting
16197
 
     Problems and Bugs: Bugs.), or `gnu@prep.ai.mit.edu'.
 
16298
     Problems and Bugs: Bugs.), or `gnu@gnu.org'.
16198
16299
 
16199
16300
  5. Update the documentation.  Along with your new code, please supply
16200
16301
     new sections and or chapters for this Info file.  If at all
16211
16312
  6. Submit changes as context diffs or unified diffs.  Use `diff -c -r
16212
16313
     -N' or `diff -u -r -N' to compare the original `gawk' source tree
16213
16314
     with your version.  (I find context diffs to be more readable, but
16214
 
     unified diffs are more compact.) I recommend using the GNU version
16215
 
     of `diff'.  Send the output produced by either run of `diff' to me
16216
 
     when you submit your changes.  *Note Reporting Problems and Bugs:
16217
 
     Bugs, for the electronic mail information.
 
16315
     unified diffs are more compact.)  I recommend using the GNU
 
16316
     version of `diff'.  Send the output produced by either run of
 
16317
     `diff' to me when you submit your changes.  *Note Reporting
 
16318
     Problems and Bugs: Bugs, for the electronic mail information.
16218
16319
 
16219
16320
     Using this format makes it easy for me to apply your changes to the
16220
16321
     master version of the `gawk' source code (using `patch').  If I
16298
16399
     the public domain, and submit a signed statement to that effect,
16299
16400
     or assign the copyright in your code to the FSF.  Both of these
16300
16401
     actions are easy to do, and *many* people have done so already. If
16301
 
     you have questions, please contact me, or `gnu@prep.ai.mit.edu'.
 
16402
     you have questions, please contact me, or `gnu@gnu.org'.
16302
16403
 
16303
16404
   Following these steps will make it much easier to integrate your
16304
16405
changes into `gawk', and have them co-exist happily with the code for
16340
16441
 
16341
16442
A `PROCINFO' Array
16342
16443
     The special files that provide process-related information (*note
16343
 
     Special File Names in `gawk': Special Files.) may be superseded by
16344
 
     a `PROCINFO' array that would provide the same information, in an
16345
 
     easier to access fashion.
 
16444
     Special File Names in `gawk': Special Files.)  may be superseded
 
16445
     by a `PROCINFO' array that would provide the same information, in
 
16446
     an easier to access fashion.
16346
16447
 
16347
16448
More `lint' warnings
16348
16449
     There are more things that could be checked for portability.
16363
16464
     The GNU version of `malloc' could potentially speed up `gawk',
16364
16465
     since it relies heavily on the use of dynamic memory allocation.
16365
16466
 
16366
 
Use of the `rx' regexp library
16367
 
     The `rx' regular expression library could potentially speed up all
16368
 
     regexp operations that require knowing the exact location of
16369
 
     matches.  This includes record termination, field and array
16370
 
     splitting, and the `sub', `gsub', `gensub' and `match' functions.
16371
 
 
16372
16467
 
16373
16468
File: gawk.info,  Node: Improvements,  Prev: Future Extensions,  Up: Notes
16374
16469
 
16515
16610
     A preprocessor for `pic' that reads descriptions of molecules and
16516
16611
     produces `pic' input for drawing them.  It was written in `awk' by
16517
16612
     Brian Kernighan and Jon Bentley, and is available from
16518
 
     `netlib@research.att.com'.
 
16613
     <netlib@research.bell-labs.com>.
16519
16614
 
16520
16615
Compound Statement
16521
16616
     A series of `awk' statements, enclosed in curly braces.  Compound
17200
17295
 
17201
17296
* ! operator:                            Boolean Ops.
17202
17297
* != operator:                           Typing and Comparison.
17203
 
* !~ operator <1>:                       Regexp Constants.
17204
 
* !~ operator <2>:                       Typing and Comparison.
17205
 
* !~ operator <3>:                       Regexp Usage.
 
17298
* !~ operator <1>:                       Typing and Comparison.
 
17299
* !~ operator <2>:                       Regexp Constants.
 
17300
* !~ operator <3>:                       Computed Regexps.
17206
17301
* !~ operator <4>:                       Case-sensitivity.
17207
 
* !~ operator:                           Computed Regexps.
 
17302
* !~ operator:                           Regexp Usage.
17208
17303
* # (comment):                           Comments.
17209
17304
* #! (executable scripts):               Executable Scripts.
17210
17305
* $ (field operator):                    Fields.
17223
17318
* --traditional option:                  Options.
17224
17319
* --usage option:                        Options.
17225
17320
* --version option:                      Options.
 
17321
* -f option:                             Options.
 
17322
* -F option <1>:                         Options.
 
17323
* -F option:                             Command Line Field Separator.
17226
17324
* -f option:                             Long.
17227
 
* -F option <1>:                         Command Line Field Separator.
17228
 
* -F option:                             Options.
17229
 
* -f option:                             Options.
17230
17325
* -v option:                             Options.
17231
17326
* -W option:                             Options.
17232
17327
* /dev/fd:                               Special Files.
17236
17331
* /dev/stderr:                           Special Files.
17237
17332
* /dev/stdin:                            Special Files.
17238
17333
* /dev/stdout:                           Special Files.
17239
 
* /dev/user <1>:                         Special Files.
17240
 
* /dev/user:                             Passwd Functions.
 
17334
* /dev/user <1>:                         Passwd Functions.
 
17335
* /dev/user:                             Special Files.
17241
17336
* < operator:                            Typing and Comparison.
17242
17337
* <= operator:                           Typing and Comparison.
17243
17338
* == operator:                           Typing and Comparison.
17256
17351
* _tm_addup:                             Mktime Function.
17257
17352
* _tm_isleap:                            Mktime Function.
17258
17353
* accessing fields:                      Fields.
17259
 
* account information <1>:               Passwd Functions.
17260
 
* account information:                   Group Functions.
 
17354
* account information <1>:               Group Functions.
 
17355
* account information:                   Passwd Functions.
17261
17356
* acronym:                               History.
17262
17357
* action, curly braces:                  Action Overview.
17263
17358
* action, default:                       Very Simple.
17272
17367
* amiga:                                 Amiga Installation.
17273
17368
* anchors in regexps:                    Regexp Operators.
17274
17369
* and operator:                          Boolean Ops.
17275
 
* anonymous ftp <1>:                     Getting.
17276
 
* anonymous ftp:                         Other Versions.
 
17370
* anonymous ftp <1>:                     Other Versions.
 
17371
* anonymous ftp:                         Getting.
17277
17372
* applications of awk:                   When.
17278
17373
* ARGC:                                  Auto-set.
17279
 
* ARGIND <1>:                            Auto-set.
17280
 
* ARGIND:                                Other Arguments.
 
17374
* ARGIND <1>:                            Other Arguments.
 
17375
* ARGIND:                                Auto-set.
17281
17376
* argument processing:                   Getopt Function.
17282
17377
* arguments in function call:            Function Calls.
17283
17378
* arguments, command line:               Invoking Gawk.
17284
 
* ARGV <1>:                              Auto-set.
17285
 
* ARGV:                                  Other Arguments.
 
17379
* ARGV <1>:                              Other Arguments.
 
17380
* ARGV:                                  Auto-set.
17286
17381
* arithmetic operators:                  Arithmetic Ops.
17287
17382
* array assignment:                      Assigning Elements.
17288
17383
* array reference:                       Reference to Elements.
17309
17404
* atan2:                                 Numeric Functions.
17310
17405
* atari:                                 Atari Installation.
17311
17406
* automatic initialization:              More Complex.
17312
 
* awk language, POSIX version <1>:       OFMT.
17313
 
* awk language, POSIX version <2>:       Next Statement.
17314
 
* awk language, POSIX version <3>:       Continue Statement.
17315
 
* awk language, POSIX version <4>:       Format Modifiers.
17316
 
* awk language, POSIX version <5>:       Field Splitting Summary.
17317
 
* awk language, POSIX version <6>:       Arithmetic Ops.
17318
 
* awk language, POSIX version <7>:       User-modified.
17319
 
* awk language, POSIX version <8>:       Precedence.
17320
 
* awk language, POSIX version <9>:       Assignment Ops.
17321
 
* awk language, POSIX version <10>:      String Functions.
17322
 
* awk language, POSIX version <11>:      Regexp Operators.
17323
 
* awk language, POSIX version <12>:      Escape Sequences.
17324
 
* awk language, POSIX version <13>:      Regexp Operators.
17325
 
* awk language, POSIX version <14>:      String Functions.
17326
 
* awk language, POSIX version <15>:      Definition Syntax.
17327
 
* awk language, POSIX version <16>:      Break Statement.
17328
 
* awk language, POSIX version <17>:      Regexp Operators.
17329
 
* awk language, POSIX version:           Conversion.
 
17407
* awk language, POSIX version <1>:       Definition Syntax.
 
17408
* awk language, POSIX version <2>:       String Functions.
 
17409
* awk language, POSIX version <3>:       User-modified.
 
17410
* awk language, POSIX version <4>:       Next Statement.
 
17411
* awk language, POSIX version <5>:       Continue Statement.
 
17412
* awk language, POSIX version <6>:       Break Statement.
 
17413
* awk language, POSIX version <7>:       Precedence.
 
17414
* awk language, POSIX version <8>:       Assignment Ops.
 
17415
* awk language, POSIX version <9>:       Arithmetic Ops.
 
17416
* awk language, POSIX version <10>:      Conversion.
 
17417
* awk language, POSIX version <11>:      Format Modifiers.
 
17418
* awk language, POSIX version <12>:      OFMT.
 
17419
* awk language, POSIX version <13>:      Field Splitting Summary.
 
17420
* awk language, POSIX version <14>:      Regexp Operators.
 
17421
* awk language, POSIX version:           Escape Sequences.
17330
17422
* awk language, V.4 version <1>:         SVR4.
17331
17423
* awk language, V.4 version:             Escape Sequences.
17332
17424
* AWKPATH environment variable:          AWKPATH Variable.
17333
17425
* awksed:                                Simple Sed.
17334
 
* backslash continuation <1>:            Statements/Lines.
17335
 
* backslash continuation:                Egrep Program.
 
17426
* backslash continuation <1>:            Egrep Program.
 
17427
* backslash continuation:                Statements/Lines.
17336
17428
* backslash continuation and comments:   Statements/Lines.
17337
 
* backslash continuation in csh <1>:     More Complex.
17338
 
* backslash continuation in csh:         Statements/Lines.
 
17429
* backslash continuation in csh <1>:     Statements/Lines.
 
17430
* backslash continuation in csh:         More Complex.
17339
17431
* basic function of awk:                 Getting Started.
17340
17432
* BBS-list file:                         Sample Data Files.
17341
17433
* BEGIN special pattern:                 BEGIN/END.
17347
17439
* break statement:                       Break Statement.
17348
17440
* break, outside of loops:               Break Statement.
17349
17441
* Brennan, Michael <1>:                  Other Versions.
17350
 
* Brennan, Michael <2>:                  Delete.
17351
 
* Brennan, Michael <3>:                  Other Versions.
17352
 
* Brennan, Michael:                      Simple Sed.
 
17442
* Brennan, Michael <2>:                  Simple Sed.
 
17443
* Brennan, Michael:                      Delete.
17353
17444
* buffer matching operators:             GNU Regexp Operators.
17354
17445
* buffering output:                      I/O Functions.
17355
17446
* buffering, interactive vs. non-interactive: I/O Functions.
17393
17484
* comp.lang.awk:                         Bugs.
17394
17485
* comparison expressions:                Typing and Comparison.
17395
17486
* comparisons, string vs. regexp:        Typing and Comparison.
17396
 
* compatibility mode <1>:                Options.
17397
 
* compatibility mode:                    POSIX/GNU.
 
17487
* compatibility mode <1>:                POSIX/GNU.
 
17488
* compatibility mode:                    Options.
17398
17489
* complemented character list:           Regexp Operators.
17399
17490
* compound statement:                    Statements.
17400
17491
* computed regular expressions:          Computed Regexps.
17411
17502
* conversions, during subscripting:      Numeric Array Subscripts.
17412
17503
* converting dates to timestamps:        Mktime Function.
17413
17504
* CONVFMT <1>:                           Numeric Array Subscripts.
17414
 
* CONVFMT <2>:                           Conversion.
17415
 
* CONVFMT:                               User-modified.
 
17505
* CONVFMT <2>:                           User-modified.
 
17506
* CONVFMT:                               Conversion.
17416
17507
* cos:                                   Numeric Functions.
17417
 
* csh, backslash continuation <1>:       More Complex.
17418
 
* csh, backslash continuation:           Statements/Lines.
 
17508
* csh, backslash continuation <1>:       Statements/Lines.
 
17509
* csh, backslash continuation:           More Complex.
17419
17510
* curly braces:                          Action Overview.
17420
17511
* custom.h configuration file:           Configuration Philosophy.
17421
17512
* cut utility:                           Cut Program.
17422
17513
* cut.awk:                               Cut Program.
17423
17514
* d.c., see "dark corner":               This Manual.
17424
 
* dark corner <1>:                       Control Letters.
17425
 
* dark corner <2>:                       Continue Statement.
17426
 
* dark corner <3>:                       Using Constant Regexps.
17427
 
* dark corner <4>:                       Single Character Fields.
17428
 
* dark corner <5>:                       OFMT.
17429
 
* dark corner <6>:                       Auto-set.
17430
 
* dark corner <7>:                       Truth Values.
17431
 
* dark corner <8>:                       Field Splitting Summary.
17432
 
* dark corner <9>:                       Assignment Options.
17433
 
* dark corner <10>:                      This Manual.
17434
 
* dark corner <11>:                      Escape Sequences.
17435
 
* dark corner <12>:                      Format Modifiers.
17436
 
* dark corner <13>:                      Break Statement.
17437
 
* dark corner <14>:                      Invoking Gawk.
17438
 
* dark corner <15>:                      Plain Getline.
17439
 
* dark corner <16>:                      Using Constant Regexps.
 
17515
* dark corner <1>:                       Other Arguments.
 
17516
* dark corner <2>:                       Invoking Gawk.
 
17517
* dark corner <3>:                       String Functions.
 
17518
* dark corner <4>:                       Uninitialized Subscripts.
 
17519
* dark corner <5>:                       Auto-set.
 
17520
* dark corner <6>:                       Exit Statement.
 
17521
* dark corner <7>:                       Continue Statement.
 
17522
* dark corner <8>:                       Break Statement.
 
17523
* dark corner <9>:                       Using BEGIN/END.
 
17524
* dark corner <10>:                      Truth Values.
 
17525
* dark corner <11>:                      Conversion.
 
17526
* dark corner <12>:                      Assignment Options.
 
17527
* dark corner <13>:                      Using Constant Regexps.
 
17528
* dark corner <14>:                      Format Modifiers.
 
17529
* dark corner <15>:                      Control Letters.
 
17530
* dark corner <16>:                      OFMT.
17440
17531
* dark corner <17>:                      Getline Summary.
17441
 
* dark corner <18>:                      Multiple Line.
17442
 
* dark corner <19>:                      String Functions.
17443
 
* dark corner <20>:                      Conversion.
17444
 
* dark corner <21>:                      Uninitialized Subscripts.
17445
 
* dark corner <22>:                      Auto-set.
17446
 
* dark corner <23>:                      Records.
17447
 
* dark corner <24>:                      Exit Statement.
17448
 
* dark corner <25>:                      Other Arguments.
17449
 
* dark corner:                           Using BEGIN/END.
 
17532
* dark corner <18>:                      Plain Getline.
 
17533
* dark corner <19>:                      Multiple Line.
 
17534
* dark corner <20>:                      Field Splitting Summary.
 
17535
* dark corner <21>:                      Single Character Fields.
 
17536
* dark corner <22>:                      Records.
 
17537
* dark corner <23>:                      Escape Sequences.
 
17538
* dark corner:                           This Manual.
17450
17539
* data-driven languages:                 Getting Started.
17451
17540
* dates, converting to timestamps:       Mktime Function.
17452
17541
* decrement operators:                   Increment Ops.
17460
17549
* deleting entire arrays:                Delete.
17461
17550
* deprecated features:                   Obsolete.
17462
17551
* deprecated options:                    Obsolete.
17463
 
* differences between gawk and awk <1>:  Records.
17464
 
* differences between gawk and awk <2>:  Scalar Constants.
17465
 
* differences between gawk and awk <3>:  Getline Summary.
17466
 
* differences between gawk and awk <4>:  ARGC and ARGV.
17467
 
* differences between gawk and awk <5>:  Calling Built-in.
 
17552
* differences between gawk and awk <1>:  AWKPATH Variable.
 
17553
* differences between gawk and awk <2>:  String Functions.
 
17554
* differences between gawk and awk <3>:  Calling Built-in.
 
17555
* differences between gawk and awk <4>:  Delete.
 
17556
* differences between gawk and awk <5>:  ARGC and ARGV.
17468
17557
* differences between gawk and awk <6>:  Nextfile Statement.
17469
 
* differences between gawk and awk <7>:  AWKPATH Variable.
17470
 
* differences between gawk and awk <8>:  Getline Intro.
17471
 
* differences between gawk and awk <9>:  Special Files.
17472
 
* differences between gawk and awk <10>: Conditional Exp.
17473
 
* differences between gawk and awk <11>: Arithmetic Ops.
17474
 
* differences between gawk and awk <12>: String Functions.
17475
 
* differences between gawk and awk <13>: I/O And BEGIN/END.
 
17558
* differences between gawk and awk <7>:  I/O And BEGIN/END.
 
17559
* differences between gawk and awk <8>:  Conditional Exp.
 
17560
* differences between gawk and awk <9>:  Arithmetic Ops.
 
17561
* differences between gawk and awk <10>: Using Constant Regexps.
 
17562
* differences between gawk and awk <11>: Scalar Constants.
 
17563
* differences between gawk and awk <12>: Close Files And Pipes.
 
17564
* differences between gawk and awk <13>: Special Files.
17476
17565
* differences between gawk and awk <14>: Redirection.
17477
 
* differences between gawk and awk <15>: Case-sensitivity.
17478
 
* differences between gawk and awk <16>: Using Constant Regexps.
17479
 
* differences between gawk and awk <17>: Close Files And Pipes.
17480
 
* differences between gawk and awk <18>: String Functions.
17481
 
* differences between gawk and awk <19>: Close Files And Pipes.
17482
 
* differences between gawk and awk <20>: Delete.
17483
 
* differences between gawk and awk <21>: Single Character Fields.
17484
 
* differences between gawk and awk:      Records.
 
17566
* differences between gawk and awk <15>: Getline Summary.
 
17567
* differences between gawk and awk <16>: Getline Intro.
 
17568
* differences between gawk and awk <17>: Single Character Fields.
 
17569
* differences between gawk and awk <18>: Records.
 
17570
* differences between gawk and awk:      Case-sensitivity.
17485
17571
* directory search:                      AWKPATH Variable.
17486
17572
* division:                              Arithmetic Ops.
17487
17573
* documenting awk programs <1>:          Library Names.
17489
17575
* dupword.awk:                           Dupword Program.
17490
17576
* dynamic regular expressions:           Computed Regexps.
17491
17577
* EBCDIC:                                Ordinal Functions.
17492
 
* egrep <1>:                             One-shot.
17493
 
* egrep:                                 Regexp Operators.
 
17578
* egrep <1>:                             Regexp Operators.
 
17579
* egrep:                                 One-shot.
17494
17580
* egrep utility:                         Egrep Program.
17495
17581
* egrep.awk:                             Egrep Program.
17496
17582
* element assignment:                    Assigning Elements.
17510
17596
* environment variable, AWKPATH:         AWKPATH Variable.
17511
17597
* environment variable, POSIXLY_CORRECT: Options.
17512
17598
* equivalence classes:                   Regexp Operators.
17513
 
* ERRNO <1>:                             Getline Intro.
 
17599
* ERRNO <1>:                             Auto-set.
17514
17600
* ERRNO <2>:                             Close Files And Pipes.
17515
 
* ERRNO:                                 Auto-set.
 
17601
* ERRNO:                                 Getline Intro.
17516
17602
* errors, common <1>:                    Typing and Comparison.
17517
 
* errors, common <2>:                    Computed Regexps.
 
17603
* errors, common <2>:                    Print Examples.
17518
17604
* errors, common <3>:                    Basic Field Splitting.
17519
 
* errors, common:                        Print Examples.
 
17605
* errors, common:                        Computed Regexps.
17520
17606
* escape processing, sub et. al.:        String Functions.
17521
17607
* escape sequence notation:              Escape Sequences.
17522
17608
* evaluation, order of:                  Calling Built-in.
17545
17631
* FIELDWIDTHS:                           User-modified.
17546
17632
* file descriptors:                      Special Files.
17547
17633
* file, awk program:                     Long.
17548
 
* FILENAME <1>:                          Reading Files.
 
17634
* FILENAME <1>:                          Auto-set.
17549
17635
* FILENAME <2>:                          Getline Summary.
17550
 
* FILENAME:                              Auto-set.
 
17636
* FILENAME:                              Reading Files.
17551
17637
* FILENAME, being set by getline:        Getline Summary.
17552
17638
* Fish, Fred:                            Bugs.
17553
17639
* flushing buffers:                      I/O Functions.
17561
17647
* formatted output:                      Printf.
17562
17648
* formatted timestamps:                  Gettimeofday Function.
17563
17649
* Free Software Foundation <1>:          Getting.
17564
 
* Free Software Foundation <2>:          Manual History.
17565
 
* Free Software Foundation:              Getting.
 
17650
* Free Software Foundation:              Manual History.
17566
17651
* FreeBSD:                               Manual History.
17567
17652
* Friedl, Jeffrey:                       Acknowledgements.
17568
 
* FS <1>:                                Basic Field Splitting.
17569
 
* FS:                                    User-modified.
17570
 
* ftp, anonymous <1>:                    Getting.
17571
 
* ftp, anonymous:                        Other Versions.
17572
 
* function call <1>:                     Function Calls.
17573
 
* function call:                         Function Caveats.
 
17653
* FS <1>:                                User-modified.
 
17654
* FS:                                    Basic Field Splitting.
 
17655
* ftp, anonymous <1>:                    Other Versions.
 
17656
* ftp, anonymous:                        Getting.
 
17657
* function call <1>:                     Function Caveats.
 
17658
* function call:                         Function Calls.
17574
17659
* function definition:                   Definition Syntax.
17575
17660
* function, recursive:                   Definition Syntax.
17576
17661
* functions, undefined:                  Function Caveats.
17602
17687
* gsub, third argument of:               String Functions.
17603
17688
* Hankerson, Darrel <1>:                 Bugs.
17604
17689
* Hankerson, Darrel:                     Acknowledgements.
17605
 
* historical features <1>:               Command Line Field Separator.
 
17690
* historical features <1>:               Historical Features.
17606
17691
* historical features <2>:               String Functions.
17607
 
* historical features <3>:               Break Statement.
17608
 
* historical features <4>:               Continue Statement.
17609
 
* historical features:                   Historical Features.
 
17692
* historical features <3>:               Continue Statement.
 
17693
* historical features <4>:               Break Statement.
 
17694
* historical features:                   Command Line Field Separator.
17610
17695
* history of awk:                        History.
17611
17696
* histsort.awk:                          History Sorting.
17612
17697
* how awk works:                         Two Rules.
17616
17701
* id.awk:                                Id Program.
17617
17702
* if-else statement:                     If Statement.
17618
17703
* igawk.sh:                              Igawk Program.
17619
 
* IGNORECASE <1>:                        User-modified.
17620
 
* IGNORECASE <2>:                        Array Intro.
 
17704
* IGNORECASE <1>:                        Array Intro.
 
17705
* IGNORECASE <2>:                        User-modified.
17621
17706
* IGNORECASE:                            Case-sensitivity.
17622
17707
* IGNORECASE and array subscripts:       Array Intro.
17623
17708
* ignoring case:                         Case-sensitivity.
17624
 
* implementation limits <1>:             Getline Summary.
17625
 
* implementation limits:                 Redirection.
 
17709
* implementation limits <1>:             Redirection.
 
17710
* implementation limits:                 Getline Summary.
17626
17711
* in operator:                           Typing and Comparison.
17627
17712
* increment operators:                   Increment Ops.
17628
17713
* index:                                 String Functions.
17648
17733
* inventory-shipped file:                Sample Data Files.
17649
17734
* invocation of gawk:                    Invoking Gawk.
17650
17735
* ISO 8601:                              Time Functions.
17651
 
* ISO 8859-1 <1>:                        Case-sensitivity.
17652
 
* ISO 8859-1:                            Glossary.
 
17736
* ISO 8859-1 <1>:                        Glossary.
 
17737
* ISO 8859-1:                            Case-sensitivity.
17653
17738
* ISO Latin-1 <1>:                       Glossary.
17654
17739
* ISO Latin-1:                           Case-sensitivity.
17655
 
* Jaegermann, Michal <1>:                Acknowledgements.
17656
 
* Jaegermann, Michal:                    Bugs.
 
17740
* Jaegermann, Michal <1>:                Bugs.
 
17741
* Jaegermann, Michal:                    Acknowledgements.
17657
17742
* join:                                  Join Function.
17658
 
* Kernighan, Brian <1>:                  Concatenation.
17659
 
* Kernighan, Brian <2>:                  Acknowledgements.
17660
 
* Kernighan, Brian <3>:                  Other Versions.
17661
 
* Kernighan, Brian <4>:                  BTL.
 
17743
* Kernighan, Brian <1>:                  Other Versions.
 
17744
* Kernighan, Brian <2>:                  BTL.
 
17745
* Kernighan, Brian <3>:                  Concatenation.
 
17746
* Kernighan, Brian <4>:                  Acknowledgements.
17662
17747
* Kernighan, Brian:                      History.
17663
17748
* known bugs:                            Known Bugs.
17664
17749
* labels.awk:                            Labels Program.
17671
17756
* limitations <1>:                       Redirection.
17672
17757
* limitations:                           Getline Summary.
17673
17758
* line break:                            Statements/Lines.
17674
 
* line continuation <1>:                 Boolean Ops.
17675
 
* line continuation <2>:                 Print Examples.
17676
 
* line continuation <3>:                 Statements/Lines.
17677
 
* line continuation:                     Conditional Exp.
17678
 
* Linux <1>:                             Manual History.
17679
 
* Linux:                                 Atari Compiling.
 
17759
* line continuation <1>:                 Conditional Exp.
 
17760
* line continuation <2>:                 Boolean Ops.
 
17761
* line continuation <3>:                 Print Examples.
 
17762
* line continuation:                     Statements/Lines.
 
17763
* Linux <1>:                             Atari Compiling.
 
17764
* Linux:                                 Manual History.
17680
17765
* locale, definition of:                 Time Functions.
17681
17766
* log:                                   Numeric Functions.
17682
17767
* logical false:                         Truth Values.
17695
17780
* mawk:                                  Other Versions.
17696
17781
* merging strings:                       Join Function.
17697
17782
* metacharacters:                        Regexp Operators.
17698
 
* mistakes, common <1>:                  Basic Field Splitting.
17699
 
* mistakes, common <2>:                  Typing and Comparison.
17700
 
* mistakes, common <3>:                  Computed Regexps.
17701
 
* mistakes, common:                      Print Examples.
 
17783
* mistakes, common <1>:                  Typing and Comparison.
 
17784
* mistakes, common <2>:                  Print Examples.
 
17785
* mistakes, common <3>:                  Basic Field Splitting.
 
17786
* mistakes, common:                      Computed Regexps.
17702
17787
* mktime:                                Mktime Function.
17703
17788
* modifiers (in format specifiers):      Format Modifiers.
17704
17789
* multi-dimensional subscripts:          Multi-dimensional.
17718
17803
* next, inside a user-defined function:  Next Statement.
17719
17804
* nextfile function:                     Nextfile Function.
17720
17805
* nextfile statement:                    Nextfile Statement.
17721
 
* NF <1>:                                Fields.
17722
 
* NF:                                    Auto-set.
 
17806
* NF <1>:                                Auto-set.
 
17807
* NF:                                    Fields.
17723
17808
* non-interactive buffering vs. interactive: I/O Functions.
17724
17809
* not operator:                          Boolean Ops.
17725
17810
* NR <1>:                                Auto-set.
17726
17811
* NR:                                    Records.
17727
 
* null string <1>:                       Conversion.
17728
 
* null string <2>:                       Regexp Field Splitting.
17729
 
* null string:                           Truth Values.
 
17812
* null string <1>:                       Truth Values.
 
17813
* null string <2>:                       Conversion.
 
17814
* null string:                           Regexp Field Splitting.
17730
17815
* null string, as array subscript:       Uninitialized Subscripts.
17731
17816
* number of fields, NF:                  Fields.
17732
17817
* number of records, NR, FNR:            Records.
17739
17824
* obsolete features:                     Obsolete.
17740
17825
* obsolete options:                      Obsolete.
17741
17826
* OFMT <1>:                              User-modified.
17742
 
* OFMT <2>:                              OFMT.
17743
 
* OFMT:                                  Conversion.
17744
 
* OFS <1>:                               Output Separators.
17745
 
* OFS:                                   User-modified.
 
17827
* OFMT <2>:                              Conversion.
 
17828
* OFMT:                                  OFMT.
 
17829
* OFS <1>:                               User-modified.
 
17830
* OFS:                                   Output Separators.
17746
17831
* old awk:                               History.
17747
17832
* old awk vs. new awk:                   Names.
17748
17833
* one-liners:                            One-liners.
17763
17848
* or operator:                           Boolean Ops.
17764
17849
* ord:                                   Ordinal Functions.
17765
17850
* order of evaluation:                   Calling Built-in.
17766
 
* ORS <1>:                               Output Separators.
17767
 
* ORS:                                   User-modified.
 
17851
* ORS <1>:                               User-modified.
 
17852
* ORS:                                   Output Separators.
17768
17853
* output:                                Printing.
17769
17854
* output field separator, OFS:           Output Separators.
17770
17855
* output format specifier, OFMT:         OFMT.
17788
17873
* PERL:                                  Future Extensions.
17789
17874
* pipeline, input:                       Getline/Pipe.
17790
17875
* pipes for output:                      Redirection.
17791
 
* portability issues <1>:                Delete.
17792
 
* portability issues <2>:                Statements/Lines.
17793
 
* portability issues <3>:                String Functions.
17794
 
* portability issues <4>:                Close Files And Pipes.
17795
 
* portability issues <5>:                Definition Syntax.
17796
 
* portability issues <6>:                I/O Functions.
17797
 
* portability issues <7>:                Portability Notes.
17798
 
* portability issues:                    Escape Sequences.
 
17876
* portability issues <1>:                Portability Notes.
 
17877
* portability issues <2>:                Definition Syntax.
 
17878
* portability issues <3>:                I/O Functions.
 
17879
* portability issues <4>:                String Functions.
 
17880
* portability issues <5>:                Delete.
 
17881
* portability issues <6>:                Close Files And Pipes.
 
17882
* portability issues <7>:                Escape Sequences.
 
17883
* portability issues:                    Statements/Lines.
17799
17884
* porting gawk:                          New Ports.
17800
 
* POSIX awk <1>:                         Assignment Ops.
17801
 
* POSIX awk <2>:                         Field Splitting Summary.
17802
 
* POSIX awk <3>:                         Format Modifiers.
17803
 
* POSIX awk <4>:                         String Functions.
17804
 
* POSIX awk <5>:                         OFMT.
17805
 
* POSIX awk <6>:                         Escape Sequences.
17806
 
* POSIX awk <7>:                         Definition Syntax.
17807
 
* POSIX awk <8>:                         Arithmetic Ops.
17808
 
* POSIX awk <9>:                         Precedence.
 
17885
* POSIX awk <1>:                         Definition Syntax.
 
17886
* POSIX awk <2>:                         String Functions.
 
17887
* POSIX awk <3>:                         User-modified.
 
17888
* POSIX awk <4>:                         Next Statement.
 
17889
* POSIX awk <5>:                         Continue Statement.
 
17890
* POSIX awk <6>:                         Break Statement.
 
17891
* POSIX awk <7>:                         Precedence.
 
17892
* POSIX awk <8>:                         Assignment Ops.
 
17893
* POSIX awk <9>:                         Arithmetic Ops.
17809
17894
* POSIX awk <10>:                        Conversion.
17810
 
* POSIX awk <11>:                        User-modified.
17811
 
* POSIX awk <12>:                        Next Statement.
17812
 
* POSIX awk <13>:                        Continue Statement.
17813
 
* POSIX awk <14>:                        Break Statement.
17814
 
* POSIX awk <15>:                        Regexp Operators.
17815
 
* POSIX awk <16>:                        String Functions.
17816
 
* POSIX awk <17>:                        Precedence.
17817
 
* POSIX awk:                             Regexp Operators.
 
17895
* POSIX awk <11>:                        Format Modifiers.
 
17896
* POSIX awk <12>:                        OFMT.
 
17897
* POSIX awk <13>:                        Field Splitting Summary.
 
17898
* POSIX awk <14>:                        Regexp Operators.
 
17899
* POSIX awk:                             Escape Sequences.
17818
17900
* POSIX mode:                            Options.
17819
17901
* POSIXLY_CORRECT environment variable:  Options.
17820
17902
* precedence:                            Precedence.
17831
17913
* program, awk:                          This Manual.
17832
17914
* program, definition of:                Getting Started.
17833
17915
* program, self contained:               Executable Scripts.
17834
 
* programs, documenting <1>:             Comments.
17835
 
* programs, documenting:                 Library Names.
 
17916
* programs, documenting <1>:             Library Names.
 
17917
* programs, documenting:                 Comments.
17836
17918
* pwcat program:                         Passwd Functions.
17837
17919
* pwcat.c:                               Passwd Functions.
17838
17920
* quotient:                              Arithmetic Ops.
17842
17924
* rand:                                  Numeric Functions.
17843
17925
* random numbers, seed of:               Numeric Functions.
17844
17926
* range pattern:                         Ranges.
17845
 
* Rankin, Pat <1>:                       Acknowledgements.
17846
 
* Rankin, Pat <2>:                       Bugs.
17847
 
* Rankin, Pat:                           Assignment Ops.
 
17927
* Rankin, Pat <1>:                       Bugs.
 
17928
* Rankin, Pat <2>:                       Assignment Ops.
 
17929
* Rankin, Pat:                           Acknowledgements.
17848
17930
* reading files:                         Reading Files.
17849
17931
* reading files, getline command:        Getline.
17850
17932
* reading files, multiple line records:  Multiple Line.
17861
17943
* regexp comparison vs. string comparison: Typing and Comparison.
17862
17944
* regexp constant:                       Regexp Usage.
17863
17945
* regexp constants, difference between slashes and quotes: Computed Regexps.
17864
 
* regexp match/non-match operators <1>:  Regexp Usage.
17865
 
* regexp match/non-match operators:      Typing and Comparison.
 
17946
* regexp match/non-match operators <1>:  Typing and Comparison.
 
17947
* regexp match/non-match operators:      Regexp Usage.
17866
17948
* regexp matching operators:             Regexp Usage.
17867
17949
* regexp operators:                      Regexp Operators.
17868
17950
* regexp operators, GNU specific:        GNU Regexp Operators.
17893
17975
* RS:                                    Records.
17894
17976
* RSTART <1>:                            String Functions.
17895
17977
* RSTART:                                Auto-set.
17896
 
* RT <1>:                                Records.
17897
 
* RT <2>:                                Auto-set.
17898
 
* RT:                                    Multiple Line.
 
17978
* RT <1>:                                Auto-set.
 
17979
* RT <2>:                                Multiple Line.
 
17980
* RT:                                    Records.
17899
17981
* rule, definition of:                   Getting Started.
17900
17982
* running awk programs:                  Running gawk.
17901
17983
* running long programs:                 Long.
17907
17989
* scripts, shell:                        Executable Scripts.
17908
17990
* search path:                           AWKPATH Variable.
17909
17991
* search path, for source files:         AWKPATH Variable.
17910
 
* sed utility <1>:                       Simple Sed.
17911
 
* sed utility <2>:                       Igawk Program.
 
17992
* sed utility <1>:                       Igawk Program.
 
17993
* sed utility <2>:                       Simple Sed.
17912
17994
* sed utility:                           Field Splitting Summary.
17913
17995
* seed for random numbers:               Numeric Functions.
17914
17996
* self contained programs:               Executable Scripts.
17915
 
* shell quoting <1>:                     Read Terminal.
17916
 
* shell quoting:                         Long.
 
17997
* shell quoting <1>:                     Long.
 
17998
* shell quoting:                         Read Terminal.
17917
17999
* shell scripts:                         Executable Scripts.
17918
18000
* short-circuit operators:               Boolean Ops.
17919
18001
* side effect:                           Assignment Ops.
17948
18030
* sub:                                   String Functions.
17949
18031
* sub, third argument of:                String Functions.
17950
18032
* subscripts in arrays:                  Multi-dimensional.
17951
 
* SUBSEP <1>:                            User-modified.
17952
 
* SUBSEP:                                Multi-dimensional.
 
18033
* SUBSEP <1>:                            Multi-dimensional.
 
18034
* SUBSEP:                                User-modified.
17953
18035
* substr:                                String Functions.
17954
18036
* subtraction:                           Arithmetic Ops.
17955
18037
* system:                                I/O Functions.
17996
18078
* wordfreq.sh:                           Word Sorting.
17997
18079
* || operator:                           Boolean Ops.
17998
18080
* ~ operator <1>:                        Typing and Comparison.
17999
 
* ~ operator <2>:                        Regexp Usage.
18000
 
* ~ operator <3>:                        Case-sensitivity.
18001
 
* ~ operator <4>:                        Computed Regexps.
18002
 
* ~ operator:                            Regexp Constants.
 
18081
* ~ operator <2>:                        Regexp Constants.
 
18082
* ~ operator <3>:                        Computed Regexps.
 
18083
* ~ operator <4>:                        Case-sensitivity.
 
18084
* ~ operator:                            Regexp Usage.
18003
18085
 
18004
18086
 
18005
18087
 
18006
18088
Tag Table:
18007
 
Node: Top1230
18008
 
Node: Preface20719
18009
 
Node: History22069
18010
 
Node: Manual History23427
18011
 
Node: Acknowledgements26869
18012
 
Node: What Is Awk30496
18013
 
Node: This Manual32150
18014
 
Node: Conventions34849
18015
 
Node: Sample Data Files36141
18016
 
Node: Getting Started39224
18017
 
Node: Names41532
18018
 
Node: Running gawk43102
18019
 
Node: One-shot44263
18020
 
Node: Read Terminal45650
18021
 
Node: Long47262
18022
 
Node: Executable Scripts48655
18023
 
Node: Comments50910
18024
 
Node: Very Simple52070
18025
 
Node: Two Rules54117
18026
 
Node: More Complex56296
18027
 
Node: Statements/Lines59412
18028
 
Node: Other Features63685
18029
 
Node: When64411
18030
 
Node: One-liners66346
18031
 
Node: Regexp69233
18032
 
Node: Regexp Usage70559
18033
 
Node: Escape Sequences72709
18034
 
Node: Regexp Operators78161
18035
 
Node: GNU Regexp Operators89194
18036
 
Node: Case-sensitivity92898
18037
 
Node: Leftmost Longest96014
18038
 
Node: Computed Regexps97549
18039
 
Node: Reading Files100206
18040
 
Node: Records101974
18041
 
Node: Fields108469
18042
 
Node: Non-Constant Fields111538
18043
 
Node: Changing Fields113825
18044
 
Node: Field Separators118232
18045
 
Node: Basic Field Splitting118934
18046
 
Node: Regexp Field Splitting122163
18047
 
Node: Single Character Fields124730
18048
 
Node: Command Line Field Separator125799
18049
 
Node: Field Splitting Summary129040
18050
 
Node: Constant Size131059
18051
 
Node: Multiple Line135096
18052
 
Node: Getline140504
18053
 
Node: Getline Intro141578
18054
 
Node: Plain Getline142541
18055
 
Node: Getline/Variable144805
18056
 
Node: Getline/File145947
18057
 
Node: Getline/Variable/File147257
18058
 
Node: Getline/Pipe149231
18059
 
Node: Getline/Variable/Pipe151321
18060
 
Node: Getline Summary152439
18061
 
Node: Printing154033
18062
 
Node: Print155101
18063
 
Node: Print Examples157201
18064
 
Node: Output Separators159811
18065
 
Node: OFMT161709
18066
 
Node: Printf163111
18067
 
Node: Basic Printf164015
18068
 
Node: Control Letters165549
18069
 
Node: Format Modifiers168237
18070
 
Node: Printf Examples172386
18071
 
Node: Redirection175164
18072
 
Node: Special Files179803
18073
 
Node: Close Files And Pipes185040
18074
 
Node: Expressions189100
18075
 
Node: Constants191296
18076
 
Node: Scalar Constants191775
18077
 
Node: Regexp Constants192780
18078
 
Node: Using Constant Regexps193242
18079
 
Node: Variables196443
18080
 
Node: Using Variables197097
18081
 
Node: Assignment Options198532
18082
 
Node: Conversion200477
18083
 
Node: Arithmetic Ops203659
18084
 
Node: Concatenation205793
18085
 
Node: Assignment Ops207215
18086
 
Node: Increment Ops212811
18087
 
Node: Truth Values215339
18088
 
Node: Typing and Comparison216387
18089
 
Node: Boolean Ops222394
18090
 
Node: Conditional Exp226087
18091
 
Node: Function Calls227764
18092
 
Node: Precedence230644
18093
 
Node: Patterns and Actions234032
18094
 
Node: Pattern Overview234458
18095
 
Node: Kinds of Patterns235233
18096
 
Node: Regexp Patterns236370
18097
 
Node: Expression Patterns236924
18098
 
Node: Ranges240575
18099
 
Node: BEGIN/END243299
18100
 
Node: Using BEGIN/END243768
18101
 
Node: I/O And BEGIN/END246731
18102
 
Node: Empty248747
18103
 
Node: Action Overview249046
18104
 
Node: Statements251618
18105
 
Node: If Statement253324
18106
 
Node: While Statement254827
18107
 
Node: Do Statement256857
18108
 
Node: For Statement257959
18109
 
Node: Break Statement261216
18110
 
Node: Continue Statement263487
18111
 
Node: Next Statement265483
18112
 
Node: Nextfile Statement267980
18113
 
Node: Exit Statement269894
18114
 
Node: Built-in Variables271904
18115
 
Node: User-modified273000
18116
 
Node: Auto-set277922
18117
 
Node: ARGC and ARGV284452
18118
 
Node: Arrays287798
18119
 
Node: Array Intro289261
18120
 
Node: Reference to Elements293301
18121
 
Node: Assigning Elements295251
18122
 
Node: Array Example295753
18123
 
Node: Scanning an Array297472
18124
 
Node: Delete299802
18125
 
Node: Numeric Array Subscripts301861
18126
 
Node: Uninitialized Subscripts303767
18127
 
Node: Multi-dimensional305411
18128
 
Node: Multi-scanning308506
18129
 
Node: Built-in310149
18130
 
Node: Calling Built-in311138
18131
 
Node: Numeric Functions313109
18132
 
Node: String Functions316928
18133
 
Node: I/O Functions335860
18134
 
Node: Time Functions341445
18135
 
Node: User-defined350298
18136
 
Node: Definition Syntax351011
18137
 
Node: Function Example355260
18138
 
Node: Function Caveats357589
18139
 
Node: Return Statement361459
18140
 
Node: Invoking Gawk364114
18141
 
Node: Options365349
18142
 
Node: Other Arguments374179
18143
 
Node: AWKPATH Variable376827
18144
 
Node: Obsolete379576
18145
 
Node: Undocumented380242
18146
 
Node: Known Bugs380491
18147
 
Node: Library Functions381623
18148
 
Node: Portability Notes384041
18149
 
Node: Nextfile Function385325
18150
 
Node: Assert Function390201
18151
 
Node: Round Function393540
18152
 
Node: Ordinal Functions395184
18153
 
Node: Join Function398636
18154
 
Node: Mktime Function400688
18155
 
Node: Gettimeofday Function412261
18156
 
Node: Filetrans Function416273
18157
 
Node: Getopt Function419950
18158
 
Node: Passwd Functions431306
18159
 
Node: Group Functions439639
18160
 
Node: Library Names447536
18161
 
Node: Sample Programs451461
18162
 
Node: Clones451952
18163
 
Node: Cut Program453046
18164
 
Node: Egrep Program463075
18165
 
Node: Id Program470738
18166
 
Node: Split Program474009
18167
 
Node: Tee Program477377
18168
 
Node: Uniq Program480173
18169
 
Node: Wc Program487718
18170
 
Node: Miscellaneous Programs492136
18171
 
Node: Dupword Program493046
18172
 
Node: Alarm Program494717
18173
 
Node: Translate Program499261
18174
 
Node: Labels Program504073
18175
 
Node: Word Sorting507617
18176
 
Node: History Sorting511962
18177
 
Node: Extract Program513931
18178
 
Node: Simple Sed520889
18179
 
Node: Igawk Program524233
18180
 
Node: Language History537554
18181
 
Node: V7/SVR3.1538787
18182
 
Node: SVR4541442
18183
 
Node: POSIX542964
18184
 
Node: BTL544584
18185
 
Node: POSIX/GNU545347
18186
 
Node: Gawk Summary549779
18187
 
Node: Command Line Summary550601
18188
 
Node: Language Summary553577
18189
 
Node: Variables/Fields555958
18190
 
Node: Fields Summary556692
18191
 
Node: Built-in Summary558478
18192
 
Node: Arrays Summary562193
18193
 
Node: Data Type Summary563486
18194
 
Node: Rules Summary565312
18195
 
Node: Pattern Summary566840
18196
 
Node: Regexp Summary569025
18197
 
Node: Actions Summary572408
18198
 
Node: Operator Summary574240
18199
 
Node: Control Flow Summary575467
18200
 
Node: I/O Summary576024
18201
 
Node: Printf Summary579013
18202
 
Node: Special File Summary582351
18203
 
Node: Built-in Functions Summary584029
18204
 
Node: Time Functions Summary588029
18205
 
Node: String Constants Summary588920
18206
 
Node: Functions Summary590240
18207
 
Node: Historical Features591301
18208
 
Node: Installation592799
18209
 
Node: Gawk Distribution594014
18210
 
Node: Getting594517
18211
 
Node: Extracting597463
18212
 
Node: Distribution contents598850
18213
 
Node: Unix Installation603626
18214
 
Node: Quick Installation604135
18215
 
Node: Configuration Philosophy605653
18216
 
Node: VMS Installation608055
18217
 
Node: VMS Compilation608594
18218
 
Node: VMS Installation Details610198
18219
 
Node: VMS Running611840
18220
 
Node: VMS POSIX613430
18221
 
Node: PC Installation614710
18222
 
Node: Atari Installation618113
18223
 
Node: Atari Compiling619297
18224
 
Node: Atari Using621206
18225
 
Node: Amiga Installation624053
18226
 
Node: Bugs625164
18227
 
Node: Other Versions628240
18228
 
Node: Notes629814
18229
 
Node: Compatibility Mode630421
18230
 
Node: Additions631264
18231
 
Node: Adding Code631962
18232
 
Node: New Ports637302
18233
 
Node: Future Extensions641470
18234
 
Node: Improvements643718
18235
 
Node: Glossary645586
18236
 
Node: Copying662651
18237
 
Node: Index681843
 
18089
Node: Top1238
 
18090
Node: Preface20727
 
18091
Node: History22076
 
18092
Node: Manual History23434
 
18093
Node: Acknowledgements26876
 
18094
Node: What Is Awk30503
 
18095
Node: This Manual32157
 
18096
Node: Conventions34856
 
18097
Node: Sample Data Files36148
 
18098
Node: Getting Started39231
 
18099
Node: Names41539
 
18100
Node: Running gawk43108
 
18101
Node: One-shot44269
 
18102
Node: Read Terminal45656
 
18103
Node: Long47268
 
18104
Node: Executable Scripts48661
 
18105
Node: Comments51227
 
18106
Node: Very Simple53009
 
18107
Node: Two Rules55056
 
18108
Node: More Complex57235
 
18109
Node: Statements/Lines60351
 
18110
Node: Other Features64624
 
18111
Node: When65350
 
18112
Node: One-liners67285
 
18113
Node: Regexp70172
 
18114
Node: Regexp Usage71498
 
18115
Node: Escape Sequences73648
 
18116
Node: Regexp Operators79102
 
18117
Node: GNU Regexp Operators90135
 
18118
Node: Case-sensitivity93840
 
18119
Node: Leftmost Longest96956
 
18120
Node: Computed Regexps98491
 
18121
Node: Reading Files101148
 
18122
Node: Records102916
 
18123
Node: Fields109411
 
18124
Node: Non-Constant Fields112479
 
18125
Node: Changing Fields114766
 
18126
Node: Field Separators119174
 
18127
Node: Basic Field Splitting119876
 
18128
Node: Regexp Field Splitting123105
 
18129
Node: Single Character Fields125672
 
18130
Node: Command Line Field Separator126741
 
18131
Node: Field Splitting Summary129982
 
18132
Node: Constant Size132002
 
18133
Node: Multiple Line136039
 
18134
Node: Getline141447
 
18135
Node: Getline Intro142521
 
18136
Node: Plain Getline143484
 
18137
Node: Getline/Variable145748
 
18138
Node: Getline/File146890
 
18139
Node: Getline/Variable/File148200
 
18140
Node: Getline/Pipe150174
 
18141
Node: Getline/Variable/Pipe152382
 
18142
Node: Getline Summary153618
 
18143
Node: Printing155212
 
18144
Node: Print156280
 
18145
Node: Print Examples158381
 
18146
Node: Output Separators160989
 
18147
Node: OFMT162887
 
18148
Node: Printf164289
 
18149
Node: Basic Printf165193
 
18150
Node: Control Letters166727
 
18151
Node: Format Modifiers169415
 
18152
Node: Printf Examples173564
 
18153
Node: Redirection176343
 
18154
Node: Special Files180982
 
18155
Node: Close Files And Pipes186219
 
18156
Node: Expressions190280
 
18157
Node: Constants192476
 
18158
Node: Scalar Constants192955
 
18159
Node: Regexp Constants193959
 
18160
Node: Using Constant Regexps194421
 
18161
Node: Variables197622
 
18162
Node: Using Variables198276
 
18163
Node: Assignment Options199711
 
18164
Node: Conversion201656
 
18165
Node: Arithmetic Ops204838
 
18166
Node: Concatenation206972
 
18167
Node: Assignment Ops208394
 
18168
Node: Increment Ops213990
 
18169
Node: Truth Values216518
 
18170
Node: Typing and Comparison217566
 
18171
Node: Boolean Ops223573
 
18172
Node: Conditional Exp227266
 
18173
Node: Function Calls229043
 
18174
Node: Precedence231923
 
18175
Node: Patterns and Actions235311
 
18176
Node: Pattern Overview235737
 
18177
Node: Kinds of Patterns236512
 
18178
Node: Regexp Patterns237649
 
18179
Node: Expression Patterns238203
 
18180
Node: Ranges241855
 
18181
Node: BEGIN/END244579
 
18182
Node: Using BEGIN/END245048
 
18183
Node: I/O And BEGIN/END248011
 
18184
Node: Empty250027
 
18185
Node: Action Overview250326
 
18186
Node: Statements252898
 
18187
Node: If Statement254604
 
18188
Node: While Statement256107
 
18189
Node: Do Statement258138
 
18190
Node: For Statement259240
 
18191
Node: Break Statement262497
 
18192
Node: Continue Statement264768
 
18193
Node: Next Statement266764
 
18194
Node: Nextfile Statement269261
 
18195
Node: Exit Statement271175
 
18196
Node: Built-in Variables273186
 
18197
Node: User-modified274282
 
18198
Node: Auto-set279203
 
18199
Node: ARGC and ARGV285732
 
18200
Node: Arrays289571
 
18201
Node: Array Intro291034
 
18202
Node: Reference to Elements295074
 
18203
Node: Assigning Elements297024
 
18204
Node: Array Example297526
 
18205
Node: Scanning an Array299245
 
18206
Node: Delete301575
 
18207
Node: Numeric Array Subscripts303829
 
18208
Node: Uninitialized Subscripts305735
 
18209
Node: Multi-dimensional307379
 
18210
Node: Multi-scanning310474
 
18211
Node: Built-in312117
 
18212
Node: Calling Built-in313106
 
18213
Node: Numeric Functions315077
 
18214
Node: String Functions318895
 
18215
Node: I/O Functions338236
 
18216
Node: Time Functions344046
 
18217
Node: User-defined352896
 
18218
Node: Definition Syntax353609
 
18219
Node: Function Example357858
 
18220
Node: Function Caveats360188
 
18221
Node: Return Statement364059
 
18222
Node: Invoking Gawk366714
 
18223
Node: Options367949
 
18224
Node: Other Arguments376778
 
18225
Node: AWKPATH Variable379426
 
18226
Node: Obsolete382174
 
18227
Node: Undocumented382840
 
18228
Node: Known Bugs383089
 
18229
Node: Library Functions384227
 
18230
Node: Portability Notes386646
 
18231
Node: Nextfile Function387930
 
18232
Node: Assert Function392798
 
18233
Node: Round Function396150
 
18234
Node: Ordinal Functions397788
 
18235
Node: Join Function401232
 
18236
Node: Mktime Function403277
 
18237
Node: Gettimeofday Function414844
 
18238
Node: Filetrans Function418849
 
18239
Node: Getopt Function422512
 
18240
Node: Passwd Functions433861
 
18241
Node: Group Functions442182
 
18242
Node: Library Names450066
 
18243
Node: Sample Programs453991
 
18244
Node: Clones454482
 
18245
Node: Cut Program455576
 
18246
Node: Egrep Program465598
 
18247
Node: Id Program473254
 
18248
Node: Split Program476518
 
18249
Node: Tee Program479879
 
18250
Node: Uniq Program482668
 
18251
Node: Wc Program490206
 
18252
Node: Miscellaneous Programs494616
 
18253
Node: Dupword Program495526
 
18254
Node: Alarm Program497190
 
18255
Node: Translate Program501728
 
18256
Node: Labels Program506531
 
18257
Node: Word Sorting510067
 
18258
Node: History Sorting514412
 
18259
Node: Extract Program516374
 
18260
Node: Simple Sed523969
 
18261
Node: Igawk Program527306
 
18262
Node: Language History540619
 
18263
Node: V7/SVR3.1541852
 
18264
Node: SVR4544507
 
18265
Node: POSIX546029
 
18266
Node: BTL547649
 
18267
Node: POSIX/GNU548412
 
18268
Node: Gawk Summary552844
 
18269
Node: Command Line Summary553666
 
18270
Node: Language Summary556642
 
18271
Node: Variables/Fields559022
 
18272
Node: Fields Summary559756
 
18273
Node: Built-in Summary561542
 
18274
Node: Arrays Summary565257
 
18275
Node: Data Type Summary566550
 
18276
Node: Rules Summary568376
 
18277
Node: Pattern Summary569904
 
18278
Node: Regexp Summary572089
 
18279
Node: Actions Summary575472
 
18280
Node: Operator Summary577304
 
18281
Node: Control Flow Summary578531
 
18282
Node: I/O Summary579088
 
18283
Node: Printf Summary582077
 
18284
Node: Special File Summary585415
 
18285
Node: Built-in Functions Summary587093
 
18286
Node: Time Functions Summary591093
 
18287
Node: String Constants Summary591984
 
18288
Node: Functions Summary593304
 
18289
Node: Historical Features594365
 
18290
Node: Installation595863
 
18291
Node: Gawk Distribution597078
 
18292
Node: Getting597581
 
18293
Node: Extracting600532
 
18294
Node: Distribution contents601919
 
18295
Node: Unix Installation606695
 
18296
Node: Quick Installation607204
 
18297
Node: Configuration Philosophy608722
 
18298
Node: VMS Installation611124
 
18299
Node: VMS Compilation611663
 
18300
Node: VMS Installation Details613267
 
18301
Node: VMS Running614909
 
18302
Node: VMS POSIX616499
 
18303
Node: PC Installation617779
 
18304
Node: Atari Installation621182
 
18305
Node: Atari Compiling622366
 
18306
Node: Atari Using624275
 
18307
Node: Amiga Installation627122
 
18308
Node: Bugs628233
 
18309
Node: Other Versions631286
 
18310
Node: Notes632972
 
18311
Node: Compatibility Mode633579
 
18312
Node: Additions634422
 
18313
Node: Adding Code635120
 
18314
Node: New Ports640450
 
18315
Node: Future Extensions644610
 
18316
Node: Improvements646553
 
18317
Node: Glossary648421
 
18318
Node: Copying665492
 
18319
Node: Index684684
18238
18320
 
18239
18321
End Tag Table