【问题标题】:Why does uniq -z returns duplicates?为什么 uniq -z 返回重复项?
【发布时间】:2013-06-30 11:13:58
【问题描述】:

我有文件sorted.txt

$cat sorted.txt  
bash  
fosh  
hack  
hack  

如果我这样做uniq

$uniq sorted.txt  
bash  
fosh  
hack  

如果我这样做uniq -z,我会得到:

$uniq -z sorted.txt  
bash  
fosh  
hack  
hack  

即在uniq -z 我得到了重复!我原以为uniq sorted.txtuniq -z sorted.txt 的输出的唯一区别是分隔符。
为什么我在 uniq -z 中得到重复?

【问题讨论】:

    标签: linux shell unix cygwin uniq


    【解决方案1】:

    -z 选项告诉uniq 使用 0 字节而不是换行符作为记录之间的分隔符。由于您的文件没有任何 0 字节,因此它被视为一条记录。

    【讨论】:

    • 所以它首先将\n 转换为\0,它有效地制作了一条记录,然后尝试删除重复项,但由于它是一条记录,它没有找到重复项?但那为什么如果 \n 已经被删除,它会在多行中打印这条记录?
    • 它不会转换任何东西。它在输入中寻找\0 作为记录分隔符。它将\n 视为记录中的普通字符。
    • iow,输出与输入完全一样,被认为是一个单独的长条目。如果使用未排序的文件,结果会更加明显。见uniq(1)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 2018-08-05
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    相关资源
    最近更新 更多