開始使用免費開始

我要怎麼移除重複的列?

另一個經常和 sort 一起用的指令是 uniq, 它的工作是移除重複的列。 更精確地說, 它會移除「相鄰」的重複列。 如果檔案內容是:

2017-07-03
2017-07-03
2017-08-03
2017-08-03

那麼 uniq 會產生:

2017-07-03
2017-08-03

但如果內容是:

2017-07-03
2017-08-03
2017-07-03
2017-08-03

uniq 會印出全部四行。 原因是 uniq 是為了處理非常大的檔案而設計的。 若要從檔案中移除不相鄰的重複列, 它就必須把整個檔案放在記憶體中 (或至少, 把到目前為止看過的所有不重複列都放在記憶體中)。 只移除相鄰的重複時, 它只需要在記憶體中保留最近一次出現的不重複列即可。

本練習屬於課程

Shell 入門

檢視課程

練習說明

撰寫一個管線以:

  • 取得 seasonal/winter.csv 的第 2 欄,
  • 從輸出中移除「Tooth」這個字,讓只剩牙齒名稱,
  • 將輸出排序,讓同一個牙齒名稱的所有出現相鄰;以及
  • 每個牙齒名稱只顯示一次,並附上出現次數。

你的管線開頭與上一個練習相同:

cut -d , -f 2 seasonal/winter.csv | grep -v Tooth

接著加上 sort 指令,並使用 uniq -c 來顯示不重複的列與其出現次數,而不是分別使用 uniqwc

動手互動練習

將理論付諸實踐,立即體驗我們的互動練習

開始練習