本篇主要寫一些shell
腳本排序工具的使用。shell
sort
是一個以行爲單位對文件內容進行排序的工具,也能夠根據不一樣的數據類型來排序。centos
-f
:忽略大小寫
-b
:忽略每行前面的空格
-M
:按照月份進行排序
-n
:按照數字進行排序
-r
:反向排序
-u
:等同於uniq
,表示相同的數據僅顯示一行
-t
:指定分隔符,默認使用Tab
鍵分隔
-o <輸出文件>
:將排序後的結果轉存至指定文件
-k
:指定排序區域bash
/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
工具一般與sort
命令結合使用,用於報告或者忽略文件中的重複行。ssh
-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