Next: Common Extensions, Previous: POSIX/GNU, Up: Language History [Contents][Index]
gawk
FeaturesThis section describes the features in gawk
over and above those in POSIX awk
,
in the order they were added to gawk
.
Version 2.10 of gawk
introduced the following features:
AWKPATH
environment variable for specifying a path search for the -f
command-line option (see section Command-Line Options).IGNORECASE
variable and its effects (see section Case Sensitivity in Matching)./dev/stdin
, /dev/stdout
, /dev/stderr
and /dev/fd/N
special file names (see section Special File names in gawk
).Version 2.13 of gawk
introduced the following features:
FIELDWIDTHS
variable and its effects (see section Reading Fixed-Width Data).systime()
and strftime()
built-in functions for obtaining and printing timestamps (see section Time Functions).-W lint
option to provide error and portability checking for both the source code and at runtime.-W compat
option to turn off the GNU extensions.-W posix
option for full POSIX compliance.Version 2.14 of gawk
introduced the following feature:
next file
statement for skipping to the next data file (see section The nextfile
Statement).Version 2.15 of gawk
introduced the following features:
ARGIND
, which tracks the movement of FILENAME
through ARGV
.ERRNO
, which contains the system error message when getline
returns -1 or close()
fails./dev/pid
, /dev/ppid
, /dev/pgrpid
, and /dev/user
special file names. These have since been removed.delete array
’ (see section The delete
Statement).--
.--source
option for mixing command-line and library-file source code.Version 3.0 of gawk
introduced the following features:
IGNORECASE
changed, now applying to string comparison as well as regexp operations (see section Case Sensitivity in Matching).RT
, which contains the input text that matched RS
(see section How Input Is Split into Records).gensub()
function for more powerful text manipulation (see section String-Manipulation Functions).strftime()
function acquired a default time format, allowing it to be called with no arguments (see section Time Functions).FS
and for the third argument to split()
to be null strings (see section Making Each Character a Separate Field).RS
to be a regexp (see section How Input Is Split into Records).next file
statement became nextfile
(see section The nextfile
Statement).fflush()
function from BWK awk
(then at Bell Laboratories; see section Input/Output Functions).--lint-old
option to warn about constructs that are not available in the original Version 7 Unix version of awk
(see section Major Changes Between V7 and SVR3.1).-m
option from BWK awk
. (Brian was still at Bell Laboratories at the time.) This was later removed from both his awk
and from gawk
.--re-interval
option to provide interval expressions in regexps (see section Regular Expression Operators).--traditional
option was added as a better name for --compat
(see section Command-Line Options).gawk
for Unix-Like Systems).Version 3.1 of gawk
introduced the following features:
BINMODE
, for non-POSIX systems, which allows binary I/O for input and/or output files (see section Using gawk
on PC Operating Systems).LINT
, which dynamically controls lint warnings.PROCINFO
, an array for providing process-related information.TEXTDOMAIN
, for setting an application’s internationalization text domain (see section Internationalization with gawk
).awk
program source code (see section Octal and Hexadecimal Numbers).|&
’ operator for two-way I/O to a coprocess (see section Two-Way Communications with Another Process)./inet
special files for TCP/IP networking using ‘|&
’ (see section Using gawk
for Network Programming).close()
that allows closing one end of a two-way pipe to a coprocess (see section Two-Way Communications with Another Process).match()
function for capturing text-matching subexpressions within a regexp (see section String-Manipulation Functions).printf
formats for making translations easier (see section Rearranging printf
Arguments).asort()
and asorti()
functions for sorting arrays (see section Controlling Array Traversal and Array Sorting).bindtextdomain()
, dcgettext()
and dcngettext()
functions for internationalization (see section Internationalizing awk
Programs).extension()
function and the ability to add new built-in functions dynamically (see section Writing Extensions for gawk
).mktime()
function for creating timestamps (see section Time Functions).and()
, or()
, xor()
, compl()
, lshift()
, rshift()
, and strtonum()
functions (see section Bit-Manipulation Functions).next file
’ as two words was removed completely (see section The nextfile
Statement).--dump-variables
option to print a list of all global variables.--exec
option, for use in CGI scripts.--gen-po
command-line option and the use of a leading underscore to mark strings that should be translated (see section Extracting Marked Strings).--non-decimal-data
option to allow non-decimal input data (see section Allowing Nondecimal Input Data).--profile
option and pgawk
, the profiling version of gawk
, for producing execution profiles of awk
programs (see section Profiling Your awk
Programs).--use-lc-numeric
option to force gawk
to use the locale’s decimal point for parsing input data (see section Conversion of Strings and Numbers).gawk
for Unix-Like Systems).gettext
for gawk
’s own message output (see section gawk
Can Speak Your Language).sub()
and gsub()
(see section More about ‘\
’ and ‘&
’ with sub()
, gsub()
, and gensub()
).length()
function was extended to accept an array argument and return the number of elements in the array (see section String-Manipulation Functions).strftime()
function acquired a third argument to enable printing times as UTC (see section Time Functions).Version 4.0 of gawk
introduced the following features:
FPAT
, which allows you to specify a regexp that matches the fields, instead of matching the field separator (see section Defining Fields by Content).PROCINFO["sorted_in"]
exists, ‘for(iggy in foo)
’ loops sort the indices before looping over them. The value of this element provides control over how the indices are sorted before the loop traversal starts (see section Using Predefined Array Scanning Orders with gawk
).PROCINFO["strftime"]
, which holds the default format for strftime()
(see section Time Functions)./dev/pid
, /dev/ppid
, /dev/pgrpid
and /dev/user
were removed./inet6
special file. /inet4
forces IPv4 and /inet
chooses the system default, which is probably IPv4 (see section Using gawk
for Network Programming).\s
’ and ‘\S
’ escape sequences in regular expressions (see section gawk
-Specific Regexp Operators).--traditional
(see section Regular Expression Operators).break
and continue
became invalid outside a loop, even with --traditional
(see section The break
Statement, and also see The continue
Statement).fflush()
, nextfile
, and ‘delete array
’ are allowed if --posix
or --traditional
, since they are all now part of POSIX.asort()
and asorti()
, specifying how to sort (see section String-Manipulation Functions).fflush()
changed to match BWK awk
and for POSIX; now both ‘fflush()
’ and ‘fflush("")
’ flush all open output redirections (see section Input/Output Functions).isarray()
function which distinguishes if an item is an array or not, to make it possible to traverse arrays of arrays (see section Getting Type Information).patsplit()
function which gives the same capability as FPAT
, for splitting (see section String-Manipulation Functions).split()
function, which is an array to hold the values of the separators (see section String-Manipulation Functions).BEGINFILE
and ENDFILE
special patterns (see section The BEGINFILE
and ENDFILE
Special Patterns).switch
/ case
are enabled by default (see section The switch
Statement).-b
and --characters-as-bytes
options which prevent gawk
from treating input as a multibyte string.--compat
, --copyleft
, and --usage
long options were removed.--gen-po
option was finally renamed to the correct --gen-pot
.--sandbox
option which disables certain features.#!
’ scripts.--posix
or --traditional
are used (see section Directories on the Command Line).gawk
internals were rewritten, bringing the dgawk
debugger and possibly improved performance (see section Debugging awk
Programs).strcoll()
/ wcscoll()
(see section String Comparison Based on Locale Collating Order).gawk
for Network Programming).[d-h]
’ are treated as if they were in the C locale, no matter what kind of regexp is being used, and even if --posix
(see section Regexp Ranges and Locales: A Long Sad Story).Version 4.1 of gawk
introduced the following features:
SYMTAB
, FUNCTAB
, and PROCINFO["identifiers"]
(see section Built-in Variables That Convey Information).gawk
, pgawk
, and dgawk
, were merged into one, named just gawk
. As a result the command-line options changed.-D
option invokes the debugger.-i
and --include
options load awk
library files.-l
and --load
options load compiled dynamic extensions.-M
and --bignum
options enable MPFR.-o
option only does pretty-printing.-p
option is used for profiling.-R
option was removed.gawk
).and()
, or()
and xor()
functions changed to allow any number of arguments, with a minimum of two (see section Bit-Manipulation Functions).gawk
).getline
became allowed inside BEGINFILE
and ENDFILE
(see section The BEGINFILE
and ENDFILE
Special Patterns).where
command was added to the debugger (see section Working with the Stack).Version 4.2 of gawk
introduced the following changes:
ENVIRON
are reflected into gawk
’s environment and that of programs that it runs. See section Built-in Variables That Convey Information.FIELDWIDTHS
was enhanced to allow skipping characters before assigning a value to a field (see section Defining Fields by Content).PROCINFO["argv"]
array. See section Built-in Variables That Convey Information.\x
’ escapes is now two. See section Escape Sequences.@/…/
’ (see section Strongly Typed Regexp Constants).mktime()
function now accepts an optional second argument (see section Time Functions).typeof()
function (see section Getting Type Information).-s
/ --no-optimize
to disable optimizations.gawk
behaved with --posix
. As of 2013, the standard restored historical behavior, and now default field splitting with --posix
also allows newlines to separate fields.print
and printf
. See section Enabling Nonfatal Output.PROCINFO[input-file, "RETRY"]
; (see section Retrying Reads After Certain Input Errors).awk
Programs):
--pretty-print
option no longer runs the awk
program too.gawk
):
get_file()
function to access open redirections.nonfatal()
function for generating nonfatal error messages.make install
’ (see section Shell Startup Files).igawk
program and its manual page are no longer installed when gawk
is built. See section An Easy Way to Use Library Functions.Version 5.0 added the following features:
PROCINFO["platform"]
array element, which allows you to write code that takes the operating system / platform into account.Version 5.1 was created to release gawk
with a correct
major version number for the API. This was overlooked for version 5.0,
unfortunately. It added the following features:
Next: Common Extensions, Previous: POSIX/GNU, Up: Language History [Contents][Index]