Am Mo, 30 Aug 2010 13:53:43 CEST schrieb Martin Blank: Hallo,
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 [...]
Ich sehe hier keinen Bereich und 800 einzelne Ersetzungen will ich ja gerade nicht machen. Ich überlege auch in Richtung des Vorschlags von Jörg, finde aber nicht heraus was am "-" falsch ist. 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