數據分析常用到的文件排序及對比命令

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 把重複的行刪除,僅保留非重複的行


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章