我试图在文本文件中使用以下命令:
$ 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中使用威尔士语时,我需要更改编码为&#39; Latin-1&#39;)。
我尝试按照错误消息的建议并更改LC_ALL =&#39; C&#39;但这没有帮助。任何人都可以详细说明我收到的错误,并就如何解决这个问题提出任何建议。
更新:
尝试使用dos2unix时,会在某些行显示有关无效字符的错误。事实证明这些不是威尔士人物,而是其他奇怪的人物(箭头等)。我查看了删除这些字符的文本文件,直到我能够无错误地使用dos2unix命令。但是,在使用dos2unix命令后,所有文本都连接在一起(没有空格/换行符或任何内容,而应该是这样,文件中的每个单词都在单独的行上)然后我使用unix2dos并且文本文件恢复正常。如何在每个单词的各个单词上使用sort命令,而不会给出错误的&#39; \ r&#39;字符?
答案 0 :(得分:1)
看起来像Windows行结尾相关问题(\n
与m.txt
)。您可以使用
dos2unix m.txt
转换为Unix行结尾
{{1}}
然后重新运行命令。
答案 1 :(得分:1)
我知道这是一个老问题,但只是运行命令export LC_ALL='C'
就可以实现sort: Set LC_ALL='C' to work around the problem.
所描述的技巧。