我不是100%確定如何簡單地說出我的問題,所以如果在某個地方回答了此問題並且我無法找到它,我表示歉意。使用awk只返回某些數據塊
我所擁有的是帶有身份驗證數據包的調試日誌以及一堆其他輸出。我需要搜索大約200萬行日誌來查找包含某個mac地址的每個數據包。
的包看起來像這樣(略審查):
-----------------[ header ]-----------------
Event: Authd-Response (1900)
Sequence: -54
Timestamp: 1969-12-31 19:30:00 (0)
---------------[ attributes ]---------------
Auth-Result = Auth-Accept
Service-Profile-SID = 53
Service-Profile-SID = 49
RADIUS-Access-Accept-Attr/WiMAX-Capability = 0x(numbers)
Session-Timeout = 3600
Service-Profile-SID = 4
Service-Profile-SID = 29
Chargeable-User-Identity = "(Numbers)"
User-Password = "(the MAC address I'm looking for)"
--------------------------------------------
但是大約有10種不同的可能的類型不同可能的長度。它們都以標題行開始,並以全破折號行結束。
我用awk讓自己使用此代碼塊取得了成功:
awk '/-----------------\[ header \]-----------------/,/--------------------------------------------/' filename.txt
但我希望能夠用它來僅返回包含我需要的MAC地址的報文。
我一直試圖弄清楚這幾天現在,我很卡住。我可以嘗試寫一個bash腳本,但我可以發誓我已經使用awk做過這樣的事情...
+1,很好,很簡單,可能需要添加'-v IGNORECASE = 1'。 – Thor