Comment puis-je identifier les caractères non ASCII du shell?


12

Yat - il un moyen simple d'imprimer tous les caractères non-ASCII et les numéros de ligne sur lequel ils se produisent dans un fichier en utilisant une ligne de commande utilitaire tel que grep, awk, perl, etc?

Je veux changer le codage d'un fichier texte de UTF-8 en ASCII, mais avant de le faire, je souhaite remplacer manuellement toutes les instances de caractères non ASCII pour éviter les changements de caractères inattendus effectués par la routine de conversion de fichier.

Réponses:


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

ou

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

où utf8.txt est

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

1
Merci. L'extrait perl fonctionne directement, mais la version grep ne fonctionne pas avec GNU grep 2.16. J'ai pu le faire fonctionner via:, LC_ALL=C grep -n -P [$'\x80'-$'\xFF']où le premier bit désactive le classement.
Joe Corneli

4

Je veux changer l'encodage d'un fichier texte de UTF-8 en ASCII ...

... remplacer toutes les instances de caractères non ASCII ...

Dites ensuite à votre outil de conversion de le faire.

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

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

Il a dit qu'il voulait faire ce remplacement manuellement. Le remplacement le plus approprié dépend peut-être du contexte.
mark4o
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.