Mit vi in einen String in mehreren Dateien ersetzen
Irgendwann möchten Sie vielleicht Vorkommen einer Zeichenkette in mehreren Dateien ersetzen.
Es ist ein einfacher Weg, dies zu tun mit der Hilfe des Editors vi.
Dieses Beispiel illustriert die Macht des vi:
Angenommen, Sie haben 100. Html-Dateien, und Sie wollen, um das Auftreten des Strings '2007 'mit '2008' zu ersetzen.
Als solche führen Sie die folgenden an Ihrer Eingabeaufforderung ein:
vi *. html
Dies öffnet alle Dateien mit der Endung ". Html" in Ihrem aktuellen Verzeichnis. Dann geben Sie folgenden Befehl:
: Argdo% s/2007/2008/g | wq
Das ist es! Der obige Befehl wird eine Schleife über jede Datei, ersetzt (%) das Wort 2007 mit dem Word 2008 global (g), dann ist jede Datei speichern (w) und verlassen Sie es (q).
Beachten Sie, dass der String zu finden und die Zeichenfolge für den Ersatz Verwendung mit regulären Ausdrücken ersetzt werden können. So bezieht sich ein Caret (^) an den Anfang einer Zeile, bezieht sich das Dollarzeichen ($) bis zu seinem Ende, etc. Also, wenn wir zu einer beliebigen Zeile beginnend mit "Sample" und endend mit 'test' ersetzt wurden, eine Code verwenden:
: Argdo% s / ^ Probe .* test $ / g | wc
wo .* passt nichts zwischen die beiden Strings.
Beachten Sie auch, dass Sie die Suchen und Ersetzen Aktion ohne Rücksicht auf den Fall (dh eine Suche nach "Wort" wird "Wort" match) zu tun. Was das angeht, ersetzen Sie einfach "/ g 'mit' / gi '

es ist Caret nicht Karotte!
Muss über das Essen gedacht haben bei der Eingabe es
Prost
Vielen Dank für diesen Hinweis, Du hast mich gerettet eine Menge Arbeit damit.
Danke vielmals, es half mir auch.
Ich habe einen Kommentar, für relativ kleine Anzahl von Ersetzungen, Aufforderung zur ersetzen auch nützlich sein könnte.
: Argdo% s / search_string / replace_string / gc | wq
mit einem zusätzlichen 'c' für 'Bestätigung'
Nochmals vielen Dank