# chen @ localhost in ~/shell [18:36:13]
$ awk -v num=3 -f: ''
passwd33
3333
# 注意:awk中呼叫定義的變數不需要加$
# chen @ localhost in ~/shell [18:37:04]
$ awk -v num=3 -f: ''
passwd01
2356
1.3.1. 概述
1.3.2. 學習示例2.1. 學習示例
2.1.1. 列印以 root 開頭或者以 adm 開頭的行
# chen @ localhost in ~/shell [19:25:20] c:130
$ awk
'/^adm/ || /^root/ '
passwd
root:x:0:0:root:/root:/bin/zshi
adm:x:3:4:adm:/var/adm:/sbin/nologin
# 方法2
# chen @ localhost in ~/shell [19:25:23]
$ awk
'/^adm/;/^root/ '
passwd
2.1.2. 列印1到7行 以 bash 結尾的內容# chen @ localhost in ~/shell [19:30:14]
$ awk
'nr>=2 && nr<=7 && $0 ~ /login$/'
passwd
in:x:1:1:bin:/bin:/sbin/nologin
ddaemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
# 方法2
# chen @ localhost in ~/shell [19:30:19]
$ awk
'nr>=2 && nr<=7 && /login$/'
passwd
in:x:1:1:bin:/bin:/sbin/nologin
ddaemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
2.1.3. 獲取電腦的 ip# chen @ localhost in ~/shell [19:34:07]
$ ifconfig eth0 |
grep broadcast
inet 192.168.10.36 netmask 255.255.255.0 broadcast 192.168.10.255
# chen @ localhost in ~/shell [19:38:03]
$ ifconfig eth0 |
grep broadcast |
awk -f'[ ]+'
''
192.168.10.36
# 方法2
# chen @ localhost in ~/shell [19:40:35]
$ ifconfig eth0 |
awk -f'[ ]+'
'/broadcast/'
192.168.10.36
# 方法3
# chen @ localhost in ~/shell [19:41:36]
$ ifconfig eth0 |
awk -f'[ ]+'
'/broadcast/'
192.168.10.36
255.255.255.0
192.168.10.255
3.1. if結構
3.1.1. 語法結構
awk
[選項]
'正則','位址定位 ' 檔名
3.1.2. 學習案例# chen @ localhost in ~/shell [19:47:31]
$ awk -f: '}'
passwd
in 1
ddaemon 2
adm 3
sync 5
3.2. if…else
3.2.1. 語法結構
awk
[選項]
'正則','位址定位 ' 檔名
else
}
3.2.2. 學習案例
判斷使用者是否為普通使用者
# chen @ localhost in ~/shell [21:42:30]
$ awk -f: ' else }'
passwd
不是普通使用者
不是普通使用者
不是普通使用者
不是普通使用者
不是普通使用者
不是普通使用者
3.3. if else if {} else if{}
3.3.1. 語法結構
awk
[選項]
'正則','位址定位 ' 檔名
else
if(表示式2)
else
if(表示式2)
... else
}
3.3.2. 學習案例
計算系統中管理員、系統使用者、普通使用者個數
# chen @ localhost in ~/shell [21:54:20]
$ awk -f: ' else if($3>=1 && $3
<=499 || $3==65534) else }; end ' passwd2
管理員個數為: 1
系統使用者個數為: 4
普通使用者個數為: 3
4.1. for結構
4.1.1. 語法結構
awk
[選項]
'正則','位址定位 '
}
4.1.2. 學習案例
4.2. while結構
4.2.1. 語法結構
awk
[選項]
'正則','位址定位 '
}
4.2.2. 學習案例
4.3. 巢狀迴圈
學習案例
利用巢狀迴圈列印如下所示圖形
554543
5432
54321
# chen @ localhost in ~ [10:16:54]
$ awk
'begin print} }' 554
5435432
54321
5.1. 統計系統中各種型別的 shell# chen @ localhost in ~ [10:21:46] c:130
$ awk -f: '; end }' /etc/passwd
/bin/sync 1
/sbin/nologin 43
/sbin/halt 1
/bin/zsh 2
/sbin/shutdown 1
5.2. 統計**訪問狀態# chen @ localhost in ~ [10:29:09]
$ ss -an |
grep :80 |
awk';end }'
|sort -k2 -rn
estab 18
time-wait 13
listen 10
5.3. 統計**的每個 ip 的數量# chen @ localhost in ~ [10:53:05]
$ netstat -ant |
grep :80 |
awk -f ':'''|
awk -f '[ ]+'
'; end }'
ip: 192.168.10.100 |count: 3
ip: 192.168.10.96 |count: 20
ip: 192.168.10.102 |count: 2
ip: 192.168.10.98 |count: 2
ip: 0.0.0.0 |count: 10
ip: 192.168.10.104 |count: 2
ip: 192.168.10.108 |count: 1
5.4. 統計 tomcat **日誌中 pv 量# chen @ localhost in /usr/local/tomcat/apache-tomcat-8.5.42/logs [10:57:50]
$ awk -f'[ ]+'
'; end}' localhost_access_log.2019-09-11.txt
192.168.10.71 3
192.168.10.36 9
awk 使用案例
awk 語言的最基本功能是在檔案或字串中基於指定規則瀏覽和抽取資訊,awk 抽取資訊後,才能進行其他文字操作,完整的 awk 指令碼通常用來格式化文字檔案中的資訊 語法格式 awk 選項 指令 操作檔案 常用選項 f 指定分隔符,分隔符用 引起來 不加任何引數預設為空格分隔 定位行號 使用nr ro...
很直觀的awk使用案例
awk是linux文字處理三劍客之一,在grep,sed,awk中,awk功能最為強大,使用最為靈活,因為其本身也屬於一種程式語言,可以通過程式設計實現各種需要的文字處理需求。當然,awk使用也較為複雜,這裡用直觀的例子來介紹awk的日常使用。步驟1 root centos8 ifconfig en...
cut及awk簡單使用
用法 cut d f2 檔案 c 以字元為單位進行分割 d 分隔符,後面用引號引住分隔符 f 與 d 連用,指定顯示那個區域 例項1 1 root jz cat a.txt 12 34 56 78 9 root jz cut c 1 5 a.txt 擷取a.txt檔案第1到5個字元 12 34 ro...