Ich versuche, sed zu verwenden, um eine Konfigurationsdatei zu bearbeiten. Es gibt ein paar Zeilen, die ich ändern möchte. Ich weiß, dass unter Linux sed -i
direkte Änderungen möglich sind, aber Sie müssen diese in einer Sicherungsdatei speichern. Ich möchte jedoch vermeiden, dass mehrere Sicherungsdateien vorhanden sind, und alle meine Änderungen auf einmal vornehmen.
Gibt es eine Möglichkeit, dies zu tun, sed -i
oder gibt es eine bessere Alternative?
a
in gedrehtb
, und dann alle Instanzenb
eingeschaltet sind ind
. Sie können dasselbe tun,sed -i -e 's/a\|b/d/g' file
indem Sie alle Instanzen von entwedera
oderb
in drehend
.-e
Sie können nicht nur mehrere Optionen verwenden, sondern auch sed-Befehle mithilfe von Zeilenumbrüchen oder Semikolons in einem einzigen sed-Skript trennen.Dies ist der Fall, unabhängig davon, ob das Skript einzeilig in der Befehlszeile oder eine Skriptdatei ist.
z.B
Die Leerzeichen um
;
sind optional. Ich habe sie hier verwendet, um sicherzustellen, dass das Semikolon hervorgehoben wird (im Allgemeinen werden Leerzeichen zwischen Befehlen ignoriert, mit Ausnahme von Zeilenumbrüchen, die Befehle trennen) von Bedeutung).oder:
quelle
Eine andere Alternative ist
ex
der Vorgänger vonvi
. Es ist eigentlich die POSIX-Tool der Wahl für die direkte Bearbeitung von Skriptdateien. Es ist außerordentlich flexiblersed -i
als Perl und wahrscheinlich sogar portabler als Perl. (Wenn Sie sich außerhalb der Windows-Welt aufhalten , ist es zweifellos portabler als Perl.)Es gibt einen Mangel an diesem relativen Stack von Beispiel Befehlen unter Verwendung von
ex
, zumindest im Vergleich mit der Fülle von Beispiel Befehlensed
,awk
und Perl. Ich selbst habe mich jedoch eingehend mit den POSIX-Spezifikationen befasstex
und seitdem die Trommel geschlagen. Ich habe viele Antworten geschrieben, indem ichex
sowohl hier als auch auf dem vi / Vim-Stackexchange Folgendes verwendet habe:Weitere Lektüre:
quelle