2016-07-21 4 views
0

Ich möchte eindeutige Zeilen einer Datei (Linien, die erscheint nur einmal), aber die folgenden Befehl zeigt wiederholt Linien sehen:Warum muss ich uniq sortieren, um wiederholte Zeilen zu entfernen?

uniq -u data.txt 
#(it shows repeated lines) 

Ich suchte und fand ich heraus, dass, wenn Sie sort setzen es funktioniert, aber warum?

sort data.txt | uniq - u 
#(it works, only shows unique lines) 
+5

Denn so funktioniert 'uniq'. –

+1

Das steht auf der Magierseite so: 'Hinweis: 'uniq' erkennt keine wiederholten Zeilen, außer sie sind benachbart. Vielleicht möchten Sie die Eingabe zuerst sortieren oder 'sort -u' ohne 'uniq' verwenden. –

+1

Die Beschreibung für sort lautet oft "wiederholte Zeilen weglassen", aber es sollte "fortlaufende wiederholte Zeilen weglassen". Es wird keine Zeile gedruckt, wenn es mit der Zeile übereinstimmt, die zuletzt gedruckt wurde, aber für mehr als den Status nicht beibehalten wird. –

Antwort

0

können Sie verwenden diese

sort -u uniqtest 

ex:

[email protected]:/tmp$ cat uniqtest 
aaaa 
aaaa 
bbbb 
bbbb 
a 
b 
c 
d 
[email protected]/tmp$ sort -u uniqtest 
a 
aaaa 
b 
bbbb 
c 
d 

Von uniq Methode manuell;

... 
Note: 'uniq' does not detect repeated lines unless they are adjacent. You may want to sort the input first, or use 'sort -u' without 'uniq'. 
.... 
0

Es ist explizit in der Manpage:

Wiederholte Zeilen in der Eingabe nicht erkannt werden, wenn sie nicht Cent sind angren-, so dass es notwendig sein kann, zuerst die Dateien zu sortieren.

Verwandte Themen