AWK/shell quoting (was: Re: Access to UNIX-Related Publications)

Mike Haertel mike at umn-cs.CS.UMN.EDU
Sun Jan 7 04:56:40 AEST 1990


In article <166 at omaha1.UUCP> wcc at omaha1.UUCP (William C Carey) writes:
>Any of the luminaries out there know how to get 'awk' (not nawk) to ouput a
>single-quote character ( ascii 0x27 ).  I can't get the 'print' or
>the 'printf' statement to do it with any combination of backslashes,
>double-quotes, or percent characters.

Your problem is that you are embedding the awk program in a quoted
shell string, and the single quotes you are trying to use in the awk
program are interacting with the shell's quoting conventions.

There are 2 solutions:

1.  You can move the awk program to a file, foo.awk, and then merely
say "awk -f foo.awk" in the shell program.  Then an awk program
to print a single quote would look like:

	BEGIN {print "'"}

2.  You can do it by cooperating with shell quoting.  This is hairy,
but will print a single quote:

	awk 'BEGIN {print "'"'"'"}'

Breaking it down we see that the argument to awk consists of three
concatenated shell-quoted strings:

	'BEGIN {print "'  "'"  '"}'
-- 
Mike Haertel <mike at ai.mit.edu>
"Of course, we have to keep in mind that this year's Killer Micro
 is next year's Lawn Sprinkler Controller . . ." -- Eugene Brooks



More information about the Comp.unix.questions mailing list