[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: awk



On Tuesday 14 November 2006 08:08, Rüdiger Noack wrote:
> Hans-Georg Bork schrieb:
> >> holbe@darkside:/home/holbe% echo -n "" | awk 'END { print "Ha!" }'
> >
> > hgb@sokrates:~$ echo -n "" | awk '{ print "Ha!" }'
> > hgb@sokrates:~$
> >
> > ... und warum geht dies dann nicht, bzw. liefert nix?
>
> Weil ich das jetzt gelernt habe, die Antwort von mir: :-)
>
> erno@flinker:~$ echo -n "" | awk '{ print "Ha!" }'
> erno@flinker:~$ 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.



Reply to: