wie sed aus einer tcl-Datei verwendet werden kann

7

Ich versuche, das Unix "sed" -Befehlsformular in einer tcl-Datei zu verwenden: (um mehrere Leerzeichen in ein Leerzeichen zu ändern)

%Vor%

Ich probierte auch exec /bin/sed 's/ \+/ /g' $file (ein extra Backslash)

keine der Version funktioniert, und ich bekomme den Fehler

%Vor%

Der Befehl funktioniert gut, wenn er von einem Linux-Terminal ausgeführt wird

Was mache ich falsch?

    
n00b programmer 08.11.2010, 11:57
quelle

2 Antworten

18
  

Was mache ich falsch?

Was Sie falsch machen, sind ' (einfache Anführungszeichen). Sie sind nicht speziell für Tcl überhaupt . Das Äquivalent in Tcl umschließt ein Wort in { geschweifte Klammern } ; Es gibt keine besondere Behandlung für die Charaktere im Inneren. Also, was Sie tun möchten, wäre:

%Vor%

Wohlgemerkt, wenn Sie etwas Komplexeres tun und die Einschränkung von Tcl auf ganze Wörter, die nicht in Anführungszeichen stehen, dann können Sie stattdessen dafür gehen:

%Vor%

Oder, real idiomatische Tcl verwendet einfach nicht sed für etwas so einfach:

%Vor%     
Donal Fellows 08.11.2010, 13:29
quelle
1

Verwenden Sie exec /bin/sed "s/\ +/\ /g" $file

Das '\' teilt TCL mit, dass dort ein Leerzeichen ist. Auch die Verwendung des '' 'konfiguriert die Zeichenfolge richtig.

    
Carlos Tasada 08.11.2010 12:09
quelle

Tags und Links