lua文字マッチング

1523 ワード

次の形式のデータの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