大家可能經常遇到檔案內容排序去重處理的事情,使用 linux 命令可以很方便的處理,sort 命令在處理檔案排序和去重中起著非常重要的左右,是檔案處理的利器。
比如有以下檔案內容:
pythontab.com
4345 15 12121 4145 7 fdf 4245 5 dfsf 1345 76 432423 0693 2 4345 06a7 82 4e 06a9 58 e33 4345 68 343 06c1 56 453 06d7 145 45678 4345 117 21 06e3 280 76 4345 7 3434 4345 48 80 06f1 463 121 4345 3847 131 070b 1236 64 070d 3343 77 0713 104235 90 0715 6 12 0726 121 97798
想要按照第二列排序去重,怎麼做呢?其實只需要 sort 命令就可以解決了
sort -t $'\t' -k 2 -u pythontab.com
sort 排序命令
-t 指定分隔符為‘\t’
-k 指定第三列
-u 去重
sort的其他一些選項:
-r 降序排列
-o 把排序結果輸出到原始檔
sort預設是把結果輸出到標準輸出,所以需要用重定向才能將結果寫入檔案,形如
sort filename>newfile
如果將結果輸出到原檔案,用重定向相當於清空
-n 看為數字來比較
你有沒有遇到過10比2小的情況。我反正遇到過。出現這種情況是由於排序程式將這些數字按字元來排序了,排序程式會先比較1和2,顯然1小,所以就將10放在2前面嘍。這也是sort的一貫作風。
我們如果想改變這種現狀,就要使用-n選項,來告訴sort,“要以數值來排序”!
-f 會將小寫字母都轉換為大寫字母來進行比較,亦即忽略大小寫
-c 會檢查檔案是否已排好序,如果亂序,則輸出第一個亂序的行的相關資訊,最後返回1
-C 會檢查檔案是否已排好序,如果亂序,不輸出內容,僅返回1
-M 會以月份來排序,比如JAN小於FEB等等
-b 會忽略每一行前面的所有空白部分,從第一個可見字元開始比較。