1. 程式人生 > 其它 >shell之sort,uniq,cut

shell之sort,uniq,cut

# sort主要是要理解域

# sort選項
-c	測試檔案是否已經分類
-m	合併兩個分類檔案
-u	刪除所有複製行
-o	儲存sort結果的輸出檔名
-b	使用域進行分類時,忽略第一個空格
-n	指定分類是域上的數字分類
-t	域分隔符;用非空格或tab鍵分隔域
-r	對分類次序或比較求逆,意思就是將得到的結果倒序排序
-k  指定分類鍵(域)
post1 傳遞到m,n。m為域號,n為開始分類字元數;例如4,6意即以第5域分類,從第7個字元開始

# sort對域的參照方式
關於sort的一個重要事實是它參照第一個域作為域0,域1是第二個域,等等。sort也可以使用整行作為分類依據。

# 示例,將/etc/passwd檔案按第三域(域2)分類
因為第三域是數值,所以分類時候要加上n
sort -t: -k 3n /etc/passwd

# 指定分類鍵次序,先以第4域,在以第一域分類並求逆
sort -t: -r -k4 -k1 /etc/passwd


# uniq用法
unip用來從一個文字檔案中去除或禁止重複行。一般uniq假定檔案已分類,並且結果正確。我們並不強制要求這樣做,如果願意,可以使用任何非排序文字,甚至是無規律行。可以認為uniq有點像sort命令中唯一性選項。對,在某種程式上講正是如此,但兩者又一個重要區別。sort的唯一性選項去除所有重複行,而uniq命令並不這樣做。重複行是什麼?在uniq裡意即持續不斷重複出現的行,中間不夾雜任何其它文字,示例
>>> cat myfile.txt
May Day
May Day
May Day
Going Down
May Day
uniq將前三個May Day看作重複副本,但是因為第4行有不同的文字,故不認為第五行持續的May Day為其副本。uniq將保留這一行
# 命令格式
uniq -u d c -f inputfile outputfile
-u	只顯示不重複行
-d	只顯示有重複資料行,每種重複行只顯示其中一行
-c	列印每一重複行出現次數
-n	n為數字,前n個域被忽略


# cut用法
cut用來從標準輸入或文字檔案中剪下列或域。剪下文字可以將之貼上到一個文字檔案。
## 命令格式
cut [options] file1 file2
## 選項
-c list		指定剪下字元數
-f field	指定剪下域數
-d	指定與空格和tab鍵不同的域分隔符
-c	用來指定剪下範圍,如:-c1, 5-7剪下第一個字元,然後是第5到第7給字元。-c1-50剪下前50個字元
-f	格式與-c相同
-f1, 5剪下第1域,第5域
-f1, 10-12 剪下第1域,第10域到第12域

# 示例使用域分隔符,以冒號為分隔域,並剪下第3域
cut -d: -f3 /etc/passwd

-------------------------------------------

個性簽名:程式碼過萬,鍵盤敲爛!!!

如果覺得這篇文章對你有小小的幫助的話,記得在右下角點個“推薦”哦,博主在此感謝!