sheep
Aktives Mitglied
Thread Starter
- Dabei seit
- 21.03.2005
- Beiträge
- 1.255
- Reaktionspunkte
- 25
Hallo
Ich möchte gerne mit sed (d.h. eigentlich ist es egal womit, aber dieser Befehl ist der einzige, den ich dafür gefunden habe) in vielen Dateien die Umlaute durch Unicode ersetzen. Nun habe ich das zunächst so probiert:
find . -name *.html -exec sed -f umlaute.txt {} \;
und in umlaute.txt steht:
s/ä/\ä/g
s/ü/\ü/g
s/ö/\ö/g
s/Ä/\Ä/g
s/Ü/\Ü/g
s/Ö/\Ö/g
Soweit funktioniert alles bestens. Nun soll jedoch der Inhalt der jeweiligen Datei sofort mit dem umlautefreien Inhalt ersetzt werden (hier wird einfach der neue Inhalt auf der Konsole ausgegeben) - und da ist das Problem: die Option "-i", die man normalerweise verwenden kann, funktioniert offenbar zusammen mit "-f" nicht. Auch kann ich nicht in umlaute.txt eine weitere Zeile "w {}" anhängen, da {} als Dateiname und nicht als Platzhalter interpretiert wird.
Ich habe es dann mit einer for-Schleife versucht:
for file in *.html
do
sed -f umlaute $file > tmp.$file
[ -s tmp.$file ] && mv tmp.$file $file
done
aber das ist leider nicht rekursiv, d.h. all die Unterverzeichnisse, in denen die vielen Dateien liegen, werden nicht durchgegangen.
Kann mir jemand einen Tipp geben? So schwierig kann es doch nicht sein, aber ich komm' echt nicht weiter...
Ich möchte gerne mit sed (d.h. eigentlich ist es egal womit, aber dieser Befehl ist der einzige, den ich dafür gefunden habe) in vielen Dateien die Umlaute durch Unicode ersetzen. Nun habe ich das zunächst so probiert:
find . -name *.html -exec sed -f umlaute.txt {} \;
und in umlaute.txt steht:
s/ä/\ä/g
s/ü/\ü/g
s/ö/\ö/g
s/Ä/\Ä/g
s/Ü/\Ü/g
s/Ö/\Ö/g
Soweit funktioniert alles bestens. Nun soll jedoch der Inhalt der jeweiligen Datei sofort mit dem umlautefreien Inhalt ersetzt werden (hier wird einfach der neue Inhalt auf der Konsole ausgegeben) - und da ist das Problem: die Option "-i", die man normalerweise verwenden kann, funktioniert offenbar zusammen mit "-f" nicht. Auch kann ich nicht in umlaute.txt eine weitere Zeile "w {}" anhängen, da {} als Dateiname und nicht als Platzhalter interpretiert wird.
Ich habe es dann mit einer for-Schleife versucht:
for file in *.html
do
sed -f umlaute $file > tmp.$file
[ -s tmp.$file ] && mv tmp.$file $file
done
aber das ist leider nicht rekursiv, d.h. all die Unterverzeichnisse, in denen die vielen Dateien liegen, werden nicht durchgegangen.
Kann mir jemand einen Tipp geben? So schwierig kann es doch nicht sein, aber ich komm' echt nicht weiter...