三劍客之awk

2022-08-12 09:30:16 字數 3658 閱讀 6566

awk命令的執行過程

#滿足

awk從檔案中讀取一行內容到記憶體中--》判斷是否滿足條件--滿足---執行對應的命令---輸出到螢幕

#不滿足

awk從檔案中讀取一行內容到記憶體中--》判斷是否滿足條件--不滿足---繼續讀取檔案裡的內容直到檔案最後

awk命令的語法
awk  引數  '模式'  檔案

awk 引數 '條件(找誰)' 檔案

~:表示包含的意思

gsub:表示替換,語法(gsbu(/目標/,"替換成什麼",第幾列))

akw命令之查詢
#示例檔案

[root@web02 files]# cat reg.txt

zhang dandan 41117397 :250:100:175

zhang xiaoyu 390320151 :155:90:201

meng feixue 80042789 :250:60:50

wu waiwai 70271111 :250:80:75

liu bingbing 41117483 :250:100:175

wang xiaoai 3515064655 :50:95:135

zi gege 1986787350 :250:168:200

li youjiu 918391635 :175:75:300

lao nanhai 918391635 :250:100:175

#顯示xiaoyu的姓氏和id號碼

[root@web02 files]# awk '/xiaoyu/' reg.txt

zhang xiaoyu

#顯示所有以41開頭的id號碼的人的全名和id號碼

[root@web02 files]# awk '$3~/^41/' reg.txt

zhang dandan 41117397

liu bingbing 41117483

#顯示所有id號碼最後一位數字是1或5的人的全名

[root@web02 files]# awk '$3~/[15]$/' reg.txt

zhang xiaoyu

wu waiwai

wang xiaoai

li youjiu

lao nanhai

[root@web02 files]#

awk命令之替換
[root@web02 files]# cat reg.txt 

zhang dandan 41117397 :250:100:175

zhang xiaoyu 390320151 :155:90:201

meng feixue 80042789 :250:60:50

wu waiwai 70271111 :250:80:75

liu bingbing 41117483 :250:100:175

wang xiaoai 3515064655 :50:95:135

zi gege 1986787350 :250:168:200

li youjiu 918391635 :175:75:300

lao nanhai 918391635 :250:100:175

#顯示xiaoyu的捐款.每個值時都有以$開頭.如$520$200$135

[root@web02 files]# awk 'gsub(/:/,"$",$4)' reg.txt

zhang dandan 41117397 $250$100$175

zhang xiaoyu 390320151 $155$90$201

meng feixue 80042789 $250$60$50

wu waiwai 70271111 $250$80$75

liu bingbing 41117483 $250$100$175

wang xiaoai 3515064655 $50$95$135

zi gege 1986787350 $250$168$200

li youjiu 918391635 $175$75$300

lao nanhai 918391635 $250$100$175

[root@web02 files]#

awk命令之begin模式:主要用來測試與計算
[root@web02 ~]# awk 'begin'

220

awk命令之end模式:用來計算顯示最終統計結果
[root@web02 ~]# #統計/etc/services檔案裡面的空行數量

[root@web02 ~]# awk '/^$/end' /etc/services

16

awk命令之陣列:用來統計與計算

[root@web02 ~]# cat url.txt

#方法一:使用單個新增

[root@web02 ~]# awk -f '[/.]+' 'end' url.txt

3 1#方法二:使用for迴圈

[root@web02 ~]# awk -f '[/.]+' 'end' url.txt

www 3

*** 1

post 2

[root@web02 ~]#

secure系統日誌分析練習

誰在破解你的密碼(failed password 每個ip位址出現的次數)

[root@web02 files]# awk '/failed password/end' secure-20161219 

218.65.30.126 17163

218.65.30.61 17163

125.16.71.175 4

169.46.38.74 9

183.136.238.78 30

218.2.0.16 10

91.223.133.33 2

222.186.50.206 3289

51.254.143.19 9

113.207.7.3 316

111.73.46.156 3206

123.31.34.141 39

187.115.73.70 9

182.100.67.119 17163

218.87.109.150 17163

218.87.109.151 17163

..........

分析系統的每個使用者被破解的次數
[root@web02 files]# awk '/failed/end' secure-20161219 |head

odoo 3

2735 1

oleta 3

ubuntu1 1

imcmon 3

ubuntu2 1

ubuntu3 1

ubuntu 7

nagiosuser 3

erp 3

[root@web02 files]#

linux 三劍客之 awk

awk是一種程式語言,用於在linux unix下對文字和資料進行處理。資料可以來自標準輸入 stdin 乙個或多個檔案,或其它命令的輸出。它支援使用者自定義函式和動態正規表示式等先進功能,是linux unix下的乙個強大程式設計工具。它在命令列中使用,但更多是作為指令碼來使用。awk有很多內建的...

linux三劍客之awk

linux三劍客 grep sed awk 與sed類似,awk是行處理器 相比較螢幕處理的優點,在處理龐大檔案時不會出現記憶體溢位或是處理緩慢的問題,它可以對每一行進行切片處理 awk處理過程 依次對每一行進行處理,然後輸出 awk命令形式 awk f f v begin end file f f...

文字三劍客之 awk命令

awk 文字處理 根據條件去擷取字段 awk難點 1.正則表達 2.if 3.內建函式 4.內建變數 5.for,陣列array awk 預設的分隔符是空白 空格 tab 輸入分隔符 f 輸出分隔符 1 代表第1個字段 2 代表第2個字段 以此類推 0 代表整行 正規表示式和bash一致 數 算符 ...