ersetzen Sie eine Zeichenfolge in die Datei mittels shell-Skript
Nehme an, meine Datei ein.conf ist wie folgt
Include /1
Include /2
Include /3
Möchte ich Ersetze "/2" mit einer neuen Zeile ich den code schreiben .sh-Datei :
line="Include /2"
rep=""
sed -e "s/${line}/${rep}/g" /root/new_scripts/a.conf
Aber nach dem ausführen der sh Datei, geben Sie mir die folgende Fehlermeldung
sed: -e expression #1, char 14: unknown option to `s'
Durch Bearbeiten Ihre Frage inhaltlich zu ändern, was Sie Fragen, es ist sehr schwer zu Stimmen sinnvoll auf Antworten; und in der Tat, die Antwort, die Sie angenommen, nicht mehr auf die Frage eingegangen. Vielleicht sollten Sie die rollback-und post eine neue Frage.
Ich dachte, das war meine Antwort, aber als ein neues Kriterium kam, dann war ich verwirrt, sorry dafür.
Ich möchte darauf hinweisen, wenn Sie sagen "ich will ersetzen Sie "/2" mit einer neuen Zeile Sie sind in der Tat ersetzen Sie die Zeichenfolge mit nichts. Es ist
Ich dachte, das war meine Antwort, aber als ein neues Kriterium kam, dann war ich verwirrt, sorry dafür.
Ich möchte darauf hinweisen, wenn Sie sagen "ich will ersetzen Sie "/2" mit einer neuen Zeile Sie sind in der Tat ersetzen Sie die Zeichenfolge mit nichts. Es ist
sed
, stellt die newline sobald Sie abgeschlossen haben Ihre Bearbeitung.InformationsquelleAutor Pritom | 2011-12-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie eine neuere version von sed, die Sie verwenden können -ich zum Lesen aus und schreiben in die gleiche Datei. Mit -ich können Sie eine Datei-Erweiterung also ein backup gemacht werden, sofern etwas schief gelaufen ist. Auch Sie brauchen nicht zu verwenden, die -e Flagge, es sei denn, Sie verwenden mehrere Befehle
Ich habe gerade bemerkt, dass die Variablen, die Sie verwenden, sind Zeichenfolgen, die Sie verwenden möchten, können Sie einfache Anführungszeichen um Ihre sed-Ausdruck. Auch dein string enthält einen Schrägstrich, um Fehler zu vermeiden können Sie ein anderes Trennzeichen in Ihre sed-Befehl (der Begrenzer nicht brauchen, um ein Schrägstrich):
Diese Antwort funktioniert nicht (wegen der slash-Zeichen im text). also keine Antwort darauf ?
Cheers für Sie den Zeiger verwenden zu können, eine getrennte andere als
/
InformationsquelleAutor luketorjussen
Schreiben Sie die änderungen in eine neue Datei und verschieben Sie dann die neue Datei über die alte. Wie diese:
InformationsquelleAutor Ivan Dimitrov
Die Umleitung (
> /root/new_scripts/a.conf
) wischt sich den Inhalt der Datei, bevorsed
es sehen können.Müssen Sie passieren die
-i
optionsed
um die Datei zu Bearbeiten in-place:Können Sie auch bitten, sed erstellen Sie eine Sicherungskopie der ursprünglichen Datei:
Bitte nicht daran, wenn diese Frage gelöst markieren dann niemand antwortete dieser.
Funktioniert nicht. Jede andere Idee, bitte?
siehe meine Antwort bearbeitet
InformationsquelleAutor Eugene Yarmash