Wie kann ich in der Shell Nicht-ASCII-Zeichen identifizieren?

Wie kann ich in der Shell Nicht-ASCII-Zeichen identifizieren?

Gibt es eine einfache Möglichkeit, alle Nicht-ASCII-Zeichen und die Zeilennummern, in denen sie in einer Datei vorkommen, mithilfe eines Befehlszeilenprogramms wie grep, awk, perl, usw. auszudrucken?

Ich möchte die Kodierung einer Textdatei von UTF-8 in ASCII ändern, möchte jedoch vorher alle Vorkommen von Nicht-ASCII-Zeichen manuell ersetzen, um unerwartete Zeichenänderungen durch die Dateikonvertierungsroutine zu vermeiden.

Antwort1

$ perl -ne 'print "$. $_" if m/[\x80-\xFF]/'  utf8.txt
2 Pour être ou ne pas être
4 Byť či nebyť
5 是或不

oder

$ grep -n -P '[\x80-\xFF]' utf8.txt
2:Pour être ou ne pas être
4:Byť či nebyť
5:是或不

wobei utf8.txt ist

$ cat utf8.txt
To be or not to be.
Pour être ou ne pas être
Om of niet zijn
Byť či nebyť
是或不

Antwort2

Ich möchte die Kodierung einer Textdatei von UTF-8 in ASCII ändern ...

... alle Vorkommen von Nicht-ASCII-Zeichen ersetzen ...

Weisen Sie dann Ihr Konvertierungstool an, dies zu tun.

$ iconv -c -f UTF-8 -t ASCII <<< 'Look at 私.'
Look at .

$ iconv -c -f UTF-8 -t ASCII//translit <<< 'áēìöų'
aeiou

verwandte Informationen