The -F option for awk is more clever than the manual says. Do we want the behavior, or is the manual right?
I noticed a working bug in a little script that led to this suprising result: $ echo foo | awk -F t '{print FS}' | hexdump -C 00000000 09 0a |..| 00000002 If the argument to the -F option is t awk assumes you meant '\t' and sets the FS variable to TAB. That's not mentioned in the manual. Apparently the only way to use the letter 't' as a field separator is with the regex '[t]'. I'm sure that's meant to help the clueless, because I found myself taking advantage of it in my own script | grep -f /etc/whitelist.dat \ | awk -F\t '{print $2}' \ | sed s'/[<>]//g' \ even though I had no right to expect it to work. This appears to be the only specially treated character. The relevant function is setfs(). It has a pithy comment inside conditional compilation: static char * setfs(char *p) { #ifdef notdef /* wart: t=>\t */ if (p[0] == 't' && p[1] == 0) return "\t"; else #endif if (p[0] != 0) return p; return NULL; } I find no support for this "wart" at the open group (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html). Maybe we should just change the Makefile? --jkl