我不能 100% 确定如何简单地表达我的问题,所以我很抱歉,如果这个问题已经在某个地方得到了回答,而我只是找不到它。
我所拥有的是调试日志,其中包含身份验证数据包以及一堆其他输出。我需要搜索大约 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 做过类似的事情......