sort命令
--功能說明:以行爲單位對文件進行排序。
--命令格式:sort [參數] [<文件>...]
-b :忽略前導的空格。
-d :只考慮空格、字母和數字。
-f :忽略字母大小寫。
-i :只考慮刻打印的字符。
-M :排序月份,(未知詞)“JAN”< ... <“DEC”。
-n :根據字符串的數值進行排序。
-r :逆向排序。
-u :對相同的行過濾。
+n :n爲數字,對指定的行進行排序,+0表示第一列,以空格或製表符作爲列的間隔符。
1.sort將文件/文本的每一行作爲一個單位,相互比較,比較原則是從首字符向後,依次按ASCII碼值進行比較,最後將他們按升序輸出。
例1:
[root@lesliescripts]# cat sort.txt
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
fff:60:6.6
bbb:20:2.2
eee:50:5.5
ccc:30:3.3
ccc:30:3.3
bbb:20:2.2
[root@lesliescripts]# sort sort.txt
aaa:10:1.1
bbb:20:2.2
bbb:20:2.2
ccc:30:3.3
ccc:30:3.3
ccc:30:3.3
ddd:40:4.4
eee:50:5.5
fff:60:6.6
2.忽略相同行使用-u選項或者uniq。
[root@lesliescripts]# cat sort.txt
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
fff:60:6.6
bbb:20:2.2
eee:50:5.5
ccc:30:3.3
ccc:30:3.3
bbb:20:2.2
[root@lesliescripts]# sort -u sort.txt
aaa:10:1.1
bbb:20:2.2
ccc:30:3.3
ddd:40:4.4
eee:50:5.5
fff:60:6.6
[root@lesliescripts]# uniq sort.txt
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
fff:60:6.6
bbb:20:2.2
eee:50:5.5
ccc:30:3.3
bbb:20:2.2
3. sort -n是按照數字大小排序,-r是以相反順序,-k是指定的第幾個段排序,-t指定的分隔符爲冒號。
[root@lesliescripts]# sort -nk 2-t: sort.txt
aaa:10:1.1
bbb:20:2.2
bbb:20:2.2
ccc:30:3.3
ccc:30:3.3
ccc:30:3.3
ddd:40:4.4
eee:50:5.5
fff:60:6.6
[root@lesliescripts]# sort -nrk 3 -t: sort.txt
fff:60:6.6
eee:50:5.5
ddd:40:4.4
ccc:30:3.3
ccc:30:3.3
ccc:30:3.3
bbb:20:2.2
bbb:20:2.2
aaa:10:1.1
4.uniq命令用於消除文件中的重複內容,sort -u 對內容排序並消除重複行。
[root@lesliescripts]# cat web.txt
https://hao.360.cn/?360safe
https://hao.360.cn/?360safe
http://www.sina.com.cn/
http://www.sina.com.cn/
http://www.elong.com/
http://www.sina.com.cn/
http://www.elong.com/
http://www.elong.com/
http://www.elong.com/
[root@lesliescripts]# uniq web.txt
https://hao.360.cn/?360safe
http://www.sina.com.cn/
http://www.elong.com/
http://www.sina.com.cn/
http://www.elong.com/
[root@lesliescripts]# sort web.txt |uniq
http://www.elong.com/
http://www.sina.com.cn/
https://hao.360.cn/?360safe
[root@lesliescripts]# sort -u web.txt
http://www.elong.com/
http://www.sina.com.cn/
https://hao.360.cn/?360safe
5.uniq -u只顯示不重複的內容。
[root@lesliescripts]# cat web.txt
https://hao.360.cn/?360safe
https://hao.360.cn/?360safe
http://www.sina.com.cn/
http://www.sina.com.cn/
http://www.elong.com/
http://www.sina.com.cn/
http://www.elong.com/
http://www.elong.com/
http://www.elong.com/
[root@lesliescripts]# uniq -u web.txt
http://www.elong.com/
http://www.sina.com.cn/
[root@lesliescripts]# sort web.txt |uniq -u
6. uniq -c統計各行在文件中出現的次數。
[root@lesliescripts]# sort web.txt |uniq -c
4 http://www.elong.com/
3 http://www.sina.com.cn/
2 https://hao.360.cn/?360safe
7. uniq -d在文件中找出重複的行。
[root@lesliescripts]# sort web.txt |uniq -d
http://www.elong.com/
http://www.sina.com.cn/
https://hao.360.cn/?360safe
8.按對應列排序:
默認按整行排序
-t指定分隔符,-k1,分隔符之後的第一列排序。
-k 1 1 用逗號來分隔字段,表示第一個字段開始排序到第一個字段結束。
–k 1.1,3.3 用點分隔字符,表示第一個字段的第一個字符開始排序到第三個字段的第三個字符結束。