2012-11-29 46 views
0

案例:列出目錄中的所有唯一文件名。與排序的意外區別-u和uniq -u

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

所以cd在這種情況下唯一的。對於固定寬度,我們可以這樣做:

$ 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 -urefsort能夠進行排序和特定領域我所期望的輸出爲c.hd.i但它不是。

有什麼想法?

注:我不需要幫助解決問題,比如一個解決方案只是扭轉兩次數據:

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

回答

2

sort -u相當於sort | uniq,即給予uniq任何標誌。

+2

換句話說:'uniq'只有在輸入已經排序後才能正常工作 – scai