2013年9月25日 星期三

[linux] sort,uniq,comm cat 排序相關命令



sort  命令解釋:
功能說明:將文字檔案內容加以排序。
sort -u [file]  =  sort [file] | uniq (去重)
參數說明
-b 忽略每行前面開始出的空格字元
-c 檢查檔是否已經按照順序排序
-d 排序時,處理英文字母、數位及空格字元外,忽略其他的字元
-f  排序時,將小寫字母視為大寫字母
-l  排序時,除了040176之間的ASCII字元外,忽略其他的字元

 
-m 將幾個排序好的檔進行合併
-M 將前面3個字元依照月份的縮寫進行排序
-n 依照數值的大小排序
-o<輸出檔> 講排序後的結果存入指定的檔
-r 以相反的順序來排序
-t<分隔字元> 指定排序時所用的欄位元分割字元
+<起始欄位>-<結束欄位> 以指定的欄位來排序,範圍由起始蘭位到結束欄位的前一欄位
--help 顯示幫助
--version 顯示版本資訊
-u 對排序後認為相同的行只留其中一行

uniq  命令解釋:
功能說明:檢查及刪除文字檔案中重複出現的行列。
語法uniq[選項]
最重要參數  默認(去重)  |  -d(顯重)   |   -u(刪重)
參數
-c--count 在每列旁邊顯示該行重複出現的次數
-d--repeat 僅顯示重複出現的行列
-f<欄位>--skip-fields=<欄位> 忽略比較指定的欄位
-s<字元位置>--skip-chars=<字元位置> 忽略比較指定的字元
-u--unique 僅顯示出一次的行列
-w<字元位置>--check-chars<字元位置> 指定要比較的字元
--help 幫助資訊
--version 版本資訊

comm  命令詳解:
功能說明:比較兩個已排序的文件
語法 comm [-123][--help][--version][第一個檔][第二個檔]
補 充說明:這項指令會一列列的比較兩個已排序檔的差異,並將其結果顯示出來。如果沒有指定任何參數,則會把結果分成3行顯示,第1行是僅在第一個檔中出 現的列,第2行是僅在第二個檔中出現過的列,第3行則是在兩個檔中都出現過的列。若給予的檔案名稱是"-",則comm指令會從標準輸入設備中讀取數 據。
參數
-1 不顯示在第1個檔中出現的列
-2 不顯示在第2個檔中出現的列
-3 不顯示只在第1或第2個檔中出現的列
選項1 23抑制相應的列顯示,例如
comm -12 顯示兩個檔中都出現的行
comm -23 顯示在第1個檔出現,而不是在第2個檔出現的行
comm -123 什麼都不顯示

注意
uniq    comm 命令需要使用已經排序好的內容才有意義。
注意檔格式要為unix

一些例子:
第一:兩個文件的交集,並集
前提條件:兩個檔不得有重複的行(即兩個檔都要去重)
1. 取出兩個檔的並集 cat file1 file2 | sort | uniq >file3
2. 取出兩個檔的交集 cat file1 file2 | sort | uniq -d >file3
3. 刪除交集 cat file1 file2 | sort |uniq -u <file3
第二:兩個檔合併
1. 一個在上一個在下 cat file1 files2 >file3
2. 一個在左一個在右 paste file1 file2 >file3
第三:一個檔去掉重複行
1.  sort file | uniq 把重複的行合併為一行
2.  sort file | uniq -u 把重複的行刪除,僅保留非重複的行

轉自:http://blog.csdn.net/xwhself/article/details/6118722

沒有留言:

張貼留言

Google Analytics初學者入門簡介