sort命令詳解

2021-08-18 21:44:39 字數 4283 閱讀 6549

在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...