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

使用awk/sed命令对指定格式文件的明细记录指定带符号字段求和

解决明细记录指定字段求和问题

首先明确我们要处理的原始数据:

000Bxxxxx111118064085vxas - header 
10000000001000000000053009-000000000053009- 
10000000005000000000000000+000000000000000+ 
10000000030000000004025404-000000004025404- 
10000000039000000000004930-000000000004930- 
10000000088000005417665901-000005417665901- 
90000060883328364801913 - trailer 

需求很明确:仅处理以1开头的明细记录,提取每条记录中**第28位到第44位(包含符号)**的数值,最终对这些数值求和。

使用awk命令实现

用awk处理这类文本提取+数值计算的需求非常高效,直接用下面的命令即可:

awk '/^1/ { val = substr($0,28,17); sum += val } END { print sum }' your_input_file.txt

命令细节解释

  • /^1/:只匹配以1开头的行(也就是目标明细记录),自动跳过header和trailer行。
  • substr($0,28,17):从当前行($0代表整行内容)的第28个字符开始,截取17个字符(第28到44位共17个字符:44-28+1=17),得到的就是带符号的目标数值字符串。
  • sum += val:awk会自动将字符串形式的数值转换为数字,累加到求和变量sum中。
  • END { print sum }:所有行处理完成后,输出最终的求和结果。

手动验证计算结果

我们提取每条明细的目标字段并转换为数值:

  1. 第一条:000000000053009- → -53009
  2. 第二条:000000000000000+ → 0
  3. 第三条:000000004025404- → -4025404
  4. 第四条:000000000004930- → -4930
  5. 第五条:000005417665901- → -5417665901

求和结果:-53009 + 0 -4025404 -4930 -5417665901 = -5421749244,运行上述awk命令会直接输出这个结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:59:41