Wie "suchen und ersetzen" viele Dateien?

8

Ich verwende den Befehl grep , um in vielen Dateien nach einer Zeichenfolge zu suchen. Gibt es etwas Ähnliches wie "Suchen und Ersetzen"?

    
Tom Brito 02.02.2012, 13:45

4 Antworten

16

Sie suchen den sed Befehl. Um beispielsweise den "Hund" durch "Katze" in allen Textdateien im aktuellen Verzeichnis zu ersetzen:

sed -i 's/dog/cat/' *.txt
    
Jjed 02.02.2012, 13:51
1

sed ist das richtige Werkzeug; Sie können aber auch ex -Befehle in vim verwenden:

vim -c 'args <files> | argdo %s/cat/dog/g | x'

Dabei steht <files> für die Liste der Dateien oder Muster, in denen Sie die Ersetzung vornehmen möchten.

    
jcollado 02.02.2012 15:12
0

sed kommt mir in den Sinn. Beispiel:

sed s/cat/dog/ <input >output

Sucht in einer Zeile nach einer Katze und setzt den Hund in die Dateieingabe und schreibt sie in die Dateiausgabe.

    
Kerkdyk 02.02.2012 13:52
0

Sie können Vim im Ex-Modus verwenden:

for b in *.txt
do
  ex -sc '%s/OLD/NEW/g|x' "$b"
done
  1. % Alle Zeilen auswählen

  2. s ersetzen

  3. g ersetzt alle Instanzen in jeder Zeile

  4. x speichern und schließen

Steven Penny 16.04.2016 22:49

Tags und Links