手机看片精品高清国产日韩,色先锋资源综合网,国产哺乳奶水91在线播放,乱伦小说亚洲色图欧洲电影

Linux文件排序工具 sort

2025-02-10 10:57:25 2684

歡迎來到藍隊云技術(shù)小課堂,每天分享一個技術(shù)小知識。


Linux 里,有時候需要對文本文件或數(shù)據(jù)進行排序,sort 命令就是個很趁手的工具。它不僅能按字母序排序,還支持數(shù)值、大小寫、分隔符、自定義列等各種玩法,直就是排序界的瑞士軍刀。

sort 的常用參數(shù)

sort 命令有不少參數(shù),先看看常用的幾個

短參數(shù)

長參數(shù)

說明

-n

--number-sort

按數(shù)值排序(整數(shù))

-g

--general-numeric-sort

按通用數(shù)值排序(支持科學計數(shù)法)

-f

--ignore-case

忽略大小寫

-k

--key=POS1[,POS2]

指定按哪一列排序

-t

--field-separator=SEP

指定列分隔符

-r

--reverse

降序排序(默認是升序)

-h

--human-numeric-sort

按人類可讀的數(shù)字格式排序(如 2K、1G)

-u

--unique

去重

-o

--output=FILE

將輸出寫入文件


sort 命令實戰(zhàn)

1. 默認排序(按字母序)

如果不帶任何參數(shù),sort 默認是按字母序來排的。

[root@centos ~]$ cat word.txt

one

two

three

four

 

[root@centos ~]$ sort word.txt

four

one

three

two

2. 數(shù)字排序(按數(shù)值大小)

默認情況下,sort 會把所有內(nèi)容當作字符串,100 可能會排在 20 前面。如果要按數(shù)值排序,需要 -n 參數(shù)。

[root@centos ~]$ cat num.txt

100

20

3

 

[root@centos ~]$ sort -n num.txt

3

20

100

3. 按某一列排序

有時候我們需要按照某一列的數(shù)據(jù)排序,比如 passwd 文件,它用 : 分隔多個字段,我們想按第三列(UID)排序:

[root@centos ~]$ 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/nologinsync: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

 

[root@centos ~]$ 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/nologinsync: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

解釋一下:

· -t ':' :指定 : 作為分隔符

· -k 3 :按第三列排序

· -n :按數(shù)值排序

· -r :降序

4. 文件夾大小排序

du -h 可以顯示文件夾大小,比如 2K1G 這樣的格式。如果想按大小排序,就得用 -h 選項:

[root@centos ~]$ du -h

2.0G    ./test2

4.0K    ./test3

316M    ./test1

3.3G    .

 

[root@centos ~]$ du -h | sort -hr

3.3G    .

2.0G    ./test2

316M    ./test1

4.0K    ./test3

5. 進程內(nèi)存占用排序

如果想看系統(tǒng)中占用內(nèi)存最多的進程,可以結(jié)合 ps  sort

[root@centos ~]$ ps aux | sort -gr -k 4 | head -n 5

shuanghu  1740 15.7  4.6 1506764 189872 ?      Sl    5月07 142:08 compiz

root      1304  2.1  1.9 338928 80208 tty7     Ssl+  5月07  19:29 /usr/bin/X -core

shuanghu  1933  0.0  1.1 1074520 46708 ?       Sl    5月07   0:00 /usr/lib/evolution/evolution-calendar-factory

shuanghu  1833  0.0  0.8 974900 34468 ?        Sl    5月07   0:01 nautilus -n

shuanghu  2111  0.0  0.6 655712 24920 ?        Sl    5月07   0:16 gnome-terminal

這里的 -k 4 指定按第四列(內(nèi)存占用)排序,-r 讓它按降序排列,head -n 5 取前 5 行。

6. 去重

如果文件里有重復(fù)的行,sort -u 直接幫你去掉:

[root@centos ~]$ cat word.txt

one

two

two

three

three

three

four

four

four

 

[root@centos ~]$ sort -u word.txt

four

one

three

two

7. 把排序結(jié)果寫回文件

平時我們重定向 > 輸出到文件,但 sort 不能直接用 sort file.txt > file.txt,這樣文件會被清空。要用 -o

[root@centos ~]$ sort word.txt -o word.txt


藍隊云官網(wǎng)上擁有完善的技術(shù)支持庫可供參考,大家可自行查閱,更多技術(shù)問題,可以直接咨詢。同時,藍隊云整理了運維必備的工具包免費分享給大家使用,需要的朋友可以直接咨詢。

更多技術(shù)知識,藍隊云期待與你一起探索。

提交成功!非常感謝您的反饋,我們會繼續(xù)努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進一步的反饋信息:

在文檔使用中是否遇到以下問題: