標籤:shell sort uniq
sort用來排序,uniq用來去重,這兩個命令經常被結合在一起使用.主要就是因為uniq去重的前提是文本必須排好序才可以.
當然字面上面理解,這兩個命令的確是這樣的功能.但是其實不然,他們還有相關的其它能力.一起來看看.
sort [option] filename ... 對filename指定的檔案進行排序相關的操作.
option常用的包括:
-b 忽略最前面的空格.
-c 檢查是否已經排序,結果通過$?來查看
-n 按數字進行排序
-d 字典排序.
-M 月份排序
-h 排序人們所理解的單位.比如1K 小於 1G
-r reverse 反序
-R random 隨機
-t 域分隔字元
-k 關鍵字域
-o 輸出,預設輸出到stdout,如果指定了這個選項,則輸出到檔案中.
-u 排序後去除重複的行.
在上面這些選項中最常用的就是-b -n -t -k -r
看下效果:
1. 根據目前的目錄檔案的大小排序:
sort預設的分隔字元是空格和tab鍵,所以在這裡並不需要特別指定.
2. 指定輸出檔案.
這也就是-o存在的意義.你可能想重新導向到同一個檔案中,但是那樣的結果是你會死得很慘.資料會丟失.這種方式則不會.
3. 檢查一個檔案是否排好了
4. 排序去重
ok.基本上我也就用這麼幾個sort的功能.同學們在實際的應用中,要習慣去使用man.可能英文不是那麼好理解,至少對我而言如此.不過我有自己的辦法,就是我先去熟悉一個命令,等大致熟悉了以後,就可以理解英文的意思了.
通過第四個小例子,可以很容易聯想到uniq,因為它同樣可以完成這樣的意圖.
uniq [option] input output uniq接受輸出,把結果輸出的標準輸出.
常見的選項有:
-d 僅列印出重複的行
-u 僅列印不重複的行,與-d作用相反
-c 去重,並且加一個計數首碼.
-s n 跳過前n個字元.
-w n 僅比較指定的n個字元數,常和s選項合用,指定一個範圍進行去重.
關於這兩個命令就總結這麼多,還是要多去敲敲,哪怕沒有環境用,創造一個環境也用一下.
6 shell命令之sort,uniq