博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux常用命令:sort 命令
阅读量:5231 次
发布时间:2019-06-14

本文共 3332 字,大约阅读时间需要 11 分钟。

  sort 命令是Linux系统下一种对文件排序的工具,sort 命令功能十分强大,是 Shell 脚本编程是常用的文件排序工具。

1.命令格式:

sort [选项]... [文件]...

或:sort [选项]... --files0-from=F

2.命令功能:

  串联排序所有指定文件并将结果写到标准输出。

3.常用参数:

-b      忽略每行前面开始出的空格字符。

-c      检查文件是否已经按照顺序排序。
-d      排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f      忽略字母大小写
-g      按通用数值排序,支持科学计数法
-h      使用易读性数字(例如: 2K 1G)
-i      排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m      将几个排序好的文件进行合并。
-M      将前面3个字母依照月份的缩写进行排序。
-k      排序从POS1开始,若指定POS2,则POS2结束,否则以pos1排序
-n      按字符串数值排序,与-g区别为不转为浮点数
-o<输出文件>    将排序后的结果输出写入指定文件
-r      降序排序,默认为升序
-t<分隔字符>    指定列的分割符
-u      去除重复的行
  --help      显示帮助。
  --version    显示版本信息

4.常用示例:

示例1:默认排序,默认情况下,sort命令,以字母序进行文本排序。

1 root@localhost:tmp$cat word.txt 2 one 3 two  4 three 5 four 6  7 root@localhost:tmp$sort word.txt 8 four 9 one10 three11 two

 

 

示例2:数字排序,如果想对数字进行排序,可以使用-n参数。

1 root@localhost:tmp$ cat num.txt 2 1003 204 35 root@localhost:tmp$ sort num.txt -n6 37 208 100

 

 

示例3:指定列排序

  sort排序的时候,可以按字段分割的数据进行排序。-t参数表示行的分割字符,-k表示第几列。当然,可以进行降序排序,-r参数可以实现。

  下面是对passwd文件,以冒号(:)进行分割,然后对第三列以数字方式进行降序排序。

1 root@localhost:etc$ cat passwd  2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin 3 bin:x:2:2:bin:/bin:/usr/sbin/nologin 4 sys:x:3:3:sys:/dev:/usr/sbin/nologin 5 sync:x:4:65534:sync:/bin:/bin/sync 6 games:x:5:60:games:/usr/games:/usr/sbin/nologin 7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin 8 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin 9 mail:x:8:8:mail:/var/mail:/usr/sbin/nologin10 root@localhost:etc$ sort -t ':' -k 3 -nr passwd 11 mail:x:8:8:mail:/var/mail:/usr/sbin/nologin12 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin13 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin14 games:x:5:60:games:/usr/games:/usr/sbin/nologin15 sync:x:4:65534:sync:/bin:/bin/sync16 sys:x:3:3:sys:/dev:/usr/sbin/nologin17 bin:x:2:2:bin:/bin:/usr/sbin/nologin18 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参数。具体如下:

1 root@localhost:tmp$ du -h 2 2.0G    ./test2 3 4.0K    ./test3 4 316M    ./test 5 2.3G    . 6 root@localhost:tmp$ du -h |sort -hr 7 2.3G    . 8 2.0G    ./test2 9 316M    ./test10 4.0K    ./test3

 

 

示例5:系统进程内存占用排序

  查看系统进程中,内存占用最多的前5个进程信息

1 root@localhost:tmp$ ps aux|sort -gr -k 4|head -n 52 linux  1740 15.7  4.6 1506764 189872 ?      Sl    5月07 142:08 compiz3 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 -novtswitch4 linux  1933  0.0  1.1 1074520 46708 ?       Sl    5月07   0:00 /usr/lib/evolution/evolution-calendar-factory5 linux  1833  0.0  0.8 974900 34468 ?        Sl    5月07   0:01 nautilus -n6 linux  2111  0.0  0.6 655712 24920 ?        Sl    5月07   0:16 gnome-terminal

 

 

示例6:对文件内容进行去重

  如果文件内容有很多重复的,需要进行去重。sort也是支持的,可以通过-u参数使用

1 root@localhost:tmp$cat word.txt 2 one 3 two 4 two 5 three 6 three 7 three 8 four 9 four10 four11 12 root@localhost:tmp$sort -u word.txt13 four14 one15 three16 two

 

 

示例7:将sort输出内容写入文件

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

1 root@localhost:tmp$cat word.txt 2 one 3 two  4 three 5 four 6 root@localhost:tmp$sort word.txt > word.txt 7 root@localhost:tmp$cat word.txt #输出为空 8  9 root@localhost:tmp$sort word.txt -o word.txt10 root@localhost:tmp$sort -u word.txt11 four12 one13 three14 two

 

转载于:https://www.cnblogs.com/shujuxiong/p/8991080.html

你可能感兴趣的文章
[bzoj1004] [HNOI2008] Cards
查看>>
TextWatcher原因activity内存泄漏问题
查看>>
Merge into的使用具体解释-你Merge了没有
查看>>
Linux安装程序Anaconda分析
查看>>
如何在chrome上打开SSL3.0
查看>>
应该是实例化对象的没有对属性赋值时,自动赋值为null,但不是空指针对象引用...
查看>>
从网易与淘宝的font-size思考前端设计稿与工作流
查看>>
原生HttpClient详细使用示例
查看>>
几道面试题
查看>>
搜索引擎-SHODAN
查看>>
Factory Design Pattern
查看>>
python中贪婪与非贪婪
查看>>
guava API整理
查看>>
无锁编程笔记
查看>>
jquery mobile
查看>>
在Windows环境下使用短信猫收发短信的简单配置:
查看>>
如何在vue单页应用中使用百度地图
查看>>
Ubuntu 下安装Go语言
查看>>
Application对象
查看>>
命令查看当前电脑安装所有版本.NET Core SKD
查看>>