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

使用awk根据键文件内容从固定宽度值文件中提取匹配记录

awk固定宽度文件按键匹配提取记录解决方案

原脚本错误说明

  • 字段索引混淆:FIELDWIDTHS 配置项的每个数值对应第N个字段的宽度,你需要的14位长度的键是第2个字段(对应变量$2),而非第14个字段($14)
  • 配置生效时机错误:FIELDWIDTHS 必须在行解析前设置才会生效,在NR!=FNR块中修改对第二个文件的首行无效
  • 数组赋值语法错误:data["0"$14] 仅为表达式,没有完成键存储,需要显式赋值如data[$2]=1
  • 匹配逻辑与传参错误:原脚本条件写反(不匹配才打印),且仅传入1个文件,需要按「键文件在前、值文件在后」的顺序传入两个文件

正确实现脚本

针对你提供的样例文件,适配脚本如下:

awk 'BEGIN {
    # 按固定宽度定义字段,可根据你的真实业务宽度调整
    FIELDWIDTHS = "4 14 12 20"
}
# 处理第一个文件(键文件),把匹配键存入数组
NR == FNR {
    # 若需要加前缀0匹配,可改为 data["0"$2] = 1
    data[$2] = 1
    next
}
# 处理第二个文件(值文件),匹配到键则打印整行
$2 in data { print $0 }
' key.txt value.txt

输出结果

执行后将得到你期望的输出:

1   39485063845911  RANDOMTEXT    RANDOMNUMBERS
1   39485063845912  RANDOMTEXT    RANDOMNUMBERS

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 05:18:03