PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : awk und das Hochkomma



Joy
28-03-2004, 20:53
Hallo!
Wie kann ich mit awk nach dem Hochkomma (') suchen lassen?
Ich möchte in einer Textdatei den String 'ftp durch ftp ersetzen.
meine awk Zeile:
awk '{gsub("'ftp","ftp");print $0}' file1 > file2

So geht es natürlich nicht ... wie muss ich denn das Hochkomma deklarieren, damit er es annimmt?

Vielen Dank!

Joy

msi
28-03-2004, 22:30
schonmal mit \' probiert, wenn das nicht geht vielleicht mit \\' oder mit \\\'

Joy
28-03-2004, 23:05
Hallo msi, danke für deine Hilfe.
Leider nützt weder ein noch mehrere \s was.

Wenn ich in der Textdatei mit KWrite z.b. alle 's durch ein " ersetzen lassen, dann funktioniert diese awk zeile:
awk '{gsub("\"","");print $0}' updates2.1 > updates3
Sie "escaped" das " dann korrekt, und ersetzt alle double-quotes durch einen String der Länge null. Nur geht das mit den single quotes nicht, da diese ja von awk selbst benutzt werden.

Gibt es noch eine andere Möglichkeit, das singlequote (Hochkomma) Zeichen darzustellen?

MfG,
Joy

DaTa
28-03-2004, 23:56
Das Problem liegt nicht bei awk, sondern an den Quotingmechanismus deiner Shell.


awk '{gsub("'\\''ftp","ftp");print $0}' file1 > file2

sollte funktionieren. Der Trick Singlequote schliessen, einen gequoteten Singlequote eingeben, Singlequote start

Allerdings ist hier sed das bessere Tool:



sed s/\\'ftp/ftp/g file1 > file2