Hallo, Am Fre, 23 Feb 2007, Al Bogner schrieb:
Am Freitag, 23. Februar 2007 01:41 schrieb David Haller:
Am Don, 22 Feb 2007, Al Bogner schrieb: [..] Voraus: Bei mir klappt das mit UTF-8 nicht so recht, ersetze die γκ also sinngem�?ß durch das richtige Zeichen. Wobei ich mir nicht sicher bin, wie sed mit UTF-8 umgeht. Ggfs. kann man mit den hexcodes arbeiten.
Ich denke sed und utf-8 passt bei griechischen Zeichen mit 10.2 schon.
Ich verwende jetzt die 10.2 und ja, da geht's prinzipiell.
Vermutlich mache ich eine Kleinigkeit falsch, es passiert nicht das Gew�?nschte. Sollte man nicht sed -e nehmen? Aber auch damit klappt es nicht.
Bei nur einem Ausdruck ist das egal.
Ich bringe ein anderes Beispiel, weil vielleicht nicht klar r�?ber kam, was ich will.
zB in UTF-8: γκρουπ ταγκό πάρκι�?κ γκί�?ης
Funktioniert hier: $ echo 'γκρουπ ταγκό πάρκι�?κ γκί�?ης' | sed 's/\(^\|[[:space:]]\)γκ/\1g/g;
s/\([^[:space:]]\)γκ/\1ng/g'
gρουπ ταngό πάρκι�?κ gί�?ης ^ ^^ ^ Evtl. hast du (oder dein Editor) was beim C&P oder beim einsetzen der gr. Zeichen was flscha gemacht...
Damit wir das auch in einem System ohne UTF-8 durchspielen können, nehme ich folgendes Beispiel: Es geht im Beispiel nur um "gk" nach der obigen Regel, am Anfang zu g, im Wort zu ng. Außerdem gilt die Annahme, dass es nur Kleinbuchstaben gibt.
INPUT="gkroup tagko parkigk gkinis" OUTPUT="group tango parking ginis"
INPUT="gkroup tagko parkigk gkinis" echo "$INPUT" | sed 's/\(^\|[[:space:]]\)γκ/\1g/g; ^^^^ Das kann so nicht klappen, denn das taucht in der Eingabe ja nicht auf.
BTW: generell ist Transliteration per script extrem schwierig. [..] Die Schritte sind also grob:
1. iconv -f ISO_8859-7 -t UTF-8
2. export LC_CTYPE=el_GR.iso88597 tr '[:upper:]' '[:lower:]' | iconv -f ISO_8859-7 -t UTF-8`
3. Rauswerfen eventuell störender Zeichen: zB -e "s/[\:=,;*!&?'<>+()°|]//g" -e 's/"//g' und andere
4. Erzeugen eines ISO Level 3-Dateinamens und hier sind wir beim Problem dieses Threads. Bis jetzt habe ich:
sed -e 's/�?π/b/g' -e 's/�?τ/d/g' -e 's/αι/e/g' -e 's/άι/e/g' -e 's/αί/e/g' -e 's/ει/i/g' -e 's/έι/i/g' -e 's/εί/i/g' -e 's/οι/i/g' -e 's/όι/i/g' -e 's/ου/ou/g' -e 's/ού/ou/g' -e 's/αυ/av/g' -e 's/ευ/ev/g' -e 's/ηυ/iv/g' -e 's/γγ/ng/g' -e 's/γκ/g/g' -e 's/γι/j/g' -e 's/[αά]/a/g' -e 's/χ/ch/g' -e 's/�?/d/g' -e 's/[εέ]/e/g' -e 's/φ/f/g' -e 's/γ/g/g' -e 's/[ιίηή]/i/g' -e 's/κ/k/g' -e 's/λ/l/g' -e 's/�?/m/g' -e 's/�?/n/g' -e 's/[οόωώ]/o/g' -e 's/π/p/g' -e 's/ψ/ps/g' -e 's/ρ/r/g' -e 's/[ςσ]/s/g' -e 's/τ/t/g' -e 's/�?/th/g' -e 's/[υύ]/y/g' -e 's/β/v/g' -e 's/�?/x/g' -e 's/ζ/z/g' -e 's/’//g' -e 's/\.//g' (BTW warum umbricht das KMail nicht, sind ja genug Leerzeichen vorhanden)
Einmal 'M-q' im xemacs ;) Das sieht gut aus. Erg�?nze am Anfang noch: -e 's/\(^\|[[:space:]]\)γκ/\1g/g' -e 's/\([^[:space:]]\)γκ/\1ng/g' Noch einfacher ist, du schreibst alles in ein sed-script (nicht shell-script!). Ich h�?nge es mal an. Die sed-Befehle können auch mehrere auf einer Zeile sein, dann mußt du sie eben durch ';' trennen. HTH, -dnh -- If Windows is the solution, can we please have the problem back?