Sort -u 函数命令不起作用

Sort -u 函数命令不起作用

正如你在附图中看到的 截屏

在我使用 sort 命令对非常大的单词列表文件进行排序后,我使用 Split 命令将它们拆分。从那里我确认列出的单词是按 az 顺序排列的。

然后我运行该sort -u命令并注意到它没有删除唯一的单词。 (它删除了一些,因为我可以看到文件有点小,但不是全部。)

我究竟做错了什么?

总体目标:我的总体目标是获取所有单词列表并将它们放入一个大文件(25gig)中,然后排序并删除任何唯一单词(将其削减 40% 左右),然后将文件拆分为可管理的大小。 Windows 程序或 Linux 命令均不起作用。

答案1

sort -u 删除唯一的线。因此,一个潜在的问题是这三行不一样,并且sort -u会留下所有这些:

foo
foo 
foo 

无论你看得多么仔细,都很难注意到原因。也就是说,除非您进行十六进制转储,xxd例如:

0000000: 666f 6f0a 666f 6f20 0a66 6f6f e280 820a  foo.foo .foo....

0x0a是换行符,如果您不熟悉十六进制转储。所以三个“foo”是:

666f 6f         0a
666f 6f20       0a
666f 6fe2 8082  0a

啊哈!这实际上是foofoo<SPACE>( 0x20) 和foo<EN-SPACE>( 0xe28082,以 UTF-8 进行 U+2002 编码)。

你可能也遇到过类似的事情。您需要使用十六进制编辑器或文本编辑器集来显示不可见字符。例如,以下是gvimwith中的内容:set list。我刚刚输入命令ga来查看光标下的字符是什么,显示它是 U+2002。您还可以看到行尾 ( $) 与您期望的位置不同,两行后面有空格:

gvim 演示的屏幕截图:设置列表

相关内容