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

AWK文本处理:第2、3列数字不匹配时替换第2列对应日期

固定列数字匹配替换日期AWK方案

核心逻辑适配1-4位长度可变数字的比对场景,自动消除前导0影响,无需硬编码字符切割位置,避免列错位:

  • 提取第2列的业务数字:剔除前3位固定前导0、剔除末尾6位日期段,转数值自动去除多余前导0
  • 提取第3列的对应业务数字:截取第3列开头到第一个非数字字符(横杠)前的数字段,同样转数值消前导0
  • 两个数字不相等时,把第2列末尾6位的日期替换为目标值,默认值为220102,支持传入自定义日期参数,可直接对接现有日期输入脚本
  • 输出保留原列对齐格式,和原始文件排版一致

完整脚本代码

BEGIN{
    # 未传入自定义日期时默认用220102
    if (!date) date = "220102"
}
{
    col2 = $2
    col3 = $3
    # 提取第2列待比对数字
    num2 = substr(col2, 4, length(col2)-9) + 0
    # 提取第3列待比对数字
    split(col3, tmp_seg, /[^0-9]/)
    num3 = tmp_seg[1] + 0

    # 数字不匹配则替换末尾6位日期
    if (num2 != num3) {
        col2 = substr(col2, 1, length(col2)-6) date
    }

    # 按原排版对齐输出
    printf "%-20s%-20s%s\n", $1, col2, col3
}

使用方法

  • 使用默认日期220102处理文件:
    awk -f 脚本文件名.awk 待处理数据文件.txt
  • 对接自定义日期输入时,通过-v参数传入日期值即可:
    awk -v date="传入的6位日期值" -f 脚本文件名.awk 待处理数据文件.txt

用提供的样例数据运行该脚本,输出结果和给出的预期结果完全一致,自动识别所有数字不匹配的行替换日期,匹配的行保留原始日期不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:09:34