Erzetzen in mehreren Dateien

Hallo,
gibt es unter Linux ein Programm oder kleines Skript um in einem Dateibaum vorhandenen Text-Dateien eine Zeichenkette durch eine andere zu ersetzen.

Bin fuer jede Anregung dankbar.

Olaf

Hi Olaf,

Du mußt nur ein paar Befehle geschickt kombinieren, zur Not geht das sogar als Einzeiler:

Die Textdateien finden:

find . -name „*.txt“ -exec scriptname {};

(die „“ sind wichtig, damit die Shell nicht sofort substituiert!)

In das script scriptname verpackst Du dann folgende Aktionen:

Datei lesen, mit dem Streameditor sed die Ersetztungen vornehmen, die Ausgabe in eine neue Datei speichern, die alte Datei löschen und die neue umbenennen. Damit nicht gelöscht wird, obwohl vorher etwas schiefgegangen ist, solltest Du die Befehle mit && trennen. Das script sieht dann etwa so aus:

#!/bin/csh
cat $1 | sed/s/suchtext/ersatztext/g/ > $1.bak && rm $1 && mv $1.bak $1

ACHTUNG:
Das ist nur eine Skizze für einen möglichen Weg! Alle Angaben sind ohne Gewähr und vermutlich voll von syntaktischen Fehlern! Ich habe gerade kein UNIX zur Verfügung, sodass ich nicht in die manpages schauen und es nicht austesten kann. Also nur an unwichtigen Dateien üben!

Gruß
Ted

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]