Am Mo, 30 Aug 2010 07:54:57 CEST schrieb Martin Blank: Hallo Martin,
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.
IMHO hast du ein ganz wichtiges Kriterium übersehen, nämlich den Bereich "aller Zeichen bis", das mein Hauptproblem in der Syntax ist. Beispiel: ~> var="SONDERZEICHEN (Άναψε)" ~> echo "$var" | sed -e '/\U0370/d' SONDERZEICHEN (Άναψε) ~> echo "$var" | sed -e '/\U0370*/d' SONDERZEICHEN (Άναψε) ~> echo "$var" | sed -e '/\U0370/,/$/d' SONDERZEICHEN (Άναψε) Es geht darum, dass Άναψε übrigbleibt, es sollen also nur griechische Zeichen übrig bleiben, _alle_ anderen, und nicht nur ein bestimmtes Zeichen, sollen gelöscht werden. Diese Zeichen sollen also erhalten bleiben: http://de.wikipedia.org/wiki/Unicode-Block_Griechisch_und_Koptisch U+0370 (880) - U+03FF (1023) U+0000 (0) - U+036F (879) soll gelöscht werden. http://de.wikipedia.org/wiki/Liste_der_Unicode-Bl%C3%B6cke 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