SOFPJF@VM.UOGUELPH.CA (Peter Jaspers-Fayer) (02/12/91)
I guess that even after a year of trying, I do not understand the way
the shell (csh) passes things to it's children, viz:
This is an excerpt from a longer awk command, and I'm stuck:
This works
awk '{ print "'$user': " $0}'
as does
awk '{ print "'`hostname`': " $0}'
But not
awk '{ print "'`date`': " $0}' (Spaces(?) Colons(?))
Even tho
echo '{ print "'`date`': " $0}' works OK, and if I CUT&PASTE
the result of the echo into another awk '', something like:
awk '{ print "Mon Feb 11 11:35:32 EST 1991: " $0}' IT WORKS!
Why are the last and 2nd-last awks different? Anyone please?
/PJ SofPJF@VM.UoGuelph.Ca
--------------------------------------
How did a fool and his money get together in the first place? -Anonjim@baroque.Stanford.EDU (James Helman) (02/12/91)
The problem is that date(1) prints out a space separated list which
breaks the argument to awk. If you eliminate the spaces, it works,
e.g.:
awk '{ print "'`date | sed -e s/\ /:/g`': " $0}'
Jim Helman
Department of Applied Physics Durand 012
Stanford University FAX: (415) 725-3377
(jim@KAOS.stanford.edu) Work: (415) 723-9127dprclf@ARCO.COM ("Chris L. Fouts") (02/12/91)
In message <9102111145.aa01900@VGR.BRL.MIL>; "Peter Jaspers-Fayer" writes: > I guess that even after a year of trying, I do not understand the way > the shell (csh) passes things to it's children, viz: > > This is an excerpt from a longer awk command, and I'm stuck: > > This works > awk '{ print "'$user': " $0}' > as does > awk '{ print "'`hostname`': " $0}' > But not > awk '{ print "'`date`': " $0}' (Spaces(?) Colons(?)) > Even tho > echo '{ print "'`date`': " $0}' works OK, and if I CUT&PASTE > the result of the echo into another awk '', something like: > > awk '{ print "Mon Feb 11 11:35:32 EST 1991: " $0}' IT WORKS! > > Why are the last and 2nd-last awks different? Anyone please? The first awk winds up as awk '{ print "'Mon Feb 11 11:35:32 EST 1991': " $0}' which has the awk program spread across multiple arguments as highlighted below: awk '{ print "'Mon Feb 11 11:35:32 EST 1991': " $0}' ^^^^^^^^^^^^^^ ^^^ ^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^ = 6 args whereas awk '{ print "Mon Feb 11 11:35:32 EST 1991: " $0}' has the awk program in only 1 argument. To accomplish what you want (get ready for yet more quotes), try: awk '{ print "'"`date`"': " $0}' ^ ^ | | +------+----These quotes prevent the spaces in the date output from splitting up the argument. My head starts hurting if I look at this too long.... -- Chris L. Fouts Email: dprclf@phobos Ext: 3850 "Fate is the path of least action." -- Kim Stanley Robinson in "A Short, Sharp Knock" "Every day, I sit in traffic and consider my fate...."