8.11-sort_wc_uniq命令

sort 命令
sort 命令用做排序

選項 含義
-t 後面跟分隔符,作用和 cut 的 -d 選項一樣(幾乎不用,瞭解)
-n 表示使用純數字排序
-r 表示反向排序
-u 表示去重複
-kn1,n2 表示由 n1 區間排序到 n2 區間,可以只寫 -kn1,即對 n1字段排序

不加任何選項
如果 sort 不加任何選項,則從首字符向右依次按 ASCII 碼值進行比較,最後將它們按升序輸出

[root@evan-01 ~]# 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
evan1:x:1000:1000::/home/evan1:/bin/bash
evan2:x:1001:1001::/home/evan2:/bin/bash
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
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/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
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
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
user1:x:1002:1002::/home/user1:/bin/bash
user2:x:1004:1005::/home/user2:/bin/bash
user3:x:1006:1005::/home/user3:/sbin/nologin
user4:x:1007:1007::/home/user4:/bin/bash
[root@evan-01 ~]#

ASCII 碼排序

[root@evan-01 ~]# head /etc/passwd >> 1.txt
[root@evan-01 ~]# vi 1.txt

編輯
在這裏插入圖片描述

[root@evan-01 ~]# sort 1.txt
<
>
]
{
1.txt
222222111
2222222222abdadmbabd
223333333
22aaaa
2.txt
8746674cjascn
*abscbblvlh
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
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
operator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
[root@evan-01 ~]#

-n 使用純數字排序
字母和特殊符號都被認爲是 0,所以都排在了前面

[root@evan-01 ~]# sort -n 1.txt
<
>
]
{
*abscbblvlh
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
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
operator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
1.txt
2.txt
22aaaa
8746674cjascn
222222111
223333333
2222222222abdadmbabd
[root@evan-01 ~]# 

-r 反向排序

[root@evan-01 ~]# sort -nr 1.txt
2222222222abdadmbabd
223333333
222222111
8746674cjascn
22aaaa
2.txt
1.txt
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
*abscbblvlh
{
]
>
<
[root@evan-01 ~]#

wc 命令
wc 命令用於統計文檔的行數、字符數或詞數

選項 含義
-l 統計行數
-m 統計字符數
-w 統計詞數

wc 不跟任何選項,直接把行數、詞數、字符數依次輸出

[root@evan-01 ~]# wc 1.txt 
 22  22 479 1.txt
[root@evan-01 ~]#

-l 統計行數

[root@evan-01 ~]# wc -l 1.txt
22 1.txt
[root@evan-01 ~]#

-m 統計字符數

[root@evan-01 ~]# wc -m 1.txt
479 1.txt
[root@evan-01 ~]#

-A 查看隱藏字符
編輯一個文件,寫入以下內容

[root@evan-01 ~]# vi 2.txt

在這裏插入圖片描述

[root@evan-01 ~]# wc -m 2.txt
8 2.txt
[root@evan-01 ~]#

明明只輸入6個字符,爲什麼看到8個呢

[root@evan-01 ~]# cat -A 2.txt
123$
456$
[root@evan-01 ~]#

查看下隱藏字符,發現每行後面都有個$換行符,加上這2個符號就是8個了


-w 統計詞數(以空格爲分隔符計算)

[root@evan-01 ~]# wc -w 1.txt
22 1.txt
[root@evan-01 ~]# 

uniq 命令
uniq 命令用來刪除重複的行,該命令只有 -c 選項比較常用,它表示統計重複的行數,並把行數寫在前面

[root@evan-01 ~]# vi 2.txt

在這裏插入圖片描述

[root@evan-01 ~]# cat 2.txt
123
456
123
456
abc
1
2
1
abc
[root@evan-01 ~]# uniq 2.txt
123
456
123
456
abc
1
2
1
abc
[root@evan-01 ~]# 

使用 uniq 前,必須要先給文件排序,否則不管用


先排序,後去重

[root@evan-01 ~]# cat 2.txt
123
456
123
456
abc
1
2
1
abc
[root@evan-01 ~]# sort 2.txt
1
1
123
123
2
456
456
abc
abc
[root@evan-01 ~]#

統計重複行數

[root@evan-01 ~]# cat 2.txt
123
456
123
456
abc
1
2
1
abc
[root@evan-01 ~]# sort 2.txt | uniq -c
      2 1
      2 123
      1 2
      2 456
      2 abc
[root@evan-01 ~]# 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章