Ich verwende den grep
Befehl, um in vielen Dateien nach einer Zeichenfolge zu suchen. Gibt es etwas Ähnliches wie „Suchen und Ersetzen“?
Antwort1
Sie suchen densed
Befehl. 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
sed
ist das richtige Werkzeug; alternativ können Sie aber auch ex
Befehle 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
%
Alle Zeilen auswählens
Ersatzg
Ersetzen Sie alle Vorkommen in jeder Zeilex
speichern und schließen