行排序命令sort
程序员文章站
2022-07-10 08:29:42
...
1. sort命令行选项:
选项 | 描述 |
---|---|
-t | |
-f | 基于字符排序时忽略大小写 |
-k | 定义排序的域字段,或者是基于域字段的部分数据进行排序 |
-m | 将已排序的输入文件,合并为一个排序后的输出数据流 |
-n | 以整数类型比较字段 |
-o outfile | 将输出写到指定的文件 |
-r | 倒置排序的顺序为由大到小,正常排序为由小到大 |
-u | 只有唯一的记录,丢弃所有具有相同键值的记录 |
-b | 忽略前面的空格 |
2. sort使用实例:
提示:在下面的输出结果中红色标注的为第一排序字段,后面的依次为紫、绿。
[[email protected] ~]# sed -n '1,5p' /etc/passwd > users
[[email protected] ~]# cat users
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
定义了冒号为域字段之间的分隔符,-k 2指定基于第二个字段正向排序(字段顺序从1开始)。
[[email protected] ~]# sort -t':' -k 1 users
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
还是以冒号为分隔符,这次是基于第三个域字段进行倒置排序。
[[email protected] ~]# sort -t':' -k 3r users
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
先以第六个域的第2个字符到第4个字符进行正向排序,在基于第一个域进行反向排序。
[[email protected] ~]# sort -t':' -k 6.2,6.4 -k 1r users
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
先以第六个域的第2个字符到第4个字符进行正向排序,
在基于第一个域进行正向排序。和上一个例子比,第4和第5行交换了位置。
[[email protected] ~]# sort -t':' -k 6.2,6.4 -k 1 users
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
基于第一个域的第2个字符排序
[[email protected] ~]# sort -t':' -k 1.2,1.2 users
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
基于第六个域的第2个字符到第4个字符进行正向排序,-u命令要求在排序时删除键值重复的行。
[[email protected] ~]# sort -t':' -k 6.2,6.4 -u users
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
计算该文件中文本的行数。
[[email protected] ~]# cat /etc/passwd | wc -l
39
[[email protected] ~]# sed -n '35,$p' /etc/passwd > users2 #取最后5行并输出到users2中。
[[email protected] ~]# cat users2
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
pulse:x:496:494:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
stephen:x:500:500:stephen:/home/stephen:/bin/bash
基于第3个域字段以文本的形式排序
[[email protected] ~]# sort -t':' -k 3 users2
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
pulse:x:496:494:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
stephen:x:500:500:stephen:/home/stephen:/bin/bash
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
基于第3个域字段以数字的形式排序
[[email protected] ~]# sort -t':' -k 3n users2
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
pulse:x:496:494:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
stephen:x:500:500:stephen:/home/stephen:/bin/bash
基于当前系统执行进程的owner名排序,并将排序的结果写入到result文件中
[[email protected] ~]# ps -ef | sort -k 1 -o result
上一篇: 页游站思考:做网站要多放一点心思
下一篇: 购买链接学问多 宁要质量也不屈服垃圾数量
推荐阅读
-
sort按照数值大小排序
-
php数据结构与算法(PHP描述) 快速排序 quick sort
-
成绩排序(sort与qsort的使用)
-
Extjs3.x 为GridPanel 排序 行拖拽 行数据上移 行数据下移
-
ajax返回的json内容进行排序使用sort()方法实现
-
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析_PHP
-
php数组排序usort、uksort与sort函数用法,usortuksort
-
Java使用Arrays.sort()方法实现给对象排序
-
PHP函数sort()如何实现数组排序
-
MySQL中select语句使用order按行排序_MySQL