On Tuesday 14 November 2006 08:08, Rüdiger Noack wrote:
> Hans-Georg Bork schrieb:
> >> [EMAIL PROTECTED]:/home/holbe% echo -n "" | awk 'END { print "Ha!" }'
> >
> > [EMAIL PROTECTED]:~$ echo -n "" | awk '{ print "Ha!" }'
> > [EMAIL PROTECTED]:~$
> >
> > ... und warum geht dies dann nicht, bzw. liefert nix?
>
> Weil ich das jetzt gelernt habe, die Antwort von mir: :-)
>
> [EMAIL PROTECTED]:~$ echo -n "" | awk '{ print "Ha!" }'
> [EMAIL PROTECTED]:~$ echo -n "" | awk 'END { print "Ha!" }'
> Ha!
>
Das war aber nicht die Frage (das weiß er doch schon)
Er will das warum wissen, also wieso man mit END den String hinter print 
kriegt und ohne END nicht.
Ich weiß nur soviel: es gibt in awk 3 Möglichkeiten:
1.) BEGIN - wird ausgeführt, bevor Input gelesen wird
 echo -n "" | awk ' BEGIN { print "Ha!" }'
Ha!
2.) Input loop - wird für jede Zeile input ausgeführt
 echo "" | awk '{ print "Ha!" }'
Ha!
3.) END - wird ausgeführt, nachdem der input gelesen wurde
Beispiel wie oben

Was ich nicht ganz raffe, ist, wieso -n =trailing newline-Unterdrückung
awk nicht mehr den String hinter print lesen lässt (also letztlich das 
gleiche wie Hans-Georg ;-)

-- 
You will outgrow your usefulness.

Antwort per Email an