shell shell指令碼實戰 awk使用案例

2021-10-23 12:31:44 字數 4166 閱讀 6445

4. 檢查伺服器是否受到ddos攻擊的指令碼

總結1. 使用nr行號來定位提取ip

[root@ecs-c13b awk]

# ifconfig eth0 |awk -f " " 'nr==2'

192.168.0.192

2. 去除首行
[root@ecs-c13b awk]

# route -n

kernel ip routing table

destination gateway genmask flags metric ref use iface

0.0.0.0 192.168.0.1 0.0.0.0 ug 100 0 0 eth0

169.254.169.254 192.168.0.1 255.255.255.255 ugh 100 0 0 eth0

192.168.0.0 0.0.0.0 255.255.255.0 u 100 0 0 eth0

方法一:

[root@ecs-c13b awk]

# route -n |grep -v ^kernel

destination gateway genmask flags metric ref use iface

0.0.0.0 192.168.0.1 0.0.0.0 ug 100 0 0 eth0

169.254.169.254 192.168.0.1 255.255.255.255 ugh 100 0 0 eth0

192.168.0.0 0.0.0.0 255.255.255.0 u 100 0 0 eth0

[root@ecs-c13b awk]

#

方法二:

[root@ecs-c13b awk]

# route -n |sed 1d

destination gateway genmask flags metric ref use iface

0.0.0.0 192.168.0.1 0.0.0.0 ug 100 0 0 eth0

169.254.169.254 192.168.0.1 255.255.255.255 ugh 100 0 0 eth0

192.168.0.0 0.0.0.0 255.255.255.0 u 100 0 0 eth0

[root@ecs-c13b awk]

#

方法三:

[root@ecs-c13b awk]

# route -n |awk 'nr!=1 '

destination gateway genmask flags metric ref use iface

0.0.0.0 192.168.0.1 0.0.0.0 ug 100 0 0 eth0

169.254.169.254 192.168.0.1 255.255.255.255 ugh 100 0 0 eth0

192.168.0.0 0.0.0.0 255.255.255.0 u 100 0 0 eth0

[root@ecs-c13b awk]

#

3. 其他使用

建立練習檔案:

[root@ mysql-master ~]

# vim data.txt

beth 4.00 0

dan 3.75 0

kathy 4.00 10

mark 5.00 20

mary 5.50 22

susie 4.25 18

1. 列印特定字段
[root@ mysql-master ~]

# awk '' data.txt

beth 0

dan 0

kathy 10

mark 20

mary 22

susie 18

在 print 語句中被逗號分割的表示式, 在預設情況下他們將會用乙個空格分割 來輸出. 每一行 print 生成的內容都會以乙個換行符作為結束. 但這些預設行 為都可以自定義。

2. nf, 字段數量

依次列印出每一行的字段數量, 第乙個欄位的值, 最後乙個欄位的值:

[root@ mysql-master ~]

# awk '' data.txt

3 beth 0

3 dan 0

3 kathy 10

3 mark 20

3 mary 22

3 susie 18

3. 計算和列印
[root@ mysql-master ~]

# awk '' data.txt

beth 0

dan 0

kathy 40

mark 100

mary 121

susie 76.5

4. 列印行號

awk提供了另乙個內建變數, 叫做 nr, 它會儲存當前已經讀取了多少行的計數. 我們可以使用 nr 和 $0 給 emp.data 的每一行加上行號:

[root@ mysql-master ~]

# awk '' data.txt

1 beth 4.00 0

2 dan 3.75 0

3 kathy 4.00 10

4 mark 5.00 20

5 mary 5.50 22

6 susie 4.25 18

5. 在輸出中新增內容

當然也可以在字段中間或者計算的值中間列印輸出想要的內容:

[root@ mysql-master ~]

# awk '' data.txt

total pay for beth is 0

total pay for dan is 0

total pay for kathy is 40

total pay for mark is 100

total pay for mary is 121

total pay for susie is 76.5

6. 自定義格式輸出

第1列使用15個字元寬度左對齊輸出,最後一列使用15個字元寬度右對齊輸出

[root@ecs-c13b awk]

# awk -f: '' /etc/passwd

username:root /bin/bash

username:bin /sbin/nologin

username:daemon /sbin/nologin

4. 檢查伺服器是否受到ddos攻擊的指令碼
[root@ecs-c13b awk]

# netstat -ntu |awk ''|cut -d: -f1 |uniq -c |sort -n

1 100.125.1.41

1 114.181.58.197

1 120.245.114.128

1 45.79.47.198

1 address

1 servers)

總結

awk的內容還遠遠未完,還需要大量的練習。sed,grep,awk,用之前都需要花一些精力把語法搞明白。

後面我會做個思維導圖來梳理下這三個內容,幫助大家記憶。

shell shell指令碼實戰 for迴圈

總結前言 迴圈語句常用於重複執行一條命令或一組命令等,直到達到結束條件後,則終止執行。在shell中常見的迴圈命令有while until for和select等 今天我們來 第乙個迴圈語句,for迴圈。for迴圈介紹 for迴圈語句與while迴圈語句類似,但for迴圈語句主要用於有限次的迴圈場景...

Shell Shell指令碼執行

shell指令碼執行的方法有一下幾種 一.shellname.sh 二source shellname.sh 三chmod x shellname.sh shellname.sh 四sh shellname.sh區別和相同點 他們的相同點是都可以成功執行乙個shell指令碼。而不同點有 第一種方法 ...

Shell shell指令碼中的空格

1.定義變數時,號的兩邊不可以留空格.eg gender femal right gender femal wrong gender femal wrong gender test right 左邊是命令的話 號的右邊有空格是正確的 左邊不能有空格 gender test wrong 等號 左邊必須...