awk使用教程:
awk調(diào)用方式,常用三種
1.命令行調(diào)用(重點(diǎn)介紹)
常用格式框架:
awk -F ':' '/word/ { print(f) $1 }'
即:
awk -F ':' '/word/ { print $1 }'
awk -F ':' '/word/ { printf $1 }'
說(shuō)明:
-F 指定分割符,如果沒(méi)有指定分割符,默認(rèn)使用空格作為分割符罩扇。
首先匹配word
這個(gè)單詞的那一行翰苫,然后以:
分割符,print $1
輸出第1個(gè)域。
基于上面的框架可以有其他變形,例如:
awk -F ':' '/word/ { print $1,$2 }'
awk -F ':' '/word1/ { print $1,$2 } /word2/ {print $2}'
awk -F ':' '/word1/ { printf $1." " } /word2/ {print $2}'
注:在awk命令使用中,print
是輸出之后換行猴抹,而printf
是輸出之后不換行。
例子:
題目:掃面一個(gè)網(wǎng)段中22端口開(kāi)放
的ip地址(使用awk命令)
step1:先掃描一個(gè)網(wǎng)段看一看我們關(guān)注的重點(diǎn)字段锁荔。
[root@localhost ~]# nmap -Pn -p22 192.168.3.0/24
圖片.png
step2:過(guò)濾出IP地址和狀態(tài)STATE蟀给,將其兩項(xiàng)顯示在一行。
[root@localhost ~]# nmap -Pn -p22 192.168.3.0/24 | awk '/Nmap/ {printf $5." "} /ssh/ {print $2}'
圖片.png
step3:只將狀態(tài)是open的IP地址顯示出來(lái)
[root@localhost ~]# nmap -Pn -p22 192.168.3.0/24 | awk '/Nmap/ {printf $5." "} /ssh/ {print $2}' | awk '/open/ {print $1}'
圖片.png
step4:可以將結(jié)果輸出到一個(gè)txt文件里面阳堕。
[root@localhost ~]# :> 192.txt #清空文件里面內(nèi)容跋理,不帶任何字符
[root@localhost ~]# cat 192.txt
[root@localhost ~]# nmap -Pn -p22 192.168.3.0/24 | awk '/Nmap/ {printf $5." "} /ssh/ {print $2}' | awk '/open/ {print $1}' > 192.txt
[root@localhost ~]# cat 192.txt
192.168.3.3
192.168.3.36
192.168.3.104
192.168.3.110
192.168.3.113
192.168.3.119
192.168.3.145
[root@localhost ~]#
當(dāng)然平時(shí)掃描的時(shí)候可以先將掃面的東西輸出到一個(gè)文件里面,在對(duì)其文件匹配顯示恬总,這樣效率高點(diǎn)薪介。
此題解法并不唯一,靈活多變越驻,在此只是想借此題說(shuō)明以下awk之功效汁政!
2.shell腳本方式
將所有的awk命令插入到一個(gè)文件,并使awk程序可執(zhí)行缀旁,然后awk命令解釋器作為腳本的首行记劈,一般通過(guò)鍵入腳本名稱來(lái)調(diào)用。
相當(dāng)于shell腳本首行的:#!/bin/bash
可以換成:#!/bin/awk
3.將所有的awk命令插入到一個(gè)單獨(dú)的文件并巍,然后調(diào)用:
awk -f awk-script-file input-file(s)
其中目木,
-f
選項(xiàng)加載awk-script-file
中的awk腳本,input-file(s)
是待處理的文件