awk field separator

Arnold D. Robbins arnold at infographix.infographix.com
Thu Feb 22 17:59:35 EST 1996


> Is there a way in awk to specify multiple field separators?  Like FS =   
> ";" | ":" | "\"  I know this doesn't work, I just wanted to show what I'm   
> trying to accomplish.  BTW, FS=";:\" doesn't work B/C it thinks I mean   
> the entire string ";:\".  Has anyone tackled a problem like this before.

Using a modern awk (nawk, gawk, mawk), FS can be any regular expression.
The use of [..] as pointed out works. The \ can be included too

	BEGIN { FS = "[;:\\\\]" }
	...

The double backslashing is a pain though.  You type two for every one that
gawk has to deal with.  Internally, the string becomes

	"[:;\\]"

And then when gawk processes this as a regex, it uses the three literal
characters `:', `;', and `\' in the brackets.

This is discussed in a few places in the 3.0.0 gawk manual.

Arnold Robbins		InfoGraphix (Star Imaging LLC, dba)
Phone: +1-404-523-4944	250 Williams Street, Suite 1120, Atlanta, GA 30303
Fax:   +1-404-523-4882	E-mail: arnold.robbins at infographix.com
"Oh! Look at all those zeros!" --- Chana Robbins, Age 3.5






More information about the Ale mailing list