从文本文件中删除unicode字符 – sed,其他bash / shell方法

如何从terminal上的一堆文本文件中删除unicode字符? 我试过这个,但它没有工作:

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

我需要从文本文件中删除这些unicode

 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 

如果你想删除特定的字符,你有python,你可以:

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

清除file.txt所有非ascii字符

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

对于unicode的utf-8编码,你可以使用这个正则expression式为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 

快速自动完成在Xcode6-Beta中不起作用