Linux管線命令之排序命令(sort, wc, uniq)
阿新 • • 發佈:2019-02-07
sort可以對資料流進行排序
sort [-fbMnrtuk] [file or stdin]
選項與引數:
-f :忽略大小寫的差異,例如 A 與 a 視為編碼相同;
-b :忽略最前面的空格符部分;
-M :以月份的名字來排序,例如 JAN, DEC 等等的排序方法;
-n :使用『純數字』進行排序(預設是以文字型態來排序的);
-r :反向排序;
-u :就是 uniq ,相同的資料中,僅出現一行代表;
-t :分隔符,預設是用 [tab] 鍵來分隔;
-k :以那個區間 (field) 來進行排序的意思
使用這個比較有趣的1點是,我們可以對資料流進行分隔然後再以某個區間來排序。
/etc/passwd 內容是以 : 來分隔的,我想以第三欄含後面資料來排序,該如何?
[dmtsai@study ~]$ cat /etc/passwd | sort -t ':' -k 3
root:x:0:0:root:/root:/bin/bash
dmtsai:x:1000:1000:dmtsai:/home/dmtsai:/bin/bash
alex:x:1001:1002::/home/alex:/bin/bash
arod:x:1002:1003::/home/arod:/bin/bash
uniq,可以對資料流中的資料,刪除連續重複的資訊或者對連續重複資訊進行計數,這裡的連續重複,指的是既連續,又重複的資料,例如下面有1個檔案
hello
hi
hello
hello
hi
hi
然後我們通過uniq進行處理最後得到的將會是
hello
hi
hello
hi
這1點我們是要注意一下的,所以這個命令通常都會搭配sort一起使用,因為sort可以把資料流給排序了,排序後,資料自然就會都整理好,然後再通過uniq就可以刪除重複的資料或者對資料進行計數了,
wc,如果我們要對1個檔案進行統計,統計裡面有多少行,多少個字元,那麼久可以使用這個wc了,用法很簡單,只需要在|後加上wc [-l(僅列出行)w(僅列出字元)m(僅列出多少個字串)]