当我写命令时,结果低于一。
No ID Sub-Id Sig Mode
22 DarrenIm 00:00:00:1a:00 60 13n/d
32 DarrenYou 00:00:00:1b:01 80 13n/d
我想提取Sig值(并且从比较sig值,我想获得最高Sig值并希望在同一列中获得ID)。我试了但是我有问题。 这是我的代码。
f = assert(io.popen("Here is my command"))
local val = {}
for line in f:lines() do
print(line)
for v in line:gmatch'[%d]%d' do
table.insert(val, v)
end
for i, v in ipairs(val) do
m = math.max(i)
n = m-1
sig = v
print(sig)
end
print(n)
end
f:close()
然而,当我使用sig [n]时出现错误,所以我无法提取值。 通过比较这些值,我想得到最高的信号,并在同一列中获得Id。 如何解决这个问题?
答案 0 :(得分:2)
让我们来看看你的代码。首先你得到一个文件句柄
f = assert(io.popen("Here is my command"))
然后你创建一个表
local val = {}
您逐行阅读文件,打印
for line in f:lines() do
print(line)
您将每行'[%d]%d'
的每个匹配项都插入到表val
for v in line:gmatch'[%d]%d' do
table.insert(val, v)
end
现在你做了一些只有在将你的文件的所有行解析成val之后才有意义的事情。但是,这仍然是针对每一行完成的,因为您仍然在行循环中。
for i, v in ipairs(val) do
我是一个数字,单个数字的最大值是多少?所以这一行是无稽之谈。
m = math.max(i)
n = m-1
sig是一个全局变量。在你的情况下,它是一个字符串。所以sig [n]当然会给你一个错误,因为你只能索引表值。
sig = v
print(sig)
end
print(n)
end
f:close()
字符串模式' [%d]'并没有多大意义。 []创建一类字符。 %d代表任何数字。仅仅将它放入一个类中对于使用%d没有任何区别。
您的代码显示您在Lua中缺乏非常基本的知识。请尝试解析文件,做一些初学者教程。
您的代码结构表明您并未真正考虑操作顺序。得到笔和纸,并考虑你开始编程。