匹配下列格式的数据中的 source和MAC地址:

Chain WiFiDog_br-lan_Outgoing (1 references)
pkts bytes target prot opt in out source destination
705 109595 MARK all -- * * 10.1.1.191 0.0.0.0/0 MAC C4:6A:B7:6F:7A:AB MARK or 0x200
705 109595 MARK all -- * * 10.1.1.192 0.0.0.0/0 MAC C4:6A:B7:6F:7A:BB MARK or 0x200
705 109595 MARK all -- * * 10.1.1.193 0.0.0.0/0 MAC C4:6A:B7:6F:7A:CB MARK or 0x200
705 109595 MARK all -- * * 10.1.1.194 0.0.0.0/0 MAC C4:6A:B7:6F:7A:DB MARK or 0x200

简单实现例如以下,在已知格式的情况下,使用最简单快捷的方式来解决这个问题。

local file

file = io.open("format", "r")

for line in file:lines() do
    print(string.match(line, "%d+.%d+.%d+.%d+"))
    print(string.match(line, "%x+:%x+:%x+:%x+:%x+:%x+"))
end
file:close()

运行结果例如以下

>lua -e "io.stdout:setvbuf 'no'" "match.lua"

nil

nil

nil

nil

10.1.1.191

C4:6A:B7:6F:7A:AB

10.1.1.192

C4:6A:B7:6F:7A:BB

10.1.1.193

C4:6A:B7:6F:7A:CB

10.1.1.194

C4:6A:B7:6F:7A:DB

>Exit code: 0

原理例如以下:

http://www.cnitblog.com/kenlistian/archive/2008/10/15/50292.html

05-08 15:31