1. 程式人生 > >【Linux】基礎之sort命令

【Linux】基礎之sort命令

結果 ddd 分組 ogl pre 分隔符 英文字母 google 字符串

sort命令用於將文本文件內容加以排序
sort可以針對文本文件內容,以行為單位來排序。

參數:
-b:忽略每行前面開始出現的空格字符
-c:檢查文件是否已經按照順序排序
-d:排序時,處理英文字母、數字及空格字符外,忽略其它字符。
-f:排序時,將小寫字母視為大寫字母
-i:排序時,除了040至176之間的ASCII字符外
-m:將幾個排序好的文件進行合並
-M:將前面三個字母依照月份的縮寫進行排序
-n:依照數值大小進行排序
-o<輸出文件>:將排序後的結果存入指定文件
-r:以相反的順序來排序
-t<分割字符>:指定排序時所用的分隔符
+<起始欄位>-<結束欄位> 以指定的欄位來排序,範圍由起始欄位到結束欄位的前一欄位

--help 顯示幫助。

實例:
1.以ASCII順序排序文件test1
sort test1

2.忽略文件相同行

sort -u test1
或
uniq test1

3.sort -n -r -k -t的使用
先查看一個文件sort.txt

cat sort.txt
AAA:BB:CC
aaa:30:1.6
ccc:50:3.3
ddd:20:4.2
bbb:10:2.5
eee:40:5.4
eee:60:5.1

#將BB列按照數字從小到大順序排列:

sort -nk 2 -t: sort.txt
AAA:BB:CC
bbb:10:2.5
ddd:20:4.2
aaa:30:1.6
eee:40:5.4
ccc:50:3.3
eee:60:5.1

#將CC列數字從大到小順序排列:

sort -nrk 3 -t: sort.txt
eee:40:5.4
eee:60:5.1
ddd:20:4.2
ccc:50:3.3
bbb:10:2.5
aaa:30:1.6
AAA:BB:CC

-n是按照數字大小排序,-r是以相反順序,-k是指定需要愛排序的欄位,-t指定欄位分隔符為冒號

-k選項的具體語法格式:

-k選項的語法格式:


FStart.CStart Modifie,FEnd.CEnd Modifier
-------Start--------,-------End--------
 FStart.CStart 選項  ,  FEnd.CEnd 選項

這個語法格式可以被其中的逗號,分為兩大部分,Start部分和End部分。Start部分也由三部分組成,其中的Modifier部分就是我們之前說過的類似n和r的選項部分。我們重點說說Start部分的FStart和C.Start。C.Start也是可以省略的,省略的話就表示從本域的開頭部分開始。FStart.CStart,其中FStart就是表示使用的域,而CStart則表示在FStart域中從第幾個字符開始算“排序首字符”。同理,在End部分中,你可以設定FEnd.CEnd,如果你省略.CEnd,則表示結尾到“域尾”,即本域的最後一個字符。或者,如果你將CEnd設定為0(零),也是表示結尾到“域尾”。

1.從公司英文名稱的第二個字母開始進行排序:

sort -t ‘ ‘ -k 1.2 book.txt  ##以空格為分隔符
baidu 100 5000
sohu 100 4500
google 110 5000
guge 50 3000

使用k 1.2表示第一個域的第二個字符開始到本域的最後一個字符為止的字符串進行排序。sohu與google第二個字符相同,所以按照第三個字符來對這兩字符誰前誰後排序。

2.只針對公司英文名稱的第二個字母進行排序,如果相同的按照員工工資進行降序排序:
sort -t ‘ ‘ -k 1.2,1.2 -nrk 3,3 book.txt

由於只針對1.2進行排序,所以這裏用1.2,1.2來表示

【Linux】基礎之sort命令