【问题标题】:`uniq` not working as expected`uniq` 没有按预期工作
【发布时间】:2014-10-08 01:51:00
【问题描述】:

我有一个名为“test.txt”的文件,如下所示:

10
10
10
8
10
9
10
10
9
10
8

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

10
8
10
9
10
9
10
8

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

【问题讨论】:

    标签: macos bsd uniq


    【解决方案1】:

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

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

    因此它们必须相邻才能被检测到。因此,反复报道。它们与相邻的行不同,而这都是 uniq 实际测试的。

    希望对您有所帮助。让我知道我是否错过了什么,我其实也有点好奇。

    【讨论】:

    • 就是这样:uniq 的先决条件是输入已排序(或者它会做一些与锡上说的有点不同的事情)。这就是为什么经常使用sort -u 的原因——它通过一个进程完成这两个步骤。
    • uniq 只比较相邻的行。这就是规则。我改用sort -u
    猜你喜欢
    • 2021-10-19
    • 2020-03-18
    • 2012-06-14
    • 2014-11-15
    • 1970-01-01
    • 2012-07-02
    • 2011-09-07
    • 2013-03-03
    • 2015-05-18
    相关资源
    最近更新 更多