AwkOnWindowsHowto
rough cut - needs edit
3) awk command line switches/usage from a win32 cmd.exe prompt: D:\!\utl > awk95.exe usage: awk95.exe [-F fs] [-v var=value] [-f progfile | 'prog'] [file ...] -version or --version; print version and exit; (was -V; prints: awk version 20070501 But is actually 20071023 version) - stdin -- explicit end of args -safe see above -f progfile next argument is program filename -f - read the program from stdin -F fs set field separator FS to value of fs (nojoy -F "" to set FS to null; use -v FS="") -v var=value -v a=1 to be done NOW. one -v for each variable (\a \v \xhh Not interpreted in value; use octal \nnn instead) -d[n] undocumented -d does debug dump examples: awk95 "BEGIN {print \"Hello, World!\"}" |- Hello, World! #: |- indicates output of above awk95 -v s="Hello, World!" BEGIN{print(s)} |- Hello, World! #: pgm needs no " since no spaces awk95 -v s=Hello,\040World! BEGIN{print(s)} |- Hello, World! #: \040 is octal for space echo BEGIN {print "Hello, World!"} | awk95 -f - |- Hello, World! #: read the program from stdin cmd.exe special: & " ^ % < > | = 5) miscellaneous valid filenames: /dev/stdin /dev/stdout /dev/stderr array SYMTAB holds values of variables for(varname in SYMTAB) \ if ((varname != "ENVIRON") && (varname != "ARGV") \ && (varname != "SYMTAB") && (varname != "array")) \ printf("SYMTAB[%s]=%s\n", varname, SYMTAB[varname]) The `**' and `**=' operators are valid instead of ^ #: system() returns errorcode/256 eg system("%awk% BEGIN{exit(256)}) #: s|getline; n = close(s); is ok Except when n=-1 then message #: regular expression metacharacters: \ . ^ $ [ ] | + * ? ( ) #: filenames may Not contain: \ / : * ? " < > | #: cmd.exe special: & " ^ % < > | = #: start ["title"] [/min|/max] [/low|/high] [/wait] [/b] #: ENVIRON[] -- remember indices are case sensitive assoc .awk=awkfile ftype awkfile=D:\!\utl\awk95.exe -f "%1" %* 5) timings timethis "echo.BEGIN{n=0+n;while(n--);} | %awk% -f - -v n=2e6" timethis %awk% -v n=2e6 BEGIN{n=0+n;while(n--);} -v n=2e6 -v s=The\040current\040time\040is:\04012:30:49.80 -v x=xx for 2e6 ops; MOPS - the ; time subtracted from next awk95 nawk gawk mawk ; 0.73 1.00 1.37 1.20 i++; 1.69 1.54 2.32 5.56 i = k; 0.76 0.46 2.77 3.03 i = A[k]; 0.37 0.18 0.63 1.80 i = rand(); 0.36 0.18 1.82 1.96 i = rand(1); 1.07 0.59 nojoy nojoy i = srand(1); 0.89 0.56 0.037 0.96 A[n] = n; 0.037 0.029 0.00091 0.20 i = index(s,x); 0.60 0.57 0.71 1.01 i = substr(s,32); 0.35 0.22 0.23 0.90 i = tolower(s); 0.15 0.079 0.088 0.88 i = split(s,A); 0.026 0.019 0.011 0.31