在linux的只用過程中,總是避免不了排序問題。比如,topn問題。linux提供了sort排序命令,支援常用的排序功能。
常用引數
sort命令支援很多引數,常用引數如下:
1.預設排序
預設情況下,sort命令,以字母序進行文字排序。如下:
shuanghu@shuanghu:tmp$cat word.txt
onetwo
three
four
shuanghu@shuanghu:tmp$sort
word.txt
four
onethree
two
2.數字排序如果想對數字進行排序,可以使用-n引數
shuanghu@shuanghu
:tmp
$ cat num.txt
10020
3shuanghu@shuanghu
:tmp
$ sort num.txt -n320
100
3.指定列排序sort排序的時候,可以按欄位分割的資料進行排序。-t引數表示行的分割字元,-k表示第幾列。當然,可以進行降序排序,-r引數可以實現。
下面是對passwd檔案,以冒號(:)進行分割,然後對第三列以數字方式進行降序排序。
shuanghu@shuanghu
:etc
$ cat passwd
daemon:x:1
:1:daemon
:/usr/sbin
:/usr/sbin/nologin
bin:x:2
:2:bin
:/bin
:/usr/sbin/nologin
sys:x:3
:3:sys
:/dev
:/usr/sbin/nologin
sync:x:4
:65534
:sync
:/bin
:/bin/sync
games:x:5
:60:games
:/usr/games
:/usr/sbin/nologin
man:x:6
:12:man
:/var/cache/man
:/usr/sbin/nologin
lp:x:7:
7:lp
:/var/spool/lpd
:/usr/sbin/nologin
mail:x:8
:8:mail
:/var/mail
:/usr/sbin/nologin
shuanghu@shuanghu
:etc
$ sort -t ':' -k 3 -nr passwd
mail:x:8
:8:mail
:/var/mail
:/usr/sbin/nologin
lp:x:7:
7:lp
:/var/spool/lpd
:/usr/sbin/nologin
man:x:6
:12:man
:/var/cache/man
:/usr/sbin/nologin
games:x:5
:60:games
:/usr/games
:/usr/sbin/nologin
sync:x:4
:65534
:sync
:/bin
:/bin/sync
sys:x:3
:3:sys
:/dev
:/usr/sbin/nologin
bin:x:2
:2:bin
:/bin
:/usr/sbin/nologin
daemon:x:1
:1:daemon
:/usr/sbin
:/usr/sbin/nologin
4.資料夾大小排序在du的時候,加上-h可以使用易讀性數字,比如2k,1g,3m這種。sort也支援-h引數。
比如,du乙個資料夾下的目錄大小後,想以檔案大小進行排序。由於du -h的結果是3k,2m,1g這種,不能簡單的按數字排序。所以,可以使用-h引數。具體如下:
shuanghu@shuanghu
:tmp
$ du -h
2.0g ./test2
4.0k ./test3
316m ./test
2.3g .
shuanghu@shuanghu
:tmp
$ du -h |sort -hr
2.3g .
2.0g ./test2
316m ./test
4.0k ./test3
5.系統程序記憶體占用排序檢視系統程序中,記憶體占用最多的前5個程序資訊
shuanghu@shuanghu:tmp$ ps aux|sort -gr-k4
|head -n
5shuanghu 1740
15.7
4.61506764
189872
? sl 5月07
142:08 compiz
root 1304
2.11.9
338928
80208 tty7 ssl+
5月07
19:29 /usr/bin/x -core :0
-seat seat0 -auth /var/run/lightdm/root/:0
-nolisten tcp vt7 -novtswitch
shuanghu 1933
0.01.1
1074520
46708
? sl 5月07
0:00 /usr/lib/evolution/evolution-calendar
-factory
shuanghu 1833
0.00.8
974900
34468
? sl 5月07
0:01 nautilus -n
shuanghu 2111
0.00.6
655712
24920
? sl 5月07
0:16 gnome-terminal
6.對檔案內容進行去重如果檔案內容有很多重複的,需要進行去重。sort也是支援的,可以通過-u引數使用
shuanghu@shuanghu:tmp$cat word.txt
onetwo
twothree
three
three
four
four
four
shuanghu@shuanghu:tmp$sort -u word.txt
four
onethree
two
7.將sort輸出內容寫入檔案在shell中,一般將控制台內容寫入檔案,可以使用重定向,但如果想把sort的排序內容寫回檔案,則不能使用重定向。則需要-o引數。具體如下:
shuanghu@shuanghu:tmp$cat word.txt
onetwo
three
four
shuanghu@shuanghu:tmp$sort
word.txt > word.txt
shuanghu@shuanghu:tmp$cat word.txt #輸出為空
shuanghu@shuanghu:tmp$sort
word.txt -o word.txt
shuanghu@shuanghu:tmp$sort -u word.txt
four
onethree
two
sort命令詳解
sort是在linux裡常用的乙個命令,sort將檔案的每一行作為乙個單位,相互比較,比較原則是從首字元向後,依次按ascii碼值進行比較,最後將他們按公升序輸出。sort命令將檔案 文字按行排序,可以從指定檔案或標準輸入中讀資料,下面是他所帶的幾個引數 r 順序反轉,也就是倒序 k 按第幾個字段排...
sort命令詳解
sort將檔案的每一行作為乙個單位,相互比較,比較原則是從首字元向後,依次按ascii碼值進行比較,最後將他們按公升序輸出。rocrocket rocrocket programming cat seq.txt banana pear orange rocrocket rocrocket progr...
Linux排序命令sort詳解
語法格式sort a b c d f i m n r u o outfile t character t directory y kilobytes z recordsize fskip cskip b d f i n r fskip cskip b d f i n r k keydefinitio...