Re: AWK

From: Guido Ackermann <ga_at_phantomg.de>
Date: Fri, 8 Dec 2006 08:33:22 +0100

On Fri, Dec 08, 2006 at 08:13:23AM +0100, Christian Weerts wrote:
> Moin,
>
> warum gibt mir folgender Befehl
>
> cat onlineid.txt- |awk -F';' '{print "INSERT INTO onlineid VALUES
> ("$1", " $2");"}'
>
> diesen Mist aus:
> );SERT INTO onlineid VALUES (3182501597, 1732550740
> );SERT INTO onlineid VALUES (3182501600, 1473837673
> );SERT INTO onlineid VALUES (3182501608, 1631507635
>
> Die Values sind richtig, allerdings sollte doch die ) und ; am Ende
> der Zeile stehen!? Also so:
>
> INSERT INTO onlineid VALUES (3182501597, 1732550740);
> INSERT INTO onlineid VALUES (3182501600, 1473837673);
> INSERT INTO onlineid VALUES (3182501608, 1631507635);
>
> Gruss,
> Christian
>
>
> --
> To UNSUBSCRIBE, send an email to linux-stammtisch-request_at_lists.infodrom.org
> with a subject of "unsubscribe". Trouble? Contact listmaster_at_lists.infodrom.org

Ganz genau sehen deine Zeilen so aus:
INSERT INTO onlineid VALUES (3182501597, 1732550740<CR>);
Das Problem ist das awk nach dem zweiten Wert (der vermutlich der Letzte
in der Zeile deiens Quelltextes ist) einen Wagenrücklauf ausgibt.
Schließlich hast Du ";" als Trennzeichen angegeben und nicht ";<CR>"

Lösung:
IFS=";
"
cat onlineid.txt- |awk -F';' '{print "INSERT INTO onlineid VALUES (" $1 ", " $2 ");"}'
Im Sinne besserer Lesbarkeit würde ich aber awk '{printf "INSERT INTO
onlineid VALUES (%s,%s);\n",$1,$2}' empfehlen.

Gruß
        Guido Ackermann
Received on Fri Dec 08 2006 - 08:33:22 CET

This archive was generated by hypermail 2.2.0 : Fri Dec 08 2006 - 08:34:09 CET