Frage

Ich bin auf OS X 10.5.5 (obwohl es nicht so wichtig schätze ich)

Ich habe eine Reihe von Textdateien mit ausgefallenen Charakteren wie Doppeln einfachen Anführungszeichen, ellipsises ( „...“) in einem Zeichen usw.

Ich brauche diese Dateien auf gute alte Ebene 7-Bit-ASCII zu konvertieren, vorzugsweise ohne Charakter Bedeutung zu verlieren (das heißt, jene Ellipsen zu drei Perioden, einfache Anführungszeichen zu üblichen „s usw. konvertieren.).

Bitte geben Sie eine Smart-Befehlszeile (bash) Werkzeug / script, das zu tun.

War es hilfreich?

Lösung

Das Elinks Webbrowser wird Unicode Einheiten in ihrem ASCII-Äquivalente konvertieren, so dass Dinge wie "-" für "-" und "..." für "..." usw. Es gibt ein python-Modul ist Python-elinks welcher verwendet denselben Umwandlungstabelle, und es wäre trivial es in ein Schalenfilter zu drehen, wie folgt:

#!/usr/bin/env python
import elinks
import sys
for line in sys.stdin:
    line = line.decode('utf-8')
    sys.stdout.write(line.encode('ASCII', 'elinks'))

Andere Tipps

iconv sollte es tun, soweit ich weiß. Nicht 100% sicher, wie es behandelt Umwandlungen, bei denen ein Eingabezeichen sollte / mehrere Ausgabezeichen, wie mit dem Auslassungs Beispiel werden könnte ... etwas versuchen!

Update: Ich habe versucht es, und es scheint, es funktioniert nicht. Es schlägt fehl, möglicherweise, da sie nicht weiß, wie Auslassungszeichen (das Testzeichen I verwendet) in einer „kleineren“ Codierung auszudrücken. Konvertieren von UTF-8 in UTF-16 ging in Ordnung. :. / Doch iconv könnte sich lohnen zu untersuchen weiter

Hier finden Sie aktuelle Umschrift Werkzeuge; Ich mag Unidecode (in Perl) und es ist nicht allzu schwer zu portieren zu anderen Sprachen.

I iconv verwendet haben, eine Datei von UTF-16LE (Little-Endian, wie ich durch Versuch und Irrtum gefunden out) zu konvertieren, die von TextPad unter Windows in ASCII auf OSX wie folgt erstellt wurde:

 cat utf16file.txt |iconv -f UTF-16LE -t ASCII > asciifile.txt

Sie können Rohr durch hexdump als auch um die Zeichen anzuzeigen und stellen Sie sicher, dass Sie den richtigen Ausgang finden fühlt, weiß das Terminal, wie UTF-16 zu interpretieren und zeigt es richtig, so dass Sie nicht nur sagen, sondern tun ‚Katze‘ auf die Datei:

cat utf16file.txt | iconv -f UTF-16LE -t ASCII | hexdump -C 

Dies zeigt das Layout mit dem Hex-Zeichen-Codes und das ASCII-Zeichen auf die rechte Seite, und Sie können verschiedene Kodierungen im -f „von“ Parametern versuchen, herauszufinden, was Ihnen zu tun haben.

Mit 'iconv -l' das Zeichen zur Liste setzt iconv auf Ihrem System verwenden können.

Es war eine Frage gestern oder am Tag zuvor über Dateiumbenennung, und ich zeigte einen Perl-Skript rename.pl, die für die Aufgabe verwendbar wären. Der Problembereich ist zu wissen, wie die ungeraden Zeichen codiert sind, und die korrekte Reihenfolge der Transkriptionen entwerfen. Ich würde tut es wahrscheinlich mit einer Anpassung des Skripts, die alle der Reihe nach den Zuordnungen haben. Tut ihm ein Zeichen in einer Zeit würde übermäßig knifflig sein.

Frage war: Wie mit Präfix / Suffix umbenennen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top