2016-06-07 8 views
0

Ich habe einige tausend Dateien mit einem href-Tag wie folge:entfernen a href Link-Text aus einer Datei

href="../../../../file/old.html 

ich dies von allen Dateien zu entfernen versuchen. Ich habe versucht, sed, aber es wirft einen Fehler und schlägt fehl. bitte

sed -i '/href="../../../../file/old.html"/c\' *.html 
sed: -e expression #1, char 11: unknown command: `.' 

Vorschläge ...

Antwort

2

Ihr Ausdruck ist nicht ganz korrekt. Sie müssen sed 's/pattern/replacement/g' file sagen. Oder verwenden Sie ein anderes Trennzeichen, wenn / im Muster ist und Sie nicht entkommen möchten, sed 's#pattern#replacement#g' file (or any other).

Auch die Verwendung von \ kann sed in die Irre führen, da es das Zeichen danach entgeht. Wenn Sie einen wörtlichen wollen, müssen Sie ihm entkommen.

Sie müssen also etwas sagen wie:

sed 's#href="../../../../file/old.html"#c\\#g' file 
#          ^
#   double \ so that you have a literal \ 

Lassen Sie uns es testen:

$ cat a 
hello <a href="../../../../file/old.html">bye</a> 
hehehe 
$ sed 's#href="../../../../file/old.html"#c\\#g' a 
hello <a c\>bye</a> 
hehehe 
+0

Spoke zu früh. Es hat sich nicht geändert. Ich hatte die html-Datei in einem Editor geöffnet, aber es hat gesagt, dass es eine Änderung gab und nach einem Neuladen fragt. – Sunshine

+0

sed -i's # href = "../../../../ file/alt .html "## g '- Das hat die ganze Datei funktioniert.! – Sunshine