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 '

4 Kommentare

mike 23. August 2008 um 12.24 Uhr

es ist Caret nicht Karotte!

admin 29. August 2008 um 03.43 Uhr

Muss über das Essen gedacht haben bei der Eingabe es :)
Prost

Jens 16. Juli 2010 um 20.35 Uhr

Vielen Dank für diesen Hinweis, Du hast mich gerettet eine Menge Arbeit damit.

Als Dank 27. September 2010 um 01.49 Uhr

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 :)

Hinterlasse einen Kommentar

Ihr Kommentar