我试图将美国和英国词典合并成一本大词典,并且我试图从超集中删除所有重复项,但似乎 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_ALL
到en_US.UTF-8
uniq -u
仅报告独特的行。所以,如果这些单字母单词都出现了好几次,它们不出现也是正常的。
在我的系统上,重剑确实出现两次:
$ cat american-english british-english | sort | grep -x 'épée'
épée
épée
也许你的意思是sort | uniq
或sort -u
。