【问题标题】:Find specific value in file using lua使用lua在文件中查找特定值
【发布时间】:2022-12-15 23:35:55
【问题描述】:

我有以下格式的文件:-

  ** Resuming transfer from byte position 13247324
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:02 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:03 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:08 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:09 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:09 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:10 --:--:--     0
  0 9539k    0     0    0     0      0      0 --:--:--  0:00:11 --:--:--     0
  0 9539k    0     0    0     0      0      0 --:--:--  0:00:12 --:--:--     0
  0 9539k    0  8192    0     0    598      0  4:32:14  0:00:13  4:32:01  1882
  0 9539k    0 13238    0     0    865      0  3:08:12  0:00:15  3:07:57  2459
 39k   11 1109k    0     0  12684      0  0:12:50  0:01:29  0:11:21 22753
 11 9539k   11 1117k    0     0  12570      0  0:12:57  0:01:31  0:11:26 15004
 11 9539k   11 1117k    0     0  12433      0  0:13:05  0:01:32  0:11:33 11847
 11 9539k   11 1117k    0     0  12299      0  0:13:14  0:01:33  0:11:41  9191
 11 9539k   11 1117k    0     0  12168      0  0:13:22  0:01:34  0:11:48  6011
 11 9539k   11 1124k    0     0  12122      0  0:13:25  0:01:35  0:11:50  2844
 12 9539k   12 1173k    0     0  12566      0  0:12:57  0:01:35  0:11:22 12479
 12 9539k   12 1173k    0     0  12384      0  0:13:08  0:01:37  0:11:31 11475
 12 9539k   12 1173k    0     0  12257      0  0:13:16  0:01:38  0:11:38 11473
 12 9539k   12 1197k    0     0  12371      0  0:13:09  0:01:39  0:11:30 16129

我只想找到平均 dload 值 我当前的代码是:-

 local file = io.open(path, "rb") 
if not file then return nil end
local lines = {}
local words = {}
for line in io.lines(path) do    
    for word in line:gmatch("%w+") do
        table.insert(words, word) 
    end    
    table.insert(lines, words)
end
file:close()
return words;

但是这段代码给了我 indexes 和所有的单词作为值。我无法找到平均 dload 的具体值

我是 lua 的新手,非常感谢任何帮助

【问题讨论】:

  • 您正在以二进制模式打开文件。
  • @Zakk 所以?为什么这在 lua 中很重要?

标签: lua lua-table


【解决方案1】:

我想你快到了。我就是这样做的。 col 将保存我们正在为其收集输出的列的编号,这样您就可以分别获取不同列的统计信息。

local file = io.open(path, "rb") 
if not file then return nil end
local lines = {}
local stats = {}
local col
for line in io.lines(path) do
  col = 0
  for word in line:gmatch("%w+") do
    if word then
      col = col + 1
      stats[col] = stats[col] or { }
      stats[col][word] = (stats[col][word] or 0) + 1
    end
  end
  table.insert(lines, words)
end
file:close()

当我现在执行以下操作时:

for col, val in ipairs(stats) do
  for word, count in pairs(val) do
    print("Col=", col, "word=", word, "count=",count)
  end
end

我得到以下输出:

Col=    1   word=   39k count=  1
Col=    1   word=   0   count=  13
Col=    1   word=   11  count=  5
Col=    1   word=   12  count=  4
Col=    2   word=   0   count=  9
Col=    2   word=   9539k   count=  13
Col=    2   word=   11  count=  1
Col=    3   word=   12  count=  4

...ETC。

【讨论】:

    猜你喜欢
    • 2012-02-09
    • 2017-07-03
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多