[OT] awk: gsub() - ein Zeichen mit einer leeren Zeichenkette ersetzen?

From: <mail(at)adminradio.de>
Date: Wed, 17 Apr 2013 13:27:21 +0200

Moin zusammen,

mit Hilfe eines AWK-Skriptes möchte ich gern die erste Zeile einer
CSV-Datei aufräumen, sprich Anführungszeichen und Sternchen entfernen. Das
hatte ich mir wie folgt gedacht:

BEGIN {}

if (NR == 1) {

        # Aufräumen
        gsub(/\"/, //, $0) # Tüddelüh mit Nichts ersetzen
        gsub(/\*/, //, $0) # Sternchen mit Nichts ersetzen
                   
                   

        # Array anlegen
                   
        for ( i=1; i <= NF; i++) {
                   
                colname[i] = $i
                   
        }
                   

                   
                   
    } else {
        # Hübsche Dinge mit allen anderen Zeilen machen
}

END {}

Das funktioniert auch recht gut, allerdings werden mir die
Anführungszeichen respektive die Sternchen mit Zahlen ersetzt, was
vermutlich daran liegt, dass "gsub" einen Rückgabewert liefert (die Anzahl
der Ersetzungen). Das' doch aber nicht Sinn der Sache, oder? Tante Google
hat mir nicht wirklich weiterhelfen können, außer, dass ich ggfs. gensub()
verwenden könnte, allerdings hat mein awk kein gensub() - (Mac OS X
10.8.2, awk version 20070501)

Ja, natürlich könnte ich vorher mit:

        $ sed -i -e 's/\*//g' # Sternchen mit Nichts ersetzen

die Sache auch erledigen, aber ich würde gern das Problem verstehen und
wissen wollen wo ich was nicht verstanden habe.

Vielen Dank.

-- 
Danke, Timm
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 17 Apr 2013 - 14:14:18 CEST

search this site