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

如何编写awk脚本筛选出生日期日部分存在于手机号中的行?

awk 匹配逻辑实现方案

完整可运行脚本

BEGIN {
    FS = ","
}
# 跳过表头行
NR == 1 { next }
{
    # 拆分出生日期,默认支持横杠/斜杠分隔的格式,可根据实际日期格式调整分隔符
    split($4, born_arr, /[-\/]/)
    # 提取日部分:YYYY-MM-DD/MM-DD-YYYY格式取born_arr[3],DD-MM-YYYY格式取born_arr[1],可按需调整索引
    day_str = born_arr[3]
    # 核心匹配逻辑
    # 方案1:使用index函数,无正则元字符风险,更稳妥
    if (index($5, day_str) > 0) {
        # 按要求格式输出
        print $1 " " $2 " " $4 ", " $5
    }
    # 方案2:纯数字场景下可用正则匹配,写法更简洁
    # if ($5 ~ day_str) {
    #     print $1 " " $2 " " $4 ", " $5
    # }
}

匹配逻辑说明

  • 优先推荐使用index(主串, 子串)函数实现包含判断:该函数返回子串在主串中第一次出现的位置,返回值大于0即代表子串存在于主串中,不需要考虑正则元字符转义问题,适配性更强。
  • 如果确认出生日期的日部分都是纯数字,也可以用正则匹配语法主串 ~ 子串实现判断,效果一致。

运行方式

将脚本保存为filter.awk,输入文件为data.csv,运行命令:
awk -f filter.awk data.csv

内容的提问来源于stack exchange,提问作者J-K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:24:03