Am Freitag, 23. März 2007 09:04 schrieb Christian Weerts:
> Moin,
>
> ich sitze hier gerade an einem AWK-Skript, und sehe wohl den berühmten
> Baum nicht mehr.
> Ich benutze z. B. folgenden Aufruf:
> $> awk -F';' '{print "$1", "$2"}' foobar.txt > barfoo.txt
>
> Ich möchte aber das ich $1 und $2 in Hochkomma eingefasst ausgegeben
> bekomme. Dazu dachte ich es sollte so funktionieren:
> $> awk -F';' '{print "\'$1\'", "\'$2\'"}' foobar.txt > barfoo.txt
>
Das Problem ist die Shell, und nicht awk.
Dein erster Gedankenfehler ist folgender:
man ist es aus der Shell gewohnt Variable in Doppelquotes zu schreiben, das
ist bei awk aber falsch.
Verstehe ich dich richtig: die erste Version trennt $1 und $2 durch ein Komma?
Dann muß nur das Komma in Doublequotes, nicht die $'s:
awk -F';' '{print $1 "," $2}' foobar.txt > barfoo.txt
Dein Problem löst du mit einem Trick: definiere eine awk Variable (-v). An
dieser Stelle benutzt du noch Shell-Escapes, also SingleQuote durch \
entwertet. Dann steht in SQ das SingleQuote und kannst es in der print
Klammer nutzen:
awk -v SQ="\'" -F';' '{print SQ $1 SQ "," SQ $2 SQ }' foobar.txt > barfoo.txt
Steht in foobar.txt folgendes:
eins;zwei
dann spuckt awk das hier aus:
'eins','zwei'
> Doch falsch gedacht. Das Escapen scheint so nicht richtig zu sein.
> Weiss jemand Rat wie ich die Hochkomma's trotzdem in die Ausgabe bekomme?
>
> Gruss,
> Christian
Ist das die gesuchte Lösung?
Gruß,
Chrisotph
Received on Fri Mar 23 2007 - 09:49:04 CET
This archive was generated by hypermail 2.2.0 : Fri Mar 23 2007 - 09:49:56 CET