资讯专栏INFORMATION COLUMN

Linux命令学习之:sort命令

booster / 2253人阅读

摘要:命令学习之命令命令对参数指定的文件中的行排序,并将结果写到标准输出。多个排序规则,只需指定多个组合即可排序并去重查看有多少个对的第七个域进行排序,然后去重通过进行去重操作

Linux命令学习之:sort命令


sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出。如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序。

格式:

sort [-fbMnrtuk] [file or stdin]

选项与参数:

-f  :忽略大小写的差异,例如 A 与 a 视为编码相同;
-b  :忽略最前面的空格符部分;
-M  :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n  :使用『纯数字』进行排序(默认是以文字型态来排序的);
-r  :反向排序;
-u  :就是 uniq ,相同的数据中,仅出现一行代表;
-t  :分隔符,默认是用 [tab] 键来分隔;
-k  :以那个区间 (field) 来进行排序的意思

案例:

对/etc/passwd的账号排序
[root@www ~]# cat /etc/passwd | sort
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

sort默认是以第一个数据来排序,而且是已字符串形式来排序

指定排序所使用数据
[root@www ~]# cat /etc/passwd | sort -t ":" -k 3
root:x:0:0:root:/root:/bin/bash
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin

通过-t来指定分隔符,再通过-k指定排序的字段,是第三个分割字段

使用数字排序
cat /etc/passwd | sort -t ":" -k 3n
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh

sort默认是按照字符串升序排序,如果我想使用数字的方式排序只需要通过-n方式指定即可

默认是升序排序,如果要倒序排序

cat /etc/passwd | sort -t ":" -k 3nr
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
ntp:x:106:113::/home/ntp:/bin/false
messagebus:x:105:109::/var/run/dbus:/bin/false
sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin
多个排序字段与多种规则

如果要对/etc/passwd,先以第六个域的第2个字符到第4个字符进行正向排序,再基于第一个域进行反向排序。

cat /etc/passwd |  sort -t":" -k 6.2,6.4 -k 1r      
sync:x:4:65534:sync:/bin:/bin/sync
proxy:x:13:13:proxy:/bin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh

多个排序规则,只需指定多个-k …组合即可

排序并去重

查看/etc/passwd有多少个shell:对/etc/passwd的第七个域进行排序,然后去重:

cat /etc/passwd |  sort -t":" -k 7 -u
root:x:0:0:root:/root:/bin/bash
syslog:x:101:102::/home/syslog:/bin/false
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin

通过-u进行去重操作 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/9742.html

相关文章

  • Linux命令习之:uniq命令

    摘要:命令学习之命令命令可以去除排序过的文件中的重复行,因此经常和合用。也就是说,为了使起作用,所有的重复行必须是相邻的。 Linux命令学习之:uniq命令  uniq命令可以去除排序过的文件中的重复行,因此uniq经常和sort合用。也就是说,为了使uniq起作用,所有的重复行必须是相邻的。 uniq语法 [root@www ~]# uniq [-icu] 选项与参数: -i :忽...

    coordinate35 评论0 收藏0
  • Linux命令习之:nl命令

    摘要:命令学习之命令命令在中用来计算文件中的行号。在输出中,命令根据您在命令行中指定的标志来计算左边的行。除非使用标志,命令在每个逻辑页开始的地方重新设置行号。 Linux命令学习之:nl命令 nl命令在linux中用来计算文件中的行号。nl可以将输出的文件内容自动加上行号,默认的结果类似cat -n,nl可以将行号做比较多的显示设计,包括位数与是否自动补齐0等设计 1. 命令格式 nl ...

    JaysonWang 评论0 收藏0
  • Linux命令习之:echo命令

    摘要:命令学习之命令简介的命令在编程中极为常用在终端下打印变量的时候也是常常用到的因此有必要了解下的用法命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。 Linux命令学习之:echo命令 简介 linux的echo命令, 在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的, 因此有必要了解下echo的用法 echo命令的功能是在显示器上显示一段文字,...

    褰辩话 评论0 收藏0
  • Linux命令习之:awk命令

    摘要:调用有三种方式调用命令行方式其中,是真正命令,域分隔符是可选的。在中,文件的每一行中,由域分隔符分开的每一项称为一个域。默认域分隔符是空白键或键所以表示登录用户,表示登录用户以此类推。 Linux命令学习之:awk命令 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为...

    Amos 评论0 收藏0
  • Linux命令习之:cut命令

    摘要:命令学习之命令命令可以从一个文本文件或者文本流中提取文本列。语法分隔字符用于有特定分隔字符字符区间用于排列整齐的信息选项与参数后面接分隔字符。将变量取出,我要找出第一到第三,还有第五个路径。实用例子只显示的用户和转自 Linux命令学习之:cut命令 cut命令可以从一个文本文件或者文本流中提取文本列。 cut语法 [root@www ~]# cut -d分隔字符 -f fields...

    GeekGhc 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<