Befehl um Textstellen in allen Dateien rekusiv zu ändern?

coolsoft

Registered User
Hallo,

ich suche einen Fehel, oder auch ein kleines Script, welches rekursiv alle Dateien in einem Verzeichniss nach einer bestimmten Textstelle durchsucht und diese dann durch eine andere ersetzt.

Genau sollte das so aussshen:

Ersetze rekursiv in allen Dateien von /etc wenn im Inhalt vorkomt "bla123" nach "blub987"

Sprache: Shell oder Perl

Gruß Alex
 
Eine einfache Kombination von find und sed macht genau das, was du willst.

Die Syntax beider Programme darfst du als kleine Übung selbst aus den Manpages erlesen oder über eine Suchmaschine suchen.
 
Es gibt Manpages und Suchmaschinen?:eek:
Hmmm, nett das zu erfahren!
Aber warum hat dann dieses Forum sein Berechtigung? Manpages gibts doch zu jedem Befehl und Seiten gibts millionen in Google, auf dennen auch so gut wie alles erklärt wird, wenn man nur lange genug danach sucht...
Also ein Forum wie dieses wäre dann eigentich komplett überflüssig!

Aber danke für den hilfreichen Hinweis. Wäre da niemals dauf gekommen, dass es Suchmaschinen gibt...
 
Es gibt Manpages und Suchmaschinen?:eek:
Hmmm, nett das zu erfahren!
Ja, bei einigen Beiträgen könnte man meinen, diese beiden Errungenschaften der Menschheit seien vollkommen unbekannt.

Gott sei Dank ist dem nicht so und du kannst die Handhabung der beiden von mir genannten Programme problemlos recherchieren und dann mit einem Hauch Transferleistung (eigentlich nicht, weil das findet man auch über $Suchmaschine und in der Manpage zu find) das erlangte Wissen zusammenführen. Schreib dich nicht ab, du schaffst das!

PS: Sarkasmus ist was du daraus machst![tm]
 
Last edited by a moderator:
In diesem Forum wird aber eine gewisse Eigeninitiative vorrausgesetzt.

Was dann wiederrum zur Folge hat, das der lerneffekt größer ist als wenn man alles vorgesetzt bekommt!
 
Last edited by a moderator:
Ich denke der grundsätzliche Ansatz eines Forums ist hier jedem klar und braucht keine weitere Diskussion.
Evtl. war coolsoft der Hinweis auf find und sed nicht ausreichend.

Und mal ganz ehrlich: Wer hat denn schon mal aus dem Stehgreif auf sed zurück gegriffen? Das Ding ist ja wohl nicht mehr als "simpel" einzustufen und ein RTFM ist IMHO dabei fehl am Platz.

Back to Topic:
Das ganze Script kann ich Dir nicht runterbeten, aber zumindest ein Gerüst bieten:
- Mit find bildest Du den Anfang: find /dir/ -type f
- Das Ergebnis kann entweder find selber weiter geben mit -exec
Beispiel: find /dir/ -type f -exec ls -l \{\} \;
- Oder alternativ gibt es noch xargs: find ... | xargs ...
- Und dann kommt z.B. ein sed Befehl.

huschi.
 
Und mal ganz ehrlich: Wer hat denn schon mal aus dem Stehgreif auf sed zurück gegriffen? Das Ding ist ja wohl nicht mehr als "simpel" einzustufen und ein RTFM ist IMHO dabei fehl am Platz.
Zum einen enthält die Infopage zu sed (-> `info sed`) zahlreiche gute Beispiele, zum anderen findet man schon auf der offiziellen Homepage von GNU sed z. B. dieses Dokument, das ja wohl mehr als ausreichend sein sollte.

IMHO ist das absolut nicht zuviel verlangt, mal einen Blick in die Manpage, die Infopage und auf die Webseite des Programms zu werfen (also der RTFM und STFW Aufforderung zu folgen). Wenn dann Details unklar sind, kann man immernoch eine entsprechende Anfrage in diversen Foren stellen.
 
Na das waren jetzt ja mal gute Postings mit denen man auch was anfangen kann :)
Gibt doch gleich irgend wie viel mehr her,also nur RTFM und STFW
Danke!:D

Homepage von GNU sed z. B. dieses Dokument, das ja wohl mehr als ausreichend sein sollte..

