linux命令学习--sort排序命令
在linux的只⽤过程中,总是避免不了排序问题。⽐如,topN问题。linux提供了sort排序命令,⽀持常⽤的排序功能。常⽤参数
sort命令⽀持很多参数,常⽤参数如下:
短参数长参数说明
-n– number-sort按字符串数值排序,与-g区别为不转为浮点数
-g–general-number-sort按通⽤数值排序,⽀持科学计数法
-f–ignore-case忽略⼤⼩写,默认⼤⼩写字母不同
-k–key=POS1[,POS2]排序从POS1开始,若指定POS2,则POS2结束,否则以pos1排序
-t–field-separator=SEP指定列的分割符
-r–reverse降序排序,默认为升序
-h–human-numeric-sort使⽤易读性数字(例如: 2K 1G)
-u–unique去除重复的⾏
-o–output=FILE将输出写⼊⽂件
常⽤⽤法举例
1.默认排序
默认情况下,sort命令,以字母序进⾏⽂本排序。如下:
shuanghu@shuanghu:tmp$
one
twolinux命令查看文件夹大小
three
four
shuanghu@shuanghu:tmp$
four
one
three
two
2.数字排序
如果想对数字进⾏排序,可以使⽤-n参数
shuanghu@shuanghu:tmp$
100
20
3
shuanghu@shuanghu:tmp$ -n
3
20
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 -n5
shuanghu  174015.74.61506764189872 ?      Sl    5⽉07142:08 compiz
root      13042.11.933892880208 tty7    Ssl+  5⽉0719:29 /usr/bin/X -core :0-seat seat0 -auth /var/run/
lightdm/root/:0-nolisten tcp vt7 -novtswitch shuanghu  19330.01.1107452046708 ?      Sl    5⽉070:00 /usr/lib/evolution/evolution-calendar-factory
shuanghu  18330.00.897490034468 ?        Sl    5⽉070:01 nautilus -n
shuanghu  21110.00.665571224920 ?        Sl    5⽉070:16 gnome-terminal
6.对⽂件内容进⾏去重
如果⽂件内容有很多重复的,需要进⾏去重。sort也是⽀持的,可以通过-u参数使⽤
shuanghu@shuanghu:tmp$
one
two
two
three
three
three
four
four
four
shuanghu@shuanghu:tmp$sort -
four
one
three
two
7.将sort输出内容写⼊⽂件
在shell中,⼀般将控制台内容写⼊⽂件,可以使⽤重定向,但如果想把sort的排序内容写回⽂件,则不能使⽤重定向。则需要-o参数。具体如下:
shuanghu@shuanghu:tmp$
one
two
three
four
shuanghu@shuanghu:tmp$ >
shuanghu@shuanghu:tmp$ #输出为空
shuanghu@shuanghu:tmp$ -
shuanghu@shuanghu:tmp$sort -
four
one
three
two

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。