lua分析文件

function startwith(str, substr)

if str == nil or substr == nil then

return nil, "the string or the sub-stirng parameter is nil"

end

if string.find(str, substr) ~= 1 then

return false

else

return true

end

end

function endwith( str, substr)

if str == nil or substr == nil then

return nil, "the string or the sub-string parameter is nil"

end

str_tmp = string.reverse(str)

substr_tmp = string.reverse(substr)

if string.find(str_tmp, substr_tmp) ~= 1 then

return false

else

return true

end

end

function split(str, sep)

local result = {}

if str == nil or sep == nil or type(str) ~= "string" or type(sep) ~= "string" then

return result

end

if string.len(sep) == 0 then

return result

end

local pattern = string.format("([^%s]+)", sep)

--print(pattern)

string.gsub(

str,

pattern,

function(c)

result[#result + 1] = c

end

)

return result

end

local fileName = "d:\\1.txt"

print (fileName)

local file = io.open(fileName, "r")

local kfLines = {}

local lineIndex= 1

for line in file:lines() do

kfLines[lineIndex] = line

lineIndex = lineIndex+1

end

local pStartLine = 0

local pEndLine = 0

for i, line in ipairs(kfLines) do

--print(i, line)

if startwith(line, "xxxList") then

pStartLine = i + 1

end

if startwith(line, "xxxEnd") then

pEndLine = i-1

end

end

print("p info list:")

local x_y_table={}

for i = pStartLine, pEndLine do

local arr = split(kfLines[i], " ")

local x_y = arr[2].."_"..arr[3]

if rawget(x_y_table, x_y) ~= nil then

x_y_table[x_y] = x_y_table[x_y] + 1

else

x_y_table[x_y] = 1

end

--print("split result "..arr[1].." "..x_y)

end

for k, v in pairs(x_y_table) do

print(k, v)

end

print("articleStartLine="..tostring(pStartLine))

print("articleEndLine="..tostring(pEndLine))

return x_y_table