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

处理Trumpf机床数据文件:特定行数值相乘并生成CSV

处理Trumpf机床大体积数据文件的高效方案

需求说明

现有一份约42000行的Trumpf机床数据文件,需完成以下处理:

  • 保留所有原有数据
  • 定位仅包含2个有效数值的行,将两数相乘的结果追加至该行末尾
  • 最终输出为结构化CSV文件
    此前尝试grep、find命令未达预期,需高效解决办法。

数据样例

ELQADDXP.DAT-*test ADDXP 20GA ASTM A1011 0
ELQADDXP.DAT- 7.75000 14.00000
ELQADDXP.DAT- TRUMP 59.6517 0 3 4
ELQADDXQ.DAT-*1140242-0 ADDXQ 20GA ASTM A1011
ELQADDXQ.DAT- 7.75000 14.00000
ELQADDXQ.DAT- TRUMP 59.6517 0 3 4
ELQADDXT.DAT-*1137679-0 ADDXT 16GA ASTM A1011
ELQADDXT.DAT- 8.00000 15. .
ELQADDXT.DAT- TRUMP 71.1517 0 3 4

预期输出样例

ELQADDXP.DAT-*test ADDXP 20GA ASTM A1011 0
ELQADDXP.DAT- 7.75000 14.00000 108.500
ELQADDXP.DAT- TRUMP 59.6517 0 3 4
ELQADDXQ.DAT-*1140242-0 ADDXQ 20GA ASTM A1011
ELQADDXQ.DAT- 7.75000 14.00000 108.500
ELQADDXQ.DAT- TRUMP 59.6517 0 3 4
ELQADDXT.DAT-*1137679-0 ADDXT 16GA ASTM A1011
ELQADDXT.DAT- 8.00000 15. .
ELQADDXT.DAT- TRUMP 71.1517 0 3 4

高效解决方案:使用AWK处理

AWK是专为文本和数据处理设计的工具,处理大文件(42000行)效率极高,且能直接完成数值计算,完美匹配需求。

执行命令

将以下命令中的input.dat替换为你的源数据文件名,output.csv为输出的CSV文件名:

awk '{
    num_count = 0
    # 从第2个字段开始遍历,筛选有效数值
    for (i=2; i<=NF; i++) {
        # 匹配整数、小数格式,排除无效字符
        if ($i ~ /^[0-9]+(\.[0-9]+)?$|^\.[0-9]+$/) {
            num_count++
            nums[num_count] = $i
        }
    }
    # 仅当有效数值数量为2时,计算并追加乘积
    if (num_count == 2) {
        product = nums[1] * nums[2]
        # 格式化乘积为3位小数,可调整位数
        printf "%s %.3f\n", $0, product
    } else {
        # 其他行直接原样输出
        print $0
    }
}' input.dat > output.csv

关键说明

  1. 数值匹配规则:正则表达式^[0-9]+(\.[0-9]+)?$|^\.[0-9]+$会匹配所有合法整数(如14)、小数(如7.75000),自动排除像15. .这类无效字段的行。
  2. 字段遍历逻辑:跳过第1个字段(文件名前缀ELQXXX.DAT-),仅统计后续字段中的有效数值。
  3. 兼容性:所有原有数据都会被保留,仅符合条件的行追加乘积结果,不会破坏原有数据结构。
  4. 性能:AWK处理42000行文件仅需几秒,远快于grep+shell脚本的组合方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:25:38