Hier findest Du weitere Hinweise für Dein Vorhaben.

- Mit find bildest Du den Anfang: find /dir/ -type f
- Das Ergebnis kann entweder find selber weiter geben mit -exec
Beispiel: find /dir/ -type f -exec ls -l \{\} \;
- Oder alternativ gibt es noch xargs: find ... | xargs ...
- Und dann kommt z.B. ein sed Befehl.
 
Und mal ganz ehrlich: Wer hat denn schon mal aus dem Stehgreif auf sed zurück gegriffen? Das Ding ist ja wohl nicht mehr als "simpel" einzustufen und ein RTFM ist IMHO dabei fehl am Platz.

Eine Gewisse Art der Faulheit darf man einfach nicht unterstützen.
Eine Frage, kann mir das jemand erklären, war noch nie ein Problem.

Leuten aber das Zeug vorkauen, die damit Geld verdienen?

Das ist faul und dreist obendrein...

BTW: google liefert schon auf der ersten Seite ein gutes und brauchbares Tutorial.
SED - Google-Suche
 
Ja, hackt nur weiter auf mir rum.
Ich finde dennoch, daß die entsprechenden 3 Antworten nicht dem allgemeinen Stiel dieses Forums entsprechen.

huschi.
 
MOD: Fullquote entfernt!

Hackt jemand auf Dir rum?
Die 2-3 Antworten sind vielleicht auch basierend auf Erfahrungen mit coolsoft alias tangenta.


Ergänzend für Dich eine Erkenntnis von Hilfsdiensten aus Afrika:
Wenn Du einem Hilfsbedürftigen einen Brunnen baust, hast Du Ihm damit nicht geholfen sondern unnötig in Gefahr gebracht. Mit dem Brunnen hat er gelernt, dass Wasser vorhanden ist. Die Fähigkeit, wie man Wasser aus Wüstensand zaubert wird häufig nicht mehr weiter gegeben. Er ist mit dem Brunnen abhängig gegenüber dem geworden, der den Brunnen in Schuss hält bzw. einen neuen bauen kann, wenn der alte versiegt.

Es ist also besser dem Hilfsbedürftigen zu lehren, wie er sich selbst aus einer Lage befreien kann und sich nötiges Wissen selbst aneignen kann. Damit wird er unabhängig.
Das wiederum erfordert Bildung und Fleiß.

Dieses Beispiel lässt sich auf sehr vieles Adaptieren mit immer dem gleichen Ergebnis:
Man will gutes tun, bringt Lebensmittel nach xyz. Mit dem Ergebnis, die lokale Landwirtschaft geht zu Grunde die Länder veröden. usw usw.

Was bedeutet das für die IT?
Jeden Monat muss ich einiges an Geld auf bringen um diverse Spam Mailversender, DOS Attacken usw. zu eliminieren. Da stehe ich nicht als einziger da und die Statistiken bestätigen, dass der Datenmüll immer mehr zu nimmt.

Eine der Ursachen liegt in den schlecht gewarteten Systemen mangelhafte Sicherungsvorkehrungen. Und wie oft macht man es einem Otto normal Verbraucher zu leicht einen Rootserver zu betreiben ganz ohne irgendwelche Vorkenntnisse.

Man muss schon verstehen, was man da tut. Zusammen gepostete Skripte sind lehrreich für jemanden, der Erfahrung hat. Alle anderen jedoch ohne weiteres Wissen, wenden etwas an, ohne abschätzen zu können, was Sie damit bewirken.
Da hilft nur intensiver lernen und nicht das grad nötige Kapitel schnell durchlesen.

Denn zu oft passiert es dann, dass man vergisst, dass es auch Textfragmente geben könnte, die genau das gleiche beinhalten und natürlich nicht geändert werden sollten.
Oder man die Suche auf bestimmte Dateien beschränken muss.

Ich denke da nur an Sonderzeichen, das casten von . / etc pp.
Dieses kann ein fertiges Script eher nicht vermitteln.
 
Last edited by a moderator:
Ich finde, dieser Thread hat inzwischen mehr als genügend off-topic Posts gesammelt.

Wer noch direkt was zum Thema "sed und find" sagen möchte, kann das gerne tun, alle anderen Diskussionen sollen im Brunnenbauer-Forum weitergeführt werden!
 
Back
Top