Shell 编程 排序工具 sort 和 uniq
程序员文章站
2023-11-14 18:07:22
本篇主要写一些 脚本排序工具的使用。 sort 概述 是一个以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序。 用法 sort [选项] 参数 :忽略大小写 :忽略每行前面的空格 :按照月份进行排序 :按照数字进行排序 :反向排序 :等同于 ,表示相同的数据仅显示一行 :指定分隔符 ......
本篇主要写一些shell
脚本排序工具的使用。
sort
概述
sort
是一个以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序。
用法
- sort [选项] 参数
-f
:忽略大小写-b
:忽略每行前面的空格-m
:按照月份进行排序-n
:按照数字进行排序-r
:反向排序-u
:等同于uniq
,表示相同的数据仅显示一行-t
:指定分隔符,默认使用tab
键分隔-o <输出文件>
:将排序后的结果转存至指定文件-k
:指定排序区域
示例
- 将
/etc/passwd
文件中的账号进行排序
[root@localhost ~]# sort /etc/passwd adm:x:3:4:adm:/var/adm:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin dbus:x:81:81:system message bus:/:/sbin/nologin ftp:x:14:50:ftp user:/var/ftp:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin halt:x:7:0:halt:/sbin:/sbin/halt lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin nobody:x:99:99:nobody:/:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin polkitd:x:999:997:user for polkitd:/:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin root:x:0:0:root:/root:/bin/bash shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown sshd:x:74:74:privilege-separated ssh:/var/empty/sshd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync systemd-network:x:192:192:systemd network management:/:/sbin/nologin
- 将
/etc/passwd
文件中第3
列进行反向排序
[root@localhost ~]# sort -t ':' -rk 3 /etc/passwd nobody:x:99:99:nobody:/:/sbin/nologin polkitd:x:999:997:user for polkitd:/:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin dbus:x:81:81:system message bus:/:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin sshd:x:74:74:privilege-separated ssh:/var/empty/sshd:/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 systemd-network:x:192:192:systemd network management:/:/sbin/nologin ftp:x:14:50:ftp user:/var/ftp:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin root:x:0:0:root:/root:/bin/bash
- 将
/etc/passwd
文件中第3
列进行排序,并将输出内容保存至user.txt
中
[root@localhost ~]# sort -t ':' -k 3 /etc/passwd -o user.txt [root@localhost ~]# cat user.txt root:x:0:0:root:/root:/bin/bash 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 ftp:x:14:50:ftp user:/var/ftp:/sbin/nologin systemd-network:x:192:192:systemd network management:/:/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 sshd:x:74:74:privilege-separated ssh:/var/empty/sshd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin dbus:x:81:81:system message bus:/:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin polkitd:x:999:997:user for polkitd:/:/sbin/nologin nobody:x:99:99:nobody:/:/sbin/nologin
uniq
概述
uniq
工具通常与sort
命令结合使用,用于报告或者忽略文件中的重复行。
用法
- uniq [选项] 参数
-c
:进行计数-d
:仅显示重复行-u
:仅显示出现一次的行
示例
- 删除
test.txt
文件中重复行
[root@localhost ~]# cat test.txt centos5 centos5 centos5 centos6 centos5 centos5 centos7 centos8 centos8 centos8
[root@localhost ~]# uniq test.txt centos5 centos6 centos5 centos7 centos8
- 删除
test.txt
文件中重复行,并统计改行重复次数
[root@localhost ~]# uniq -c test.txt 3 centos5 1 centos6 2 centos5 1 centos7 3 centos8
- 查找
test.txt
文件中重复行
[root@localhost ~]# uniq -d test.txt centos5 centos5 centos8
- 查找
test.txt
文件中只出现一次的行
[root@localhost ~]# uniq -u test.txt centos6 centos7