[[FIXES]] revised: 2014-01-15 23:10 UTC\\ \\ Near the beginning was the 1987 awk book:\\ [[http://cm.bell-labs.com/cm/cs/awkbook/| ''The AWK Programming Language'' ]]\\ Since then Dr. Kernighan (the //k// of awk) has updated it and\\ fixed bugs. Updated Dec 20, 2012\\ File FIXES from the [[http://www.cs.princeton.edu/~bwk/btl.mirror/|source]] code: "This file lists all bug fixes,\\ changes, etc., made since the AWK book was sent to the\\ printers in August, 1987."\\ (( copyright: [[awk_Lucent_Copyright_notice]] ))\\ \\ Edited - reordered oldest to newest; pruned out bug fixes;\\ added undocumented features at the end.\\ 2014 - added dates, %* format, -Ft ---- added toupper and tolower functions (Oct xx, 1987)\\ recognize -- as terminator of command-line options\\ evaluate all arguments of built-in functions, as in C; the appearance is that\\ arguments are evaluated before the function is called\\ Added \a ("alert"), \v (vertical tab), \xhhh (hexadecimal)\\ ENVIRON array contains environment: if shell variable V=thing,\\ ENVIRON["V"] is "thing"\\ multiple -f arguments permitted.\\ \\ fixed order of evaluation of commandline assignments to match what the\\ book claims: an argument of the form x=e is evaluated at the\\ time it would have been opened if it were a filename (p 63).\\ added some missing ansi printf conversion letters: %i %X %E %G.\\ no sensible meaning for h or L, so they may not do what one expects.\\ made %* conversions work. (Jun 14, 1989)\\ added -v x=1 ... for immediate commandline variable assignment;\\ done before the BEGIN block for sure. they have to precede the\\ program if the program is on the commandline.\\ requires a separate -v for each assignment.\\ \\ FILENAME is now defined in the BEGIN block (Oct 11, 1989)\\ "-" means stdin in getline as well as on the commandline.\\ Added \x to regular expressions (already in strings).\\ awk -f - reads the program from stdin.\\ enforce variable name syntax for commandline variables:\\ has to start with letter or _.\\ added explicit check for /dev/std(in,out,err) in redirection.\\ \\ added CONVFMT as in posix (Jul 23, 1993)\\ delete arrayname is now legal; it clears the elements but leaves\\ the array, which may not be the right behavior.\\ enhanced split(), as in gawk, etc: split(s, a, "") splits s into\\ a[1]...a[length(s)] with each character a single element.\\ made the same changes for field-splitting if FS is "".\\ \\ added nextfile, as in gawk: causes immediate advance to next input file.\\ printf("%c", 0) to include a null byte in output.\\ added a "-safe" argument that disables file output (print >, print >>),\\ process creation (cmd**{{{|}}}**getline, print **{{{|}}}**, system),\\ and access to the environment (ENVIRON).\\ added -V to print version number (Mar 12, 1998)\\ \\ permit \n explicitly in character classes (Sep 24, 2000)\\ close() is now a function. it returns whatever the library fclose returns,\\ and -1 for closing a file or pipe that wasn't opened.\\ added support for posix character class names like [:digit:] (Nov 16, 2001)\\ fflush() or fflush("") flushes all files and pipes.\\ length(arrayname) returns number of elements (Jan 1, 2002)\\ subtle change to split: if source is empty, number of elems\\ is always 0 and the array is not set.\\ \\ values of $0 et al are preserved in the END block.\\ -version and --version options to print the version and exit (Jan 17, 2006)\\ a change to FS is now noticed immediately for subsequent splits.\\ changed srand() to return the previous seed (which is 1\\ on the first call of srand).\\ split(s, a, **{{{//}}}**) now behaves the same as split(s, a, "") (Aug 7, 2011)\\ ---- undocumented features:\\ 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.\\ from commandline: -F "" is nojoy setting FS to null\\ use -v FS="" instead.\\ \\ the new escapes \a \v \xhh are nojoy from the -v var=value\\ (although they work fine in the code)\\ use octal instead ie -v alert=\007\\ system() returns errorcode / 256 (in windows)\\ cmd **{{{|}}}** getline; n = close(cmd); n is the errorcode\\ nojoy re -v e== use -v e=\075\\ -Ft sets FS to \t tab; whereas -v FS=t is the letter t.\\ ---- **[[http://awk.freeshell.org/g0ph3r|g0ph3r]]** ----
Summary:
This change is a minor edit.
Username: