2017-01-22 102 views
0

我试图做的命令行一些基本的文本分析,但每当我试图运行一个命令,我得到如下:TR:非法字节序列。我已经将问题缩小到文本中的特殊字符(',,¨等等)。我能做些什么来从文本中删除这些特殊字符?我可以使用命令行吗?或者我必须运行脚本?有没有办法从文本文件中删除特殊字符?

+0

见http://unix.stackexchange.com/questions/141420/tr-complains-of-illegal-byte-sequence,我觉得你的文件是错误的编码。你在什么操作系统上?请参阅http://stackoverflow.com/questions/64860/best-way-to-convert-text-files-between-character-sets。 –

+0

感谢您的回应!我正在使用macOS Sierra。我会给你看看的链接。 –

+0

所以如果你真的想在你的文件,以摆脱非ASCII的,也许'的iconv -f -t UTF-8 ASCII // TRANSLIT'是你在找什么。或者换一种方式来代替'utf8',这取决于你的文件是什么。见http://stackoverflow.com/questions/8562354/remove-unicode-characters-from-textfiles-sed-other-bash-shell-methods。 –

回答

0

我不知道你是如何处理你的文本,但显然你试图运行tr,它给你错误信息tr: Illegal byte sequence。当其输入不是对应于有效UTF-8编码的字节序列时(不是所有字节序列对应于一系列Unicode字符的UTF-8编码),都会发生这种情况。

我不知道你想要处理什么样的文件,但是在MacOS X环境下,命令file -I可能会让你知道实际存在的编码。

如果它仅仅是一个重新编码的文件的事情,然后iconv是一个有用的程序。通过使用iconv -f ... -t utf8(其中...是原始文件的编码,运行iconv -l以获得可用的编码列表),您可以使用它重新编码为UTF-8编码。

或者如果您真的想要删除您文件中的特殊字符(如您在问题标题中所述),您可以使用iconv -f ... -t ascii//TRANSLIT。在最后一种情况下,“特殊字符”将近似于普通的ASCII字符。

相关问题