sort指令
sort
指令用于将文本檔案内容加以排序,可針對文本檔案的内容,以行為機關來排序。
文法
sort [OPTION]... [FILE]...
sort [OPTION]... --files0-from=F
參數
-
: 忽略前導空格。-b, --ignore-leading-blanks
-
: 隻考慮空格和字母數字字元。-d, --dictionary-order
-
: 将小寫字元轉為大寫字元。-f, --ignore-case
-
: 按一般數值進行比較。-g, --general-numeric-sort
-
: 隻考慮可列印字元。-i, --ignore-nonprinting
-
: 比較-M, --month-sort
。JAN < ... < DEC
-
: 比較人類可讀的數字,例如-h, --human-numeric-sort
、2K
1G
-
: 根據字元串數值進行比較。-n, --numeric-sort
-
: 按鍵的随機哈希排序。-R, --random-sort
-
: 從--random-source=FILE
中擷取随機位元組。FILE
-
: 反轉比較結果。-r, --reverse
-
: 根據--sort=WORD
排序:一般數字WORD
,chan數字-g
,月份-h
,數字-M
,随機--n
,版本R
-V
-
: 一次最多合并--batch-size=NMERGE
輸入,對于更多輸入,請使用臨時檔案。NMERGE
-
: 檢查已排序的輸入,不排序。-c, --check, --check=diagnose-first
-
: 類似于-C, --check=quiet, --check=silent
但不報告第一行錯誤。-c
-
: 用--compress-program=PROG
壓縮臨時檔案,用PROG
解壓臨時檔案。PROG-d
-
: 注釋行中用于排序的部分,并向--debug
警告可疑用法。stderr
-
: 從檔案--files0-from=F
中以F
結尾的名稱指定的檔案讀取輸入,如果NUL
是F
,則從标準輸入讀取名稱。-
-
: 在-k, --key=POS1[,POS2]
處開始鍵(原點POS1
),在1
處結束鍵(預設行結束)。POS2
-
: 合并已排序的檔案,不排序。-m, --merge
-
: 将結果寫入-o, --output=FILE
而不是标準輸出。FILE
-
: 通過禁用最後的比較來穩定排序。-s, --stable
-
: 使用-t, --field-separator=SEP
代替非空到空的轉換。SEP
-
: 将-T, --temporary-directory=DIR
用于臨時檔案,而不是DIR
或$TMPDIR
多個選項指定多個目錄。/tmp
-
: 将同時運作的排序數更改為--parallel=N
N
-
: 對于-u, --unique
檢查嚴格的順序,隻輸出相等運作的第一個。-c
-
: 以 位元組結束行,而不是換行。-z, --zero-terminated
-
: 輸出幫助資訊。--help
-
: 輸出版本資訊。--version
示例
file.txt
file1.txt
file2.txt
檔案内容如下。
# file.txt
abhishek
chitransh
satish
rajan
naveen
divyam
harsh
# file1.txt
50
39
15
89
200
# file2.txt
abc
apple
BALL
Abc
bat
bat
對
file.txt
檔案内容進行排序,要儲存的話需要使用輸出重定向。
sort file.txt
# abhishek
# chitransh
# divyam
# harsh
# naveen
# rajan
# satish
sort file2.txt
# abc
# Abc
# apple
# BALL
# bat
# bat
可以使用
-r
标志執行逆序排序。
sort -r file.txt
# satish
# rajan
# naveen
# harsh
# divyam
# chitransh
# abhishek
使用
-n
對數字進行排序,不使用
-n
的話則會使用字典序排序。
sort -n file1.txt
# 15
# 39
# 50
# 89
# 200
sort file1.txt
# 15
# 200
# 39
# 50
# 89
要對帶有反向數字資料的檔案進行排序,我們可以使用下面
-nr
兩個選項的組合。
sort -nr file1.txt
# 200
# 89
# 50
# 39
# 15
-u
排序并删除重複項。
sort -u file2.txt
# abc
# Abc
# apple
# BALL
# bat
-c
檢查檔案是否已經按照順序排序。
sort -c file2.txt
# sort: file2.txt:4: disorder: Abc
每日一題
https://github.com/WindrunnerMax/EveryDay
參考
https://www.computerhope.com/unix/usort.htm
https://www.runoob.com/linux/linux-comm-sort.html
https://www.geeksforgeeks.org/sort-command-linuxunix-examples/