Bereiche
News
Rewind
Tipps & Berichte
Forum
Galerie
Journals
Events
Umfragen
Themenwoche
Kleinanzeigen
Interaktiv
Anmelden
Registrierung
Zu allen empfangenen Nachrichten
Suche...
Zur erweiterten Suche
Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum
>
Software
>
Terminal: String in Dateien mit 'exec sed' tauschen
Terminal: String in Dateien mit 'exec sed' tauschen
mac.apple
27.11.05
18:21
Bei dem Versuch in hunderten *.html Dateien einen bestimmten String ('font size=+2' auf 'font size=+0') auszutauschen bin ich auf folgenden Terminalbefehl gekommen:
find . -iname "*.html" -exec sed "s/font size=+2/font size=+0/g" {} \;
Es werden nun alle Inhalte ins Terminal gezogen und man sieht wie brav (im Terminal) dieser String völlig richtig ausgetauscht wird. Nur die Dateien die ich eigentlich ändern wollte bleiben davon völlig unberührt.
Nun habe ich folgende Frage:
wie erreiche ich, dass dieser String in den Dateien wirklich ausgetauscht wird, und nicht nur scheinbar im Terminal.
Vielen Dank im Voraus
Walter
OSX 10.2.8
(ich habe auch einen Apple mit Tiger, würde das aber lieber mit UNIX als mit dem Automator lösen)
Hilfreich?
0
Kommentare
dschengis
27.11.05
19:01
Schau Dir mal das Kapitel: Ausgabeumleitung auf dieser Seite (http://www.wire.tu-bs.de/ADV/texte/inf3text/node3.html) an.
Da dürftest Du findig werden.
Hilfreich?
0
rupa
27.11.05
19:18
guguck!
da ist dann schon etwas mehr aufwand nötig, da sed ja immer nach stdout schreibt.
Es sollte also ungefär folgendes ablaufen:
Datei kopieren
Kopie bearbeiten
Orginal durch Kopie ersetzen.
also ungefär so:
find . -name "*.html" -exec sh -c " cp $1 /tmp/am_tmp_edit.html; sed \" blablabla \" /tmp/am_tmp_edit.html > $1" {} \;
(Mangels Zeit kann ich das gerade leider nicht testen ...)
Oder anderes Tool verwenden, z.B. ed oder perl
Gruß Rupa
Hilfreich?
0
mac.apple
27.11.05
20:21
also das Prinzip verstehe ich jetzt, aber die Syntax ist mir doch ein wenig zu vertraxt. Es will mir nicht gelingen.
Auch im Internet finde nur theoretische langwierige Erläuterungen, die man nicht wirklich gut in die richtige Syntax umsetzen kann.
Eine Seite mit konkreten Beispielen wäre da schon sehr hilfreich.
Hilfreich?
0
Rantanplan
27.11.05
20:23
Geht viel einfacher
Man verzichte auf sed und nehme perl:
perl -pi.bak -e "s/font size=+2/font size=+0/g" *.html
Erzeugt so wie hier gezeigt auch noch .bak-Dateien, für den Fall der Fälle...
„Wenn ich nicht hier bin, bin ich auf dem Sonnendeck“
Hilfreich?
0
Rantanplan
27.11.05
20:25
Nachtrag: Wenn's rekursiv durch mehrere Verzeichnisse sein soll, dann halt noch das find bemühen.
„Wenn ich nicht hier bin, bin ich auf dem Sonnendeck“
Hilfreich?
0
mac.apple
27.11.05
20:39
Perl dürfte bei mir nicht laufen:
[Apple-I:Web/Byzanz/Pages] walter% perl -pi.bak -e "s/font size=+2/font size=+0/g" *.html
perl: No match.
Hilfreich?
0
JustDoIt
27.11.05
21:07
Mal ganz nebenbei: Das kann doch fast jeder HTML Editor. Dreamweaver ist da übrigens erste Klasse.
Hilfreich?
0
mac.apple
27.11.05
22:34
Na ja, wird' mir eh nix anderes überbleiben.
Aber diese Lösung kostet allerdings USD 399.
Und dieses Programm wird ja letztlich das auch nur mit unix erledigen.
Mit genau den Befehlen, die ich jetzt suche ...
Hilfreich?
0
rupa
28.11.05
15:42
Hallo nochmal,
also so geht's bei mir mit sed:
find . -name "*html" -exec sh -c 'cp "{}" /tmp/am_edit.html; sed "s/head/kopf/g" /tmp/am_edit.html > "{}"' \;
Gruß Rupa
Hilfreich?
0
_mäuschen
28.11.05
19:02
Jetzt noch das plus Zeichen 'escapen' @@ \+, dann klappt es
perl -p -i'*.orig' -e 's/font size=\+2/font size=\+0/g' *.html
Hilfreich?
0
Rantanplan
28.11.05
20:26
Ah, jessas, jo. Das kommt davon, wenn man den regex einfach per copy und paste einbaut. Hab ihn mir überhaupt nicht angesehen.
„Wenn ich nicht hier bin, bin ich auf dem Sonnendeck“
Hilfreich?
0
mac.apple
28.11.05
23:19
Heureka! Es funkt perfekt.
Einfach genial.
DANKE FREUNDE:)
Das Terminal ist ja auch wirklich ein mächtiges Instrument.
(Ich hab' zB. auch kein eigenes FTP Programm. Auch das geht ganz einfach mit dem Terminal. Und vorallem von jedem Rechner aus.)
Werd' mich jetzt intensiv mit Darwin beschäftigen.
Nochmals Danke
Walter
Hilfreich?
0
Kommentieren
Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.