51 votes

Supprimer les caractères Unicode des fichiers texte - sed , autres méthodes Bash/shell

Comment supprimer les caractères Unicode d'un tas de fichiers texte dans le terminal ?

J'ai essayé ceci, mais cela n'a pas fonctionné :

 sed 'g/\u'U+200E'//' -i *.txt

Je dois supprimer ces caractères Unicode des fichiers texte :

 U+0091 - sort of weird "control" space
U+0092 - same sort of weird "control" space
A0 - non-space break
U+200E - left to right mark

68voto

kev Points 41855

Effacer tous les caractères non-ASCII de file.txt :

 $ iconv -c -f utf-8 -t ascii file.txt
$ strings file.txt

55voto

Michał Šrajer Points 9487

Si vous souhaitez supprimer uniquement des caractères particuliers et que vous disposez de Python, vous pouvez :

 CHARS=$(python -c 'print u"\u0091\u0092\u00a0\u200E".encode("utf8")')
sed 's/['"$CHARS"']//g' < /tmp/utf8_input.txt > /tmp/ascii_output.txt

35voto

choroba Points 56333

Pour l'encodage UTF-8 d'Unicode, vous pouvez utiliser cette expression régulière pour sed :

 sed 's/\xc2\x91\|\xc2\x92\|\xc2\xa0\|\xe2\x80\x8e//g'

16voto

Michał Šrajer Points 9487

Utiliser iconv :

 iconv -f utf8 -t ascii//TRANSLIT < /tmp/utf8_input.txt > /tmp/ascii_output.txt

Cela traduira des caractères comme "Š" en "S" (les plus similaires).

2voto

MattDiPasquale Points 23842

Convertissez les fichiers Swift d'UTF-8 en ASCII :

 for file in *.swift; do
    iconv -f utf-8 -t ascii "$file" > "$file".tmp
    mv -f "$file".tmp "$file"
done

La complétion automatique Swift ne fonctionne pas dans Xcode 6 Beta

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X