一、指令簡介
Linux sort指令用于将文本檔案内容加以排序。sort可針對文本檔案的内容,以行為機關來排序。shell中sort指令有3中執行模式,分别是排序文本,檢查檔案是否已經排序,合并檔案。
二、使用示例
1、預設按照第一列的ASCII 碼次序排序
2、按照數字排序
使用-n參數按照數字排序
[[email protected] tmp]# cat 1.log
4 a
10 b
1 c
[[email protected] tmp]# cat 1.log |sort -n
1 c
4 a
10 b
3、指定列排序
使用-k參數指定列排序,例如指定第8列時間進行排序
[[email protected] tmp]# ll -h |sort -k 8
total 99M
-rw-r–r--. 1 wuhs wuhs 125 Feb 19 10:01 2.log
-rw-r–r--. 1 root root 2.4K Feb 19 10:10 3.log
-rw-r–r--. 1 root root 183 Feb 19 10:25 4.log
-rw-r–r--. 1 root root 19 Feb 19 10:47 5.log
-rw-r–r--. 1 root root 425K Feb 9 13:46 s125.test1.sql
-rw-r–r--. 1 wuhs wuhs 0 Feb 19 14:04 1.log
-rw-r–r--. 1 root root 98M Feb 9 14:07 s125.test2.sql
4、排序後去重
使用-u參數去重
[[email protected] tmp]# cat 2.log
序号 企業名稱 公網IP位址
1 國海證券 113.16.174.228
3 興業證券 61.154.12.206
2 平安證券 211.157.16.114
3 興業證券 61.154.12.206
[[email protected] tmp]# cat 2.log |sort -u
1 國海證券 113.16.174.228
2 平安證券 211.157.16.114
3 興業證券 61.154.12.206
序号 企業名稱 公網IP位址
5、按照檔案大小進行排序
使用-h參數,按照人類習慣閱讀方式比較檔案大小
6、排序取反
使用-r參數取反,即改為降序排序
[[email protected] tmp]# cat 5.log
1 test 1
2 test2 2
[[email protected] tmp]# cat 5.log |sort -r
2 test2 2
1 test 1
7、自定義分隔符後指定列排序
使用-t參數自定義分隔符
[[email protected] tmp]# cat 4.log |sort -t “:” -k 5,使用:作為分隔符,以第5列的值排序
8、将兩個檔案合同同時對合并後的内容排序
[[email protected] tmp]# sort 2.log 5.log > 6.log
[[email protected] tmp]# cat 6.log
1 test 1
1 國海證券 113.16.174.228
2 test2 2
2 平安證券 211.157.16.114
3 興業證券 61.154.12.206
3 興業證券 61.154.12.206
序号 企業名稱 公網IP位址
三、參數說明
1、文法格式
- sort [OPTION]… [FILE]…
- sort [OPTION]… --files0-from=F
2、參數說明
參數 | 說明 |
---|---|
-b, --ignore-leading-blanks | 忽略前面空格。 |
-d, --dictionary-order | 根據字典順序排序,僅比較數字 字母 空格等字元。 |
-f, --ignore-case | 忽略大小寫。 |
-g, --general-numeric-sort | 按一般數值比較 |
-i, --ignore-nonprinting | 僅比較可列印字元。 |
-M, --month-sort | 月份 |
-h, --human-numeric-sort | 使用易讀性數字(例如: 2K 1G) |
-n, --numeric-sort | 純數字排列 |
-R, --random-sort | 根據哈希值随機排序。 |
–random-source=FILE | 從檔案中擷取随機位元組 |
-r, --reverse | 降序排序,預設為升序 |
–sort=WORD | 按單詞排序: |
-V, --version-sort | 按照文本中的自然編号排序 |
–batch-size=NMERGE | 使用臨時檔案一次最多合并n個合并輸入 |
-c, --check, --check=diagnose-first | 檢查已排序的輸入;不排序 |
-C, --check=quiet, --check=silent | 與-c參數類似,但是不報告第一行錯誤 |
–compress-program=PROG | 用PROG壓縮臨時檔案,用PROG-d解壓臨時檔案 |
–debug | debug,用于排查錯誤用法 |
–files0-from=F | 從指定的檔案讀取輸入,檔案F中以NUL結尾的名稱; |
-k, --key=KEYDEF | 通過鍵排序;KEYDEF給出位置和類型 |
-m, --merge | 合并已排序的檔案;不排序 |
-o, --output=FILE | 将結果寫入檔案而不是标準輸出 |
-s, --stable | 通過禁用最後的比較來穩定排序 |
-S, --buffer-size=SIZE | 使用主記憶體緩沖區大小 |
-t, --field-separator=SEP | 使用SEP代替非空到空轉換 |
-T, --temporary-directory=DIR | 多個選項指定多個目錄将DIR用于臨時變量,而不是$TMPDIR或/tmp |
–parallel=N | 将同時運作的排序數更改為N |
-u, --unique | 與-c一起,檢查是否嚴格排序;如果沒有-c,則隻輸出相等運作的第一個 |
-z, --zero-terminated | 如果沒有-c,則隻輸出相等運作的第一個 |
–help | 檢視幫助 |
–version | 擷取版本資訊 |