2016-06-27 20 views
1

Ich habe den folgenden Wert in allen XML-Dateien zu ersetzen, so dass der Wertdurch sed Befehl in Unix immer Fehler

tcp://pondevpms1.fm.rbsgrp.net:6033,pondevpms2.fm.rbsgrp.net:6033 

und der Wert mit ihm ist, muß ersetzt werden soll, unter

tcp://pondevpms1:3063 
gezeigt

, so habe ich den folgenden Befehl in das Verzeichnis gefeuert, das alle

sed -i 's/tcp://pondevpms1.fm.rbsgrp.net:6033,pondevpms2.fm.rbsgrp.net:6033/tcp://pondevpms1:6063 /g' *.xml 

xML enthalten, aber ich bin immer dies sein geringer Fehler bitte beraten was fehlt ..?

unter dem Fehler, ich bin immer Ritus jetzt

sed: -e expression #1, char 9: unknown option to `s' 

Antwort

1

Ich denke, Sie Trennzeichen von/zu etwas ändern sollten sonst wie # Also Ihr Befehl wie diese

sed -i 's#tcp://pondevpms1.fm.rbsgrp.net:6033,pondevpms2.fm.rbsgrp.net:6033#tcp://pondevpms1:6063#g' *.xml 

aussehen würde Alternativ , Sie könnten alle Ihre Schrägstriche entkommen, aber das würde nicht sehr schön aussehen

+0

der Fehler sed: -er Ausdruck # 1, char 9: Unbekannte Option 's' –

+0

in Ordnung, lösen sollte dies dann Ihr Problem – user2393256

1

Sie vergessen, den Fehler hinzuzufügen, aber ich würde darauf wetten, dass die Schrägstriche in y unser Text verursacht dir Ärger. Da Sie / als sed-Operator verwenden, müssen Sie es in Ihrem Text: \/ für jede / zu entkommen.

Da jedoch Ihr Text viele Schrägstriche hat und sed andere Zeichen als Operator verwenden kann, würde ich einfach eine Pipe als sed-Operator verwenden;

sed -i 's|tcp://pondevpms1.fm.rbsgrp.net:6033,pondevpms2.fm.rbsgrp.net:6033|tcp://pondevpms1:6063 |g' *.xml 
+0

Der Fehler, der i sed bin immer: # -er Ausdruck 1 , char 9: unbekannte Option zu 's' –

1

Ihr Ausdruck ist nicht korrekt. Sie können jedes Trennzeichen verwenden, vermeiden Sie daher '/', da es mit dem Inhalt kollidiert. Ich persönlich benutze #, weil es nur in Kommentaren selten verwendet wird.

sed -i 's#tcp://pondevpms1.fm.rbsgrp.net:6033,pondevpms2.fm.rbsgrp.net:6033#tcp://pondevpms1:6063#g' *.xml 
+0

"sed funktioniert nicht 'in Place'" ??. Was meinen Sie? Das ist es, was die '-i'-Flagge tut. – dan08

+0

Ich sagte, ich sei verrostet. Nun, das ist wirklich bestätigt :) Bearbeiten meiner Antwort! –