Gewusst wie: ersetzen von Unicode-Zeichen mit ASCII
Habe ich den folgenden Befehl zum ersetzen von Unicode-Zeichen mit ASCII-ones.
sed -i 's/Ã/A/g'
Das problem ist Ã
nicht erkannt durch den sed-Befehl in meinem Unix-Umgebung, so würde ich annehmen, Sie ersetzen Sie es mit Ihrem hexadezimalen Wert. Wie würde der syntax Aussehen, wenn ich Gebrauch C3
statt?
Ich bin mit diesem Befehl als Vorlage für die anderen Charaktere würde ich gerne ersetzen mit Leerzeichen wie:
sed -i 's/©//g'
meinst du wie diese? stackoverflow.com/questions/22450563/...
Welcher Zeichensatz hat Ihr terminal verwenden? Und mit welchem encoding funktioniert die Eingabe von text verwenden? Ã in UTF-8 ist 0xC3 0x83, und Charakter 0x83 ist ein Kontroll-code, ISO 8859-1, so dass könnte ein problem sein. Ich nehme an, Sie können nicht nur festlegen
"sed" wird die Arbeit machen. Bitte siehe meine Antwort.
Welcher Zeichensatz hat Ihr terminal verwenden? Und mit welchem encoding funktioniert die Eingabe von text verwenden? Ã in UTF-8 ist 0xC3 0x83, und Charakter 0x83 ist ein Kontroll-code, ISO 8859-1, so dass könnte ein problem sein. Ich nehme an, Sie können nicht nur festlegen
LANG=en_US.UTF-8
auf Ihrem system."sed" wird die Arbeit machen. Bitte siehe meine Antwort.
InformationsquelleAutor Sandeep Johal | 2014-11-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es möglich, hex-Werte in "sed".
Ok, das Zeichen ist, zwei-byte-Kombination "c3 83". Lassen Sie uns ersetzen Sie es mit single-byte "A":
Erklärung: \x steht für "sed", die einen hex-code folgt.
Was meinst du mit "schreiben Sie mit <<<"?
hexdump -C <<< Ö
Falls Sie sich Fragen, was die
0a
im hexdump war, es ist dieLF
Charakter aus derecho
. Das ist, warum es ignoriert wird. Oder Sie konnteecho -n
nicht drucken dieLF
.Ich musste alle drei Teile (nicht zwei) , sed erfolgreich ersetzen 'e2 80 af' - Zeichen. Kann das sein, eine Allgemeine Regel?
InformationsquelleAutor ajaaskel
Können Sie iconv:
Ja, aber er kann es versuchen
Vielen Dank, aber ich bin mit diesem als Vorlage zum erstellen anderer sed-Befehle, ersetzen Sie bestimmte Zeichen mit Leerzeichen zum Beispiel: sed -i 's/©/ /g'
InformationsquelleAutor midori
Versuchen Sie
LANG=C
und dann starten Sie es über die Unicode-Bereich:echo "hi ☠ there ☠" | LANG=C sed "s/[\x80-\xFF]//g"
InformationsquelleAutor
Gibt es auch
uconv
von ICU.Beispiele:
uconv -x "::NFD; [:Nonspacing Mark:] > ; ::NFC;"
: entfernen Sie Akzenteuconv -x "::Latin; ::Latin-ASCII;"
: für eine transliteration Lateinisch/asciiuconv -x "::Latin; ::Latin-ASCII; ([^\x00-\x7F]) > ;"
: für eine transliteration Lateinisch/ascii und Beseitigung der verbleibenden code Punkte > 0x7Fecho "À l'école ☠" | uconv -x "::Latin; ::Latin-ASCII; ([^\x00-\x7F]) > ;"
gibt:
A l'ecole
InformationsquelleAutor julp