Удаление символов Юникода из textfiles-sed, другие методы bash / shell
Как удалить символы юникода из группы текстовых файлов на терминале? Я пробовал это, но это не сработало:
sed 'g/u'U+200E'//' -i *.txt
мне нужно, чтобы удалить эти юникоды из текстовых файлов
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
5 ответов
Если вы хотите удалить только определенные символы и у вас есть Python, вы можете:
CHARS=$(python -c 'print u"\u0091\u0092\u00a0\u200E".encode("utf8")')
sed 's/['"$CHARS"']//g' < /tmp/utf8_input.txt > /tmp/ascii_output.txt
очистить все символы, отличные от ascii file.txt
$ iconv -c -f utf-8 -t ascii file.txt
$ strings file.txt
для кодировки utf-8 unicode вы можете использовать это регулярное выражение для sed:
sed 's/\xc2\x91\|\xc2\x92\|\xc2\xa0\|\xe2\x80\x8e//'
использовать iconv:
iconv -f utf8 -t ascii//TRANSLIT < /tmp/utf8_input.txt > /tmp/ascii_output.txt
это переведет символы, такие как" Š "в" S " (наиболее похожие на них).
конвертировать Swift файлы из utf-8 в ascii:
for file in *.swift; do
iconv -f utf-8 -t ascii "$file" > "$file".tmp
mv -f "$file".tmp "$file"
done