为什么 uniq 忽略 Unicode 和只有一个字母的行?

为什么 uniq 忽略 Unicode 和只有一个字母的行?

我试图将美国和英国词典合并成一本大词典,并且我试图从超集中删除所有重复项,但似乎 uniq 没有输出诸如“épée”或单个字母之类的单词。

这是我尝试使用的:

LC_COLLATE=en_US.UTF-8 cat american-english british-english |sort|uniq -u > unique_sorted_combined_dict

如果我只是这样做:

LC_COLLATE=en_US.UTF-8 cat american-english british-english |sort > sorted_combined_dict

“épée”和其他类似的单词确实出现了,还有单个字母。

我在这里缺少什么吗uniq

我应该注意,我在 Ubuntu 12.10 上使用 GNU coreutils 中的 uniq,如果这有什么区别的话。

答案1

LC_COLLATE您只为命令设置cat(不使用它),而您需要为sort和设置它uniq

另外,你可能需要设置LC_CTYPE为utf-8,否则会引起混乱。我会设置LC_ALLen_US.UTF-8

uniq -u仅报告独特的行。所以,如果这些单字母单词都出现了好几次,它们不出现也是正常的。

在我的系统上,重剑确实出现两次:

$ cat american-english british-english | sort | grep -x 'épée'
épée
épée

也许你的意思是sort | uniqsort -u

相关内容