Uniq不会删除重复

Modified on: Sat, 30 Jun 2018 09:16:30 +0800

我使用以下命令

curl -silent http://api.openstreetmap.org/api/0.6/relation/2919627 http://api.openstreetmap.org/api/0.6/relation/2919628 | grep node | awk '{print $3}' | uniq

当我想知道为什么uniq不会删除重复项时。知道为什么吗?

最佳答案

您必须对输出进行排序,以便uniq命令能够正常工作。请参见手册页:

  

从INPUT(或标准输入)过滤相邻的匹配线,写入OUTPUT(或标准输出)。

因此,您可以先将输出传输到sort,然后再将uniq传递给它。或者您可以使用sort的能力来执行排序和唯一性如下:

$ ...your command... | sort -u

实施例

排序| uniq的

$ cat <(seq 5) <(seq 5) | sort | uniq
1
2
3
4
5

sort -u

$ cat <(seq 5) <(seq 5) | sort -u
1
2
3
4
5

你的例子

$ curl -silent http://api.openstreetmap.org/api/0.6/relation/2919627 http://api.openstreetmap.org/api/0.6/relation/2919628 \
      | grep node | awk '{print $3}' | sort -u
ref="1828989762"
ref="1829038636"
ref="1829656128"
ref="1865479751"
ref="451116245"
ref="451237910"
ref="451237911"
ref="451237917"
ref="451237920"
ref="451237925"
ref="451237933"
ref="451237934"
ref="451237941"
ref="451237943"
ref="451237945"
ref="451237947"
ref="451237950"
ref="451237953"
作者:,slm

相关问答

添加新评论