sort命令详解

 

 基础命令学习目录首页html

 

原文连接:https://blog.csdn.net/shuanghujushi/article/details/51344215linux

在linux的只用过程当中,老是避免不了排序问题。好比,topN问题。linux提供了sort排序命令,支持经常使用的排序功能。shell

经常使用参数

sort命令支持不少参数,经常使用参数以下:ruby

短参数 长参数 说明
-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命令,以字母序进行文本排序。以下:bash

shuanghu@shuanghu:tmp$cat word.txt one two three four shuanghu@shuanghu:tmp$sort word.txt four one three two

2.数字排序

若是想对数字进行排序,可使用-n参数tcp

shuanghu@shuanghu:tmp$ cat num.txt 100 20 3 shuanghu@shuanghu:tmp$ sort num.txt -n 3 20 100

3.指定列排序

sort排序的时候,能够按字段分割的数据进行排序。-t参数表示行的分割字符,-k表示第几列。固然,能够进行降序排序,-r参数能够实现。
下面是对passwd文件,以冒号(:)进行分割,而后对第三列以数字方式进行降序排序。post

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个进程信息ui

shuanghu@shuanghu:tmp$ 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 :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch 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

 

6.对文件内容进行去重

若是文件内容有不少重复的,须要进行去重。sort也是支持的,能够经过-u参数使用url

shuanghu@shuanghu:tmp$cat word.txt one two two three three three four four four shuanghu@shuanghu:tmp$sort -u word.txt four one three two

7.将sort输出内容写入文件

在shell中,通常将控制台内容写入文件,可使用重定向,但若是想把sort的排序内容写回文件,则不能使用重定向。则须要-o参数。具体以下:

shuanghu@shuanghu:tmp$cat word.txt one two 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 one three two
相关文章
相关标签/搜索