awk nawk oawk

Difference between revision 14 and current revision

No diff available.

in 1977 there was awk.
this page attempts to explain the history of awk.
the 1978 7th Edition awk(1) man pages and report are here:
http://syl7ce6.yossman.net/fotc/

then they enhanced it and wrote a book.
to avoid confusion, the original was called oawk
and the new version nawk.
it has been a major source of confusion ever since.
the awk book from 1988
http://www.cs.bell-labs.com/cm/cs/awkbook/index.html
page v: original in 1977 / new version in 1985
page vi: This version in System V Rel 3.1
page 80: new things added
functions: close system atan2 sin cos rand srand match sub gsub
vars: ARC ARGV FNR RSTART RLENGTH SUBSEP
keywords: do delete function return
the latest One True awk:
http://www.cs.princeton.edu/~bwk/btl.mirror/index.html
from file FIXES - lists additions/changes since the awk book
toupper() tolower()
\a ("alert"), \v (vertical tab), \xhhh (hexadecimal),
ENVIRON[]
comand line: -v x=1 -v y=2
CONVFMT
nextfile
posix character class names like [:digit:]
length(arrayname)
undocumented command line switch -d dumps debug info.
valid filenames /dev/stdin /dev/stdout /dev/stderr

can use ** or **= in place of ^ for exponention.

array SYMTAB holds info, eg:

BEGIN	{
	_print_SYMTAB();
	exit(0);
}

function	_print_SYMTAB(  varname, fmt)  {
	fmt = "SYMTAB['%s'] = '%s'\n";
	for(varname in SYMTAB)					\
		if ((varname != "ENVIRON") && (varname != "ARGV")	\
			&& (varname != "SYMTAB")			\
			&& (varname != "_print_SYMTAB"))		\
			printf(fmt, varname, SYMTAB[varname]) > "/dev/stderr";
#:		can not access array or function names
	return(1);
}