【问题标题】:Unexpected difference with sort -u and uniq -usort -u 和 uniq -u 的意外差异
【发布时间】:2012-11-29 10:36:45
【问题描述】:

案例:列出目录中所有唯一的文件名。

$ ls 
a.h  a.i  b.h  b.i  c.h  d.i

所以c 和d 在这种情况下是唯一的。对于固定宽度,我们可以这样做:

$ ls | uniq -w1 -u
c.h
d.i

虽然文件名不是固定宽度,但不是很有帮助,uniq 只能跳过字段(即忽略从左到右而不是从右到左的字段)。

ls | sort -u -t. -k1,1
a.h
b.h
c.h
d.i

我认为sort -u 等同于uniq -u (ref) 并且sort 能够排序并且给定字段我希望输出为c.h 和@ 987654332@ 但不是。

有什么想法吗?

注意:我不需要帮助来解决问题,例如一种解决方案是将数据反转两次:

$ ls | rev | uniq -u -s1 | rev
c.h
d.i

【问题讨论】:

    标签: linux sorting uniq


    【解决方案1】:

    sort -u 等价于 sort | uniq,即没有给定 uniq 的标志。

    【讨论】:

    • 或者换句话说:uniq 只有在输入已经排序的情况下才能正常工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    相关资源
    最近更新 更多