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.