目錄
- 1 uniq命令
- 1.1 uniq簡介
- 1.2說明
- 1.3案例
- 1、默認輸出
- 2、輸出重復行
- 3、比較一行中的部分字符
- 4、忽略大小寫
- 5、只顯示唯一的行
- 2.4 uniq和sort命令配合使用
- 1、文本統計
- 2、統計IP連接數并排序
- 2 wc命令
- 2.1 wc簡介
- 2.2 說明
- 2.3 案例
- 1、默認輸出
- 2、輸出字節、字符數、單詞數
- 總結
1 uniq命令
1.1 uniq簡介
uniq 命令用于檢查及刪除文本文件中重復出現的行列。它通過對輸入文本進行比較,找出相鄰的重復行,并只輸出其中的一行。如果文件沒有排序,uniq 默認只會刪除相鄰的重復行,不會刪除不相鄰的重復行。因此,通常在使用 uniq 之前,會先使用 sort 命令對文件進行排序。
1.2說明
使用:uniq [OPTION]… [INPUT [OUTPUT]]
常用參數:
- -c:在每行前面顯示該行重復出現的次數
- -d:只輸出重復的行,每個組打印一行
- -D:打印所有重復的行
- -f, --skip-fields=N:比較時會跳過前面N行
- -i:比較時忽略大小寫
- -s, --skip-chars=N:比較時會跳過前面N個字符
- -u:只顯示唯一的一行
- -z:行分隔符是NUL,而不是換行符
- -w, --check-chars=N:只比較每行前N個字符,之后的字符不再比較
- –help:查看幫助信息
- –version:顯示版本信息
1.3案例
先編寫一個測試文件
root@con02:~# cat a
abcd
abcd
2374hd67
2374fb;ll
Abcd
abcd
2737834
ijnk
098j dhyyi
7hyt fhyyi
ijnk
2374fb;llroot@con02:~#
1、默認輸出
root@con02:~# uniq a
abcd
2374hd67
2374fb;ll
Abcd
abcd
2737834
ijnk
098j dhyyi
7hyt fhyyi
ijnk
2374fb;llroot@con02:~#
統計行數
root@con02:~# uniq -c a2 abcd1 2374hd671 2374fb;ll1 Abcd1 abcd1 27378341 ijnk1 098j dhyyi1 7hyt fhyyi1 ijnk1 2374fb;ll1
root@con02:~# cat a |uniq -c2 abcd1 2374hd671 2374fb;ll1 Abcd1 abcd1 27378341 ijnk1 098j dhyyi1 7hyt fhyyi1 ijnk1 2374fb;ll1
# sort和uniq命令配合使用
root@con02:~# sort a |uniq -c11 098j dhyyi2 2374fb;ll1 2374hd671 27378341 7hyt fhyyi3 abcd1 Abcd2 ijnk
root@con02:~#
2、輸出重復行
# -d 和 -D都是輸出重復行
# -d:重復行只輸出一次
# -D:輸出所有重復行root@con02:~# uniq -d a
abcd
root@con02:~# uniq -D a
abcd
abcd
root@con02:~#
3、比較一行中的部分字符
# -s:會跳過前面N個字符,只比較后面的字符
# -w:只比較前面N個字符,之后的字符不再比較root@con02:~# uniq -s 7 -c a2 abcd1 2374hd671 2374fb;ll4 Abcd2 098j dhyyi1 ijnk1 2374fb;ll1
root@con02:~# uniq -s 6 -c a2 abcd1 2374hd671 2374fb;ll2 Abcd1 27378341 ijnk1 098j dhyyi1 7hyt fhyyi1 ijnk1 2374fb;ll1root@con02:~# uniq -w 4 -c a2 abcd2 2374hd671 Abcd1 abcd1 27378341 ijnk1 098j hyyi1 7hyt hyyi1 ijnk1 2374fb;ll1
root@con02:~# uniq -w 5 -c a2 abcd1 2374hd671 2374fb;ll1 Abcd1 abcd1 27378341 ijnk1 098j dhyyi1 7hyt fhyyi1 ijnk1 2374fb;ll1
root@con02:~#
4、忽略大小寫
root@con02:~# uniq -i -c a2 abcd1 2374hd671 2374fb;ll2 Abcd1 27378341 ijnk1 098j dhyyi1 7hyt fhyyi1 ijnk1 2374fb;ll1
root@con02:~#
5、只顯示唯一的行
root@con02:~# uniq -u -c a1 2374hd671 2374fb;ll1 Abcd1 abcd1 27378341 ijnk1 098j dhyyi1 7hyt fhyyi1 ijnk1 2374fb;ll1
root@con02:~#
2.4 uniq和sort命令配合使用
1、文本統計
有一個 a 文本,要求將所有包含abcd和2374的字符過濾出來,并統計這些字符重復出現的次數。
cat a |grep -iE "abcd|2374"|sort|uniq -c|sort -nr2 abcd2 2374fb;ll1 abcdNUL1 Abcd1 2374hd67# grep -iE "abcd|2374" : 先過濾包含abcd或2374的字符
# sort:進行過濾
# uniq -c 顯示該行重復次數
# sort -nr 按照數值從大到小排序
2、統計IP連接數并排序
netstat -antp I grep ESTABLISHED|grep -E "([0-9]{1,3}.){3}[0-9]{1,3}" | awk '{print $5}' | cut -d ":" -f1 | sort -n | uniq -c | sort -nr5 0.0.0.03 127.0.0.1...
2 wc命令
2.1 wc簡介
wc 命令可以統計文本文件中的字符數、單詞數和行數。它對于快速獲取文件的統計信息非常有用,比如檢查文件的大小、評估文本內容的長度等。wc 命令可以處理各種類型的文本文件,包括純文本文件、源代碼文件等。
2.2 說明
使用:
- wc [OPTION]… [FILE]…
- wc [OPTION]… --files0-from=F
常用參數:
- -c, --bytes:輸出字節數
- -m, --chars:輸出字符數
- -l, --lines:輸出行數
- -L, --max-line-length:顯示最長行的長度
- -w, --words:輸出單詞數
2.3 案例
測試文件
root@con02:~# cat a
abcd
abcd
2374hd67
2374fb;ll
Abcd
abcdNUL
2737834
ijnk
098j dhyyi
7hyt fhyyi
ijnk
2374fb;llroot@con02:~#
1、默認輸出
wc a
13 14 95 a
# 輸出內容分別為:行數 字數 字節數 文件
# 如果查看多個文件,會在最后輸出每一項的總和wc a /etc/passwd13 14 95 a36 52 1958 /etc/passwd49 66 2053 total
輸出行數
root@con02:~# wc -l a
13 a
root@con02:~#
2、輸出字節、字符數、單詞數
# 輸出字節數
root@con02:~# wc -c a
95 a
# 輸出字符數
root@con02:~# wc -m a
95 a
# 輸出單詞數
root@con02:~# wc -w a
14 a
root@con02:~#
輸出最長行的長度
root@con02:~# wc -L a
11 a
root@con02:~#
總結
sort命令、wc命令、uniq命令一般都會組合配合使用,再配和grep、awk和cut命令,在實際查詢中很常用,尤其是在shell腳本中,所以這幾個命令都需要掌握好。