sort :將文本文件內容加以排序。
sort -u [file] = sort [file] | uniq (去重)
參數說明
-b 忽略每行前面開始出的空格字符
-c 檢查文件是否已經按照順序排序
-d 排序時,處理英文字母、數字及空格字符外,忽略其他的字符
-f 排序時,將小寫字母視爲大寫字母
-l 排序時,除了040至176之間的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 2和3抑制相應的列顯示,例如
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
3. cat file1 >> file2
第三:一個文件去掉重複行
1. sort file | uniq 把重複的行合併爲一行
2. sort file | uniq -u 把重複的行刪除,僅保留非重複的行