Wie sucht man nach einem Text und ersetzt ihn?? thx

Post Reply
Message
Author
Bernd Zohner

Wie sucht man nach einem Text und ersetzt ihn?? thx

#1 Post by Bernd Zohner »

Hallo Leute,

ich bin in sachen Linux sehr unerfahren und bräuchte Eure hilfe.

Ich müss einen Text der in mehreren Datein vorkommt suchen und durch einen anderen Text ersetzen.
Das ganze soll auch mit den Sub-Directories funktionieren.

habt ihr da einen ahnung wie das funktioniert?

Thx
Bernd

Vitalienbruder

Re: Wie sucht man nach einem Text und ersetzt ihn?? thx

#2 Post by Vitalienbruder »

Nur eine Idee, wird so nicht funktionieren:

find . -type f -exec sed_inplace s/altertext/neuertext/g ;<!--no-->

Würde alle Dateien (auch binary) unterhab vom aktuellen Verzeichnis durchsuchen. sed_inplace ist eine Variante von sed, die "inline find/replace" machen kann. Mußt du vermutlich noch installieren und dir die Syntax zu gemüte führen und ein wenig experimentieren.

Nur als Idee

Jochen

Re: Wie sucht man nach einem Text und ersetzt ihn?? thx

#3 Post by Jochen »

Och, nicht weiter schwer, aber nicht erschrecken <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">find . -type f | xargs perl -p -i.orig -e 's/suchtext/ersetztext/g'</font><hr></pre></blockquote>
"find" findet ab dem aktuellen Verzeichnis alle normalen Dateien und gibt deren Namen über die Pipe an xargs. Der baut aus diesen Namen und dem perl-Kommando den Perl-Aufruf zusammen. perl ackert die Datein einzeln ab. In jeder dieser Dateien wird in-place (-i) der suchtext in jeder Zeile (-p) durch den ersetztext ersetzt, soweit vorhanden (-e 's/suchtext/ersetztext/g'). Zur Sicherheit legt perl Kopien der Originaldateien mit der Endung .orig an an (Optionsargument ".orig" zu -i).

Verbessern könnte man vielleicht noch das find-Kommando. Wenn die Dateien einen bestimmten Namensteil haben (beispielsweise .c als Endung), könnte man auch

find . -name "*.c" -type f | undsoweiter

schreiben und perl müsste dann nicht so viele unnütze Dateien durchackern.

Jochen

Post Reply