Supprimer les caractères unicode de textfiles-sed, autres méthodes Bash / shell

Comment supprimer les caractères unicode d'un tas de fichiers texte sur le terminal? J'ai essayé mais ça n'a pas marché:

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

je dois enlever ces unicodes des fichiers de 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
37
demandé sur alvas 2011-12-19 17:55:39

5 réponses

si vous voulez supprimer seulement des caractères particuliers et que vous avez 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
39
répondu Michał Šrajer 2011-12-19 14:19:43

effacer tous les caractères non-ascii de file.txt

$ iconv -c -f utf-8 -t ascii file.txt
$ strings file.txt
51
répondu kev 2011-12-19 14:12:31

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//'
22
répondu choroba 2011-12-19 14:26:23

utiliser iconv:

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

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

12
répondu Michał Šrajer 2011-12-19 14:05:17

Convertir les fichiers Swift de utf-8 en ascii:

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

"151940920 swift" l'auto-complétion ne fonctionne pas dans Xcode6-Bêta

2
répondu ma11hew28 2017-05-23 11:46:58