Linux
cat file.txt 之間的區別 |sort -u 和 cat file.txt |獨特的
我想知道 sort -u 和 uniq 之間的區別。我嘗試使用下面的命令來獲取文件中唯一字元串的計數,sort -u 和 uniq 根據我的知識提供了相同的輸出。那為什麼它提供了兩種不同的計數。
cat test.txt | sort -u | wc -l 351 cat test.txt | uniq | wc -l 370
為什麼它顯示兩個不同的行數?
嚴格來說,
uniq
不需要排序輸入 - 但確實uniq
只會刪除連續的重複行。不同之處在於:
sort
對文件進行排序,並且(使用其-u
選項)還可以消除重複的行,這些行現在都是連續的,因為它們已被排序。uniq
刪除連續的重複行。它還具有僅輸出重複行的選項(每行帶有-d
,或所有重複行帶有-D
),並且可以輸出一行在輸入中出現的次數(-c
)。它還有其他選項來控制如何檢測欺騙,例如跳過欄位和僅比較一行中的 N 個字元。- 如果你想結合兩者的特性,
sort
當然可以通過管道輸入。uniq
sort -u
當您不關心保留輸入文件的順序或實際上希望它排序時很有用 - 但輸出中根本不希望重複。
uniq
在需要保留輸入順序時很有用,或者當您只關心連續重複時 - 例如,當您想要對已經排序的文件進行 uniq 時(無需浪費 CPU 和 IOPS 再次對其進行排序);或刪除段落之間的所有連續換行符(例如,pdftotext
通常在行或段落之間產生大量空白 -uniq
可以刪除額外內容,使其更易於閱讀或編輯)。