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?
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:
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% 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.