Uniq sẽ không xóa bản sao


10

Tôi đã sử dụng lệnh sau

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

khi tôi tự hỏi tại sao uniqsẽ không loại bỏ các bản sao. Bất cứ ý tưởng tại sao?

Câu trả lời:


15

Bạn phải sắp xếp đầu ra để uniqlệnh có thể hoạt động. Xem trang người đàn ông:

Lọc các dòng khớp liền kề từ INPUT (hoặc đầu vào tiêu chuẩn), ghi vào OUTPUT (hoặc đầu ra tiêu chuẩn).

Vì vậy, bạn có thể ống đầu ra vào sortđầu tiên và sau đó uniqnó. Hoặc bạn có thể sử dụng sortkhả năng của mình để thực hiện sắp xếp và duy nhất cùng nhau như vậy:

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

Ví dụ

sắp xếp | uniq

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

sắp xếp

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

Ví dụ của bạn

$ 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"

và nếu tôi không muốn đầu ra được sắp xếp vì thứ tự của tôi có vấn đề thì sao? uniq không thể làm điều đó?
phil294

@Blauhirn không nó không thể.
slm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.