我正在尝试在文本文件上使用以下命令:

$ 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.所描述的技巧。

10-06 02:04