Re: AWK-Frage

From: Christoph Sandhaus <mailings_at_draupadi.de>
Date: Fri, 23 Mar 2007 09:49:04 +0100

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