Uniq entfernt keine Duplikate


10

Ich habe den folgenden Befehl verwendet

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

als ich mich fragte, warum ich uniqdie Duplikate nicht entfernen sollte. Irgendeine Idee warum?

Antworten:


15

Sie müssen die Ausgabe sortieren, damit der uniqBefehl funktionieren kann. Siehe die Manpage:

Filtern Sie benachbarte übereinstimmende Zeilen von INPUT (oder Standardeingabe) und schreiben Sie in OUTPUT (oder Standardausgabe).

Sie können also die Ausgabe sortzuerst in und dann in uniqsie leiten. Oder Sie können die sortFähigkeit nutzen, die Sortierung durchzuführen und alles zusammen so einzigartig zu machen:

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

Beispiele

sortieren | 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

Dein Beispiel

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

und was ist, wenn ich nicht möchte, dass die Ausgabe sortiert wird, weil meine Bestellung wichtig ist? uniq kann das nicht?
Phil294

@Blauhirn nein kann es nicht.
slm
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.