uniq无法正常工作

lut*_*act 1 macos bsd uniq

我有一个名为“ test.txt”的文件,看起来像这样:

10
10
10
8
10
9
10
10
9
10
8
Run Code Online (Sandbox Code Playgroud)

由于某种原因,当我运行时uniq test.txt,我得到了以下输出:

10
8
10
9
10
9
10
8
Run Code Online (Sandbox Code Playgroud)

为什么我得到此输出?我正在使用BSD uniq。程序中是否存在某种错误?

Ste*_*aro 5

我不是专家,但是我敢肯定uniq只比较相邻的行。我不必经常使用它,但是在我的系统上运行man uniq我得到:

uniq实用程序读取比较相邻行的指定input_file,并将每个唯一输入行的副本写入output_file。如果input_file为单破折号(`-')或不存在,则读取标准输入。如果不存在output_file,则将标准输出用于输出。相同相邻输入行的第二个及后续副本未写入。如果输入的重复行不相邻,则不会检测到它们,因此可能有必要先对文件进行排序。

因此,它们必须相邻才能被检测到。因此,重复的报告。它们不同于相邻的行,这是uniq实际测试的所有内容。

希望能有所帮助。Lemme知道我是否错过了任何事情,实际上我也很好奇。

  • 正是这样:uniq具有对输入进行排序的先决条件(否则它将做的事情与在锡盒上说的有所不同)。这就是为什么通常使用`sort -u`的原因-它通过一个过程完成两个步骤。 (2认同)