![](https://seccdn.libravatar.org/avatar/9b4824fc9a8e2772693a2d15fd5c3d63.jpg?s=120&d=mm&r=g)
Hallo Linuxer, ich habe das Problem, dass ich über viele HTML-Dokumente (auch in Unterverzeichnissen) den Text Ein-Text-mit-Bindestrich gegen Ein-neuer-Text-mit-Bindestrich austauschen muss, was per Hand doch sehr aufwendig ist. Ich hab mir schon in einem File alle *.htm mit Pfad ausgeben lassen und hab ein Regelfile für sed geschrieben, sed gibt aber das Ergebnis auf dem Bildschirm aus. Wie kann ich das Ergebnis am liebsten ins gleiche File zurück schreiben? Grüsse und Dank Maximilian Steinbauer
![](https://seccdn.libravatar.org/avatar/54687ca42b61e500efe8726777e13f63.jpg?s=120&d=mm&r=g)
Maximilian Steinbauer schrieb:
Hallo Linuxer,
ich habe das Problem, dass ich über viele HTML-Dokumente (auch in Unterverzeichnissen) den Text „Ein-Text-mit-Bindestrich“ gegen „Ein-neuer-Text-mit-Bindestrich“ austauschen muss, was per Hand doch sehr aufwendig ist. Ich hab mir schon in einem File alle *.htm mit Pfad ausgeben lassen und hab ein Regelfile für sed geschrieben, sed gibt aber das Ergebnis auf dem Bildschirm aus. Wie kann ich das Ergebnis am liebsten ins gleiche File zurück schreiben?
Sofort geht nicht, das würde die Datei zerstören. In einer Schleife mit einer temporären Datei: for f in $files ; do #* sed ... ${f} >/tmp/${f}-sed #mv /tmp/${f}-sed $f done Zum Testen hab ich ein # vor das mv gesetzt, wenn Du sicher bist, dass die Dateien nach dem sed korrekt sind, kannst Du das # löschen. #* So geht das nur, wenn in den Dateinamen keine Leerzeichen drin sind. -- Gruss Bernd
![](https://seccdn.libravatar.org/avatar/9b4824fc9a8e2772693a2d15fd5c3d63.jpg?s=120&d=mm&r=g)
Hallo Bernd, danke, klappt prima. Maximilian Steinbauer
![](https://seccdn.libravatar.org/avatar/7b33cb1e776e35b87edb8ef09f0c888f.jpg?s=120&d=mm&r=g)
Hallo, Am Tue, 22 Mar 2005, Maximilian Steinbauer schrieb:
ich habe das Problem, dass ich über viele HTML-Dokumente (auch in Unterverzeichnissen) den Text Ein-Text-mit-Bindestrich gegen Ein-neuer-Text-mit-Bindestrich austauschen muss, was per Hand doch sehr aufwendig ist. Ich hab mir schon in einem File alle *.htm mit Pfad ausgeben lassen und hab ein Regelfile für sed geschrieben, sed gibt aber das Ergebnis auf dem Bildschirm aus. Wie kann ich das Ergebnis am liebsten ins gleiche File zurück schreiben?
Mit sed ist das unschoen, daher bevorzuge ich fuer sowas perl. find PFAD -type f -name '*.html' -print0 \ | xargs -0 perl -p -i.orig \ -e 's/Ein-Text-mit-Bindestrich/Ein-neuer-Text-mit-Bindestrich/g' Wenn du hinter dem '-i' nichts angibst werden keine Backups (DATEINAME.orig) angelegt. Siehe auch 'man perlrun'. HTH, -dnh -- "Wouldn't the sentence 'I want to put a hyphen between the words Fish and And and And and Chips in my Fish-And-Chips sign' have been clearer if quotation marks had been placed before Fish, and between Fish and and, and and and And, and And and and, and and and And, and And and and, and and and Chips, as well as after Chips?" -- BSD fortune file
participants (3)
-
Bernd Obermayr
-
David Haller
-
Maximilian Steinbauer