You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Lua提取文件中的Average Dload(平均下载速度)值

问题描述

我有一个如下格式的文件内容:

** 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

我需要提取其中的**Average Dload(平均下载速度)**值。当前我的Lua代码如下:

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;

但这段代码返回所有单词及索引,无法定位到特定的Average Dload值,我是Lua新手,希望得到帮助。

解决方案

要提取Average Dload值,首先明确它的位置:观察文件内容,表头里Average Speed下方对应的Dload列,就是目标数据列,在数据行中是第7个非空字段(按空格分隔)。

修改后的代码如下:

local path = "你的文件路径" -- 替换为实际文件路径
local file = io.open(path, "r") 
if not file then return nil end

local avg_dload_values = {} -- 存储所有平均下载速度值

-- 跳过前4行(恢复传输提示、表头、空行)
for i = 1, 4 do
    file:read("*l")
end

-- 读取后续数据行
for line in file:lines() do
    -- 按非空字符分割行,过滤空格
    local fields = {}
    for field in line:gmatch("%S+") do
        table.insert(fields, field)
    end
    -- 第7个字段即为Average Dload值
    if #fields >= 7 then
        table.insert(avg_dload_values, fields[7])
    end
end

file:close()

-- 打印所有提取到的平均下载速度值
for _, val in ipairs(avg_dload_values) do
    print("Average Dload:", val)
end

return avg_dload_values

代码说明

  1. 跳过无关行:前4行是提示信息、表头和空行,无有效数据,直接跳过。
  2. 分割字段:用%S+匹配非空字符序列,将每行数据分割为字段数组,避免空格干扰。
  3. 定位目标字段:数据行中第7个字段就是Average Dload值,提取后存入数组。
  4. 结果返回:返回存储所有平均下载速度的数组,若只需最终的平均速度,可直接取avg_dload_values[#avg_dload_values]。

内容的提问来源于stack exchange,提问作者user190549

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 02:35:22