Shell 腳本中常用命令——Sort、Uniq、Cut、Seq
- 一、Sort
- 二、Uniq
- 1.Sort 和 Uniq 結合使用
- 三、Cut
- 四、Seq
- 1.輸出連續整數
- 2.指定輸出格式
- 3.指定分隔符
- 4.指定輸出數字同寬
- 5.組合使用
一、Sort
用來給檔案內容進行排序,
- 語法:
sort [選項] 檔案名1 檔案名2 ...
| 選項 | 作用 |
|---|---|
-r | 反向排序(默認是升序,-r 就是降序) |
-n | 按照數字進行排序(默認是根據字符進行排序) |
-u | 去除重復的行(重復的行可以是不連續的) |
- 注意:
sort的排序方式是根據每行第一個位元組來進行排序的,
1)以升序的方式輸出
[root@localhost ~]# sort 1.txt

2)以倒序的方式輸出
[root@localhost ~]# sort -r 1.txt

3)按照數字的方式輸出
[root@localhost ~]# sort -n 1.txt

4)去除重復的行再輸出
[root@localhost ~]# sort -u 1.txt

二、Uniq
主要就是用來去除檔案中連續的重復行,
- 語法:
uniq [選項] 檔案名1 檔案名2 ...
| 選項 | 作用 |
|---|---|
-c | 在行首用數字表示該行出現了多少次 |
-u | 僅僅顯示那些沒有出現重復過的行 |
1)統計每行出現的次數
[root@localhost ~]# uniq -c 1.txt

2)統計出沒有出現出重復行的數量
[root@localhost ~]# uniq -u 1.txt

1.Sort 和 Uniq 結合使用
1)統計出 Listen (監聽) 和 Estableshed (已連接) 出現的次數
[root@localhost ~]# netstat -ant | awk /^tcp/'{print $NF}' | sort | uniq -c

2)統計相同的網站出現的次數
[root@localhost ~]# vim test.txt
http://www.163.com
http://www.163.com
http://www.163.com
http://www.baidu.com
http://www.baidu.com
http://www.baidu.com
http://www.baidu.com
http://www.cnblogs.com
http://www.qq.com
http://www.163.com
http://www.baidu.com
http://www.baidu.com
http://www.qq.com
http://www.163.com
http://www.baidu.com
[root@localhost ~]# awk -F "[/]+" '{print $2}' test.txt | sort | uniq -c

也可以以下面這種方式來統計
[root@localhost ~]# awk -F "[/]+" '{A[$2]++}END{for (B in A){print B,A[B]}}' test.txt

三、Cut
cut 是一個選取命令,就是將一段資料經過分析,取出我們想要的,一般來說,選取資訊通常是針對 行 來進行分析的,并不是整篇資訊分析的,
- 語法:
cut [選項] 檔案名1 檔案名2 ...
| 選項 | 作用 |
|---|---|
-d | 指定分隔符(默認為制表符) |
-f | 指定截取的列 |
輸出第 7 欄位

四、Seq
- 用于生成一個數到另一個數之間的所有整數,
語法:
seq[選項]...尾數seq[選項]首數...尾數seq[選項]首數增量尾數
| 選項 | 作用 |
|---|---|
-f | 指定輸出格式 |
-s | 指定分隔符,默認分隔符是 /n (回車) |
-w | 指定輸出數字同寬,與 -f 部分作用相似,不可與 -f 選項同時使用 |
1.輸出連續整數
1)輸出從 1 到 5 的整數
[root@localhost ~]# seq 5

2)輸出從 1 到 10,間隔為 2 的所有整數
[root@localhost ~]# seq 1 2 10

3)輸出從 0 到 10,間隔為 2 的所有整數
[root@localhost ~]# seq 0 2 10

2.指定輸出格式
1)數字位數為三位,不足補空格
[root@localhost ~]# seq -f '%3g' 1 5

2)數字位數為三位,不足補 0
[root@localhost ~]# seq -f '%03g' 1 5

3)在 test 后面將數字位數為二位,不足補 0
[root@localhost ~]# seq -f 'test%02g' 1 5

3.指定分隔符
1)空格作為分隔符
[root@localhost ~]# seq -s ' ' 1 5

2)中劃線作為分隔符
[root@localhost ~]# seq -s '-' 1 5

4.指定輸出數字同寬
1)等寬輸出 8 到 12 之間的連續整數
[root@localhost ~]# seq -w 8 12

2)等寬輸出 99 到 101 之間的連續整數
[root@localhost ~]# seq -w 99 101

5.組合使用
等寬輸出 99 到 101 之間的連續整數,并用空格分隔
[root@localhost ~]# seq -w -s ' ' 99 101

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/280586.html
標籤:其他
