awk命令的使用實例

awk 數據過濾工具
awk 選項 ‘BEGIN{} {} END{}’ 文件數組

/正則/
$1~/正則/
$2!~/正則/
$1== >= > < <= !=
&& ||
print $3 //但願打哪一列的數據bash

if(判斷){}else{}

能登錄用戶,不能登錄的用戶 // /etc/passwd/裏以:爲分隔符,共7列
》=500 <500
awk -F: '條件{}' 文件
awk -F: '{if($7~/bash/){x++}{y++}}'
awk -F: 'if($3>=500){i++}else{j++}'
END{print i,j}


awk while(判斷)服務器

統計文件裏面root出現了多少次
root:test:hello:root
tom:/root:world:root分佈式

日誌【某個IP訪問屢次】,192.168.4.1
test.mp3 某個歌曲被訪問多少次
IP==地理位置【IP能夠轉換成物理位置】,哪一個地區訪問的人比較多ide

NF 列數
1.思考模式: $1=root $2==root $3==root $4==root $NF==root i++
2.工具

$x="root" //精確匹配測試

i=1
while [ $i<= NF ]
do
$i==root && x++
let i++
done
echo $x日誌

awk -F: '{
i=1;
while(i<=NF){
if($i=="root"){x++};
i++
}
} END{print x}' code

#awk -F: '{i=1;while(i<=NF){if($i=="root"){x++};i++}} END{print x}' times.txt
3排序

i=1
while [ $i<= NF ]
do
$i==root && x++
let i++
done
echo $x

awk 數組 【背】
公式 $1 $2 $3

wc -l /var/log/httpd/access_log //查看日誌行數

0 /var/log/httpd/access_log

客戶端
#yum -y install httpd-tools

#ab -c 1000 -n 10000 http://192.168.4.254/ //壓力測試軟件,再大就是×××軟件了

DOS ×××【來自統一個IP】 拒絕服務×××2W 【模擬x人×××】,再有人訪問,就會拒絕訪問
DDOS ××× 【分佈式拒絕服務×××】【目前無方法,惟一方法,增長帶寬,服務器】
統計每個人訪問的次數

awk 數組 變量能存多個值
a(ab 11 gg cc)
a[0]=ab
a[1]=tt

a[192.168.4.1]=11
a[192.168.4.2]=22
a[192.168.4.254]=33

for i in a 0 1 3
{
print a[i]
}

awk 'BEGIN{a[0]="ab";a[1]="tt";print a[0],a[1]}' //字母的話,必定要有「」

ab tt

awk 'BEGIN{a[0]=123;a[1]=456;print a[0],a[1]}'

123 456

awk 'BEGIN{a["a"]=123;a["b"]=456;print a["a"],a["b"]}' //下標能夠是數字,也能夠是字母

123 456

awk '{IP[$1]++}
END{for i in IP{print IP[i]}} //IP是數組【for循環多少次,取決於IP有多少個下角標】

' test.txt

awk '{IP[$1]++} END{for(i in IP){print i,IP[i]}}' /var/log/httpd/access_log //無特定的順序

192.168.4.254 17
::1 389
192.168.4.1 20026

sort排序:-k2 按第二列排序 -n按數字排序 -r降序

awk '{IP[$1]++} END{for(i in IP){print IP[i],i}}' /var/log/httpd/access_log | sort -nr

20026 192.168.4.1
389 ::1
17 192.168.4.254

awk '{IP[$1]++} END{for(i in IP){print IP[i],i}}' /var/log/httpd/access_log | sort -n

17 192.168.4.254
389 ::1
20026 192.168.4.1

awk '{IP[$1]++} END{for(i in IP){print i,IP[i]}}' /var/log/httpd/access_log | sort -k2 -n

192.168.4.254 17
::1 389
192.168.4.1 20026

awk '{IP[$1]++} END{for(i in IP){print i,IP[i]}}' /var/log/httpd/access_log | sort -k2 -nr

192.168.4.1 20026::1 389192.168.4.254 17

相關文章
相關標籤/搜索