sipscan.lua
local sip = require 'pl.sip'
local stringx = require 'pl.stringx'
local s = [[
SYNC [1] 0 547 (14679 sec)
SYNC [2] 0 555 (14679 sec)
SYNC [3] 0 563 (14679 sec)
SYNC [4] 0 571 (14679 sec)
SYNC [5] -1 580 (14679 sec)
SYNC [6] 0 587 (14679 sec)
]]
local first = true
local expected
local res = {}
local pat = 'SYNC [$i{seq}] $i{diff} $i{val}'
print(sip.create_pattern(pat))
local match = sip.compile(pat)
for line in stringx.lines(s) do
if match(line,res) then
if first then
expected = res.val
first = false
end
print(res.val,expected - res.val)
expected = expected + 8
end
end