搜索
您的当前位置:首页Linux——sort命令详细使用方法

Linux——sort命令详细使用方法

来源:乌哈旅游

一、sort命令使用方法

1.1 sort命令作用

sort 工具用于排序,它将文件的每一行作为一个单位,从首字符向后,一次按ASCII码值进行比较,最后将他们按升序排列

1.2 sort命令常用选项

  • -u: 去除重复行
  • -r: 降序排列,默认是升序
  • -o: 将排序结果输出到文件中,类似重定向符号
  • -n: 以数字排序,默认按字符排序
  • -t: 分隔符
  • -k: 第N列
  • -b: 忽略前导空格
  • -R: 随机排序,每次运行的结果均不同


二、sort命令使用实例

2.1 根据每一行中通过指定符号分隔,然后按照某一行数字排序(默认升序)

① 对/etc/passwd 文件每一行使用冒号分隔,然后按照第三列的数字大小升序排列

[root@localhost ~]# sort -n -t: -k3 /etc/passwd
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
[root@localhost ~]# 

② 对/etc/passwd 文件每一行使用冒号分隔,然后按照第三列的数字大小降序排列

[root@localhost ~]# sort -rn -t: -k3 /etc/passwd 
ntp:x:38:38::/etc/ntp:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
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
[root@localhost ~]# 

2.2 通过-o参数将结果写入文件

对/etc/passwd 文件每一行使用冒号分隔,然后按照第三列的数字大小升序排列,并将结果写入demo.txt文件

[root@localhost ~]# sort -n -t: -k3 /etc/passwd -o demo.txt 
[root@localhost ~]# cat demo.txt  
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
[root@localhost ~]# 

2.3 对文件中每行去重然后排序

这里编写一个测试文件demo.txt,内容如下:

[root@localhost ~]# cat demo.txt
aaa
bbb
ccc
aaa
bbb
ccc

再通过-u参数可以做到去重

[root@localhost ~]# sort -u demo.txt
aaa
bbb
ccc
[root@localhost ~]# 

2.4 每次随机排序

通过-R参数可以做到每次排序都不同,即随机排序

[root@localhost ~]# sort -uR demo.txt
ccc
aaa
bbb
[root@localhost ~]# sort -uR demo.txt
aaa
bbb
ccc
[root@localhost ~]# sort -uR demo.txt
aaa
bbb
ccc
[root@localhost ~]# 

因篇幅问题不能全部显示,请点此查看更多更全内容

Top