Wie kann ich viele Dateien „suchen und ersetzen“?

Wie kann ich viele Dateien „suchen und ersetzen“?

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

Antwort1

Sie suchen densedBefehl. So ersetzen Sie beispielsweise in allen Textdateien im aktuellen Verzeichnis „Hund“ durch „Katze“:

sed -i 's/dog/cat/' *.txt

Antwort2

Da fällt mir sed ein. Beispiel:

sed s/cat/dog/ <input >output

Dies sucht in einer Zeile nach „Katze“, platziert „Hund“ an seiner Stelle in der Dateieingabe und schreibt in die Dateiausgabe.

Antwort3

sedist das richtige Werkzeug; alternativ können Sie aber auch exBefehle in verwenden vim:

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

wobei <files>die Liste der Dateien oder Muster ist, in denen Sie die Ersetzung vornehmen möchten.

Antwort4

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. sErsatz

  3. gErsetzen Sie alle Vorkommen in jeder Zeile

  4. xspeichern und schließen

verwandte Informationen