我正在尝试在文本文件上使用以下命令:
$ sort <m.txt | uniq -c | sort -nr >m.dict
但是我收到以下错误消息:
sort: string comparison failed: Invalid or incomplete multibyte or wide character
sort: Set LC_ALL='C' to work around the problem.
sort: The strings compared were ‘enwedig\r’ and ‘mwy\r’.
我在Windows 7上使用Cygwin,在更早地编辑m.txt以便将文件中的每个单词放在新行上时遇到了麻烦。请参阅:
Using AWK to place each word in a text file on a new line
我不确定是因为这个原因还是因为m.txt包含了威尔士字母的字符而导致的错误(当我在Python中使用威尔士文字时,不需要将编码更改为'Latin-1 ')。
我尝试遵循错误消息的建议并更改LC_ALL ='C',但这无济于事。任何人都可以详细说明我收到的错误,并提供有关如何解决该问题的建议。
更新:
尝试执行dos2unix时,在某些行上显示有关无效字符的错误。事实证明这些字符不是威尔士字符,而是其他奇怪的字符(箭头等)。我遍历了文本文件,删除了这些字符,直到能够正确使用dos2unix命令为止。但是,在使用dos2unix命令之后,所有文本都被连接起来(没有空格/换行符或其他任何东西,但是应该是这样,以便文件中的每个单词都在单独的行上),然后我使用了unix2dos,文本文件恢复了正常状态。如何在每个单词单独行上使用sort命令,而又不给我有关“\r”字符的错误?
最佳答案
我知道这是一个古老的问题,但是仅运行export LC_ALL='C'
命令就可以实现sort: Set LC_ALL='C' to work around the problem.
所描述的技巧。