为什么 uniq 忽略 Unicode 和带有单个字母的行?

sup*_*tah 6 text-processing sort unicode locale uniq

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

这是我尝试使用的:

LC_COLLATE=en_US.UTF-8 cat american-english british-english |sort|uniq -u > unique_sorted_combined_dict
Run Code Online (Sandbox Code Playgroud)

如果我只是这样做:

LC_COLLATE=en_US.UTF-8 cat american-english british-english |sort > sorted_combined_dict
Run Code Online (Sandbox Code Playgroud)

“épée”和其他这样的词确实出现了,以及单个字母。

有什么我在这里想念的uniq吗?

我应该注意到我在 Ubuntu 12.10 上使用来自 GNU coreutils 的 uniq,如果这有什么不同的话。

Sté*_*las 3

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

\n\n

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

\n\n

uniq -u只报告唯一的行。所以,如果这些单字母单词都出现了几次,不出现也是正常的。

\n\n

在我的系统上,\xc3\xa9p\xc3\xa9e确实出现了两次:

\n\n
$ cat american-english british-english | sort | grep -x '\xc3\xa9p\xc3\xa9e'\n\xc3\xa9p\xc3\xa9e\n\xc3\xa9p\xc3\xa9e\n
Run Code Online (Sandbox Code Playgroud)\n\n

也许你的意思sort | uniq是或sort -u

\n