linux的sort命令詳解
linux下sort命令是非常常用的一個排序命令,下面由學習啦小編為大家搜集整理了linux的sort命令的相關知識,希望對大家有幫助!
linux的sort命令詳解
sort是在Linux里非常常用的一個命令,管排序的。
1 sort的工作原理
sort將文件的每一行作為一個單位,相互比較,比較原則是從首字符向后,依次按ASCII碼值進行比較,最后將他們按升序輸出。
[rocrocket@rocrocket programming]$ cat seq.txt
banana
apple
pear
orange
[rocrocket@rocrocket programming]$ sort seq.txt
apple
banana
orange
pear
linux的sort命令選項說明
2 sort的-u選項
它的作用很簡單,就是在輸出行中去除重復行。
[rocrocket@rocrocket programming]$ cat seq.txt
banana
apple
pear
orange
pear
[rocrocket@rocrocket programming]$ sort seq.txt
apple
banana
orange
pear
pear
[rocrocket@rocrocket programming]$ sort -u seq.txt
apple
banana
orange
pear
pear由于重復被-u選項無情的刪除了。
3 sort的-r選項
sort默認的排序方式是升序,如果想改成降序,就加個-r就搞定了。
[rocrocket@rocrocket programming]$ cat number.txt
1
3
5
2
4
[rocrocket@rocrocket programming]$ sort number.txt
1
2
3
4
5
[rocrocket@rocrocket programming]$ sort -r number.txt
5
4
3
2
1
4 sort的-o選項
由于sort默認是把結果輸出到標準輸出,所以需要用重定向才能將結果寫入文件,形如sort filename > newfile。
但是,如果你想把排序結果輸出到原文件中,用重定向可就不行了。
[rocrocket@rocrocket programming]$ sort -r number.txt > number.txt
[rocrocket@rocrocket programming]$ cat number.txt
[rocrocket@rocrocket programming]$
看,竟然將number清空了。
就在這個時候,-o選項出現(xiàn)了,它成功的解決了這個問題,讓你放心的將結果寫入原文件。這或許也是-o比重定向的唯一優(yōu)勢所在。
[rocrocket@rocrocket programming]$ cat number.txt
1
3
5
2
4
[rocrocket@rocrocket programming]$ sort -r number.txt -o number.txt
[rocrocket@rocrocket programming]$ cat number.txt
5
4
3
2
1
5 sort的-n選項
你有沒有遇到過10比2小的情況。我反正遇到過。出現(xiàn)這種情況是由于排序程序將這些數(shù)字按字符來排序了,排序程序會先比較1和2,顯然1小,所以就將10放在2前面嘍。這也是sort的一貫作風。
我們?nèi)绻敫淖冞@種現(xiàn)狀,就要使用-n選項,來告訴sort,“要以數(shù)值來排序”!
[rocrocket@rocrocket programming]$ cat number.txt
1
10
19
11
2
5
[rocrocket@rocrocket programming]$ sort number.txt
1
10
11
19
2
5
[rocrocket@rocrocket programming]$ sort -n number.txt
1
2
5
10
11
19