Am Mo, 30 Aug 2010 08:51:55 CEST schrieb Joerg Thuemmler: Jallo Jörg,
Martin Blank schrieb:
Al Bogner schrieb:
Ich möchte bis ausschließlich U+0370 (hex) bzw. 880 (dezimal) unter UTF-8 alles löschen. tr dürfte das nicht können. Ich habe das probiert:
tr -d '[\0-\879]'
Mit sed komme ich mit der Syntax dazu nicht klar. Wie macht man das mit sed? Andere Lösungen als mit sed sind natürlich auch willkommen.
Sollte nach U+03FF (1023) unerwarteter Weise noch was bleiben, so sollte das optimalerweise auch noch gelöscht werden, wenn das nicht zu rechenaufwendig ist.
Al
Ungetestet: sed -e '/\\U0370/d' für das eine Zeichen, '/\\U0370*/d' bis zum Zeilenende, '/\\U0370/,/$/d' für alle Zeilen ab der ersten Fundstelle. Die Zeile, die das Zeichen enthält, wird dann auch vollständig - inklusiv der Zeichen vom Zeilenanfang bis zur Fundstelle - gelöscht.
Hi,
soweit ich verstehe, will Al nicht alle Zeichen in einer Zeile nach U0370 löschen, sondern alle, die im Zeichensatz vor U0370 liegen.
So ist es.
Wenn Martins Suchmuster stimmt (ich nutze Unicode nur, wo es nicht zu umgehen ist, da unsere DB latin1 ist), käme dann wohl eher
sed -e 's/[\\U0000-\\U0370]//g' in Frage.
evt. müssen das "U" und ggf. in den Hexcodes auftauchende Buchstaben "ABCDEF" (für andere Bereiche) _klein_ geschrieben werden.
var="SONDERZEICHEN (Άναψε)" echo "$var" | sed -e 's/[\\U0000-\\U0370]//g' sed: -e Ausdruck #1, Zeichen 22: Das Ende des angegebenen Intervalls ist nicht gültig echo "$var" | tr '[:upper:]' '[:lower:]' | sed -e 's/[\\U0000-\\U0370]//g' sed: -e Ausdruck #1, Zeichen 22: Das Ende des angegebenen Intervalls ist nicht gültig Diese Variante ist für den Fall, dass der Text im Latin-Bereich klein sein sollte. Genau genommen, müsste es U036F sein, da ja U0370 erhalten bleiben soll, aber es kann ausgeschlossen werden, dass das Zeichen vorkommt. echo "$var" | sed -e 's/[\\U0000-\\U036F]//g'sed: -e Ausdruck #1, Zeichen 22: Das Ende des angegebenen Intervalls ist nicht gültig Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org