Joerg Thuemmler schrieb:
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. 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.
Also einen Bereich des Zeichensatzes und nicht der Datei. Dann ist mein Lösungsvorschlag allerdings nicht korrekt. Zum Suchmuster: Ich musste einmal in einer Datei verschiedene Sonderzeichen umsetzen, von denen mir nur ihr Hex-Code, die Darstellung z.B. im emacs und wie sie eigentlich - auf meiner Maschine - aussehen sollten bekannt war. Die Umsetzung nach TeX sah etwa so aus: [...] s/\\u201e/{\\glqq}/g s/\\u201c/{\\grqq}/g s/\xe4/{\\"a}/g [...] Dabei sind die beiden ersten Zeilen wohl die emacs-Darstellung, die letzte die Umsetzung des Hex-Codes.
evt. müssen das "U" und ggf. in den Hexcodes auftauchende Buchstaben "ABCDEF" (für andere Bereiche) _klein_ geschrieben werden.
cu jth
-- Mit freundlichen Grüßen Martin Blank -- 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