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

如何在awk中使用正则表达式校验文件日期列并排查代码问题

awk日期列校验代码问题修正

原代码存在的问题

  • 语法结构错误:BEGIN 代码块未被正确包裹在awk执行语句的引号内,且块定义缺少外层大括号,awk无法正常解析初始化逻辑。
  • 正则语法不兼容:原代码使用的\d(匹配数字)、\z(匹配字符串结尾)属于PCRE正则语法,awk默认使用POSIX扩展正则,不识别上述写法。
  • 分隔符匹配错误:正则中未转义的.是通配符,可匹配任意字符,无法精准匹配时间部分的冒号分隔符,容易出现误匹配。
  • 结尾锚定符错误:awk正则中匹配字段/行结尾需要用$,而非PCRE语法的\z。

修正后可直接运行的代码

awk -F '|' 'BEGIN{OFS=FS} $1 ~ /^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2} [AP]M$/ {print $0}' file > file.out

匹配逻辑说明

正则严格匹配第一列的格式要求:

  • 起始段为月/日/年格式:月、日为1-2位数字,年为4位数字,段间用斜杠分隔
  • 日期后接空格,后跟时:分:秒格式的时间:时、分、秒均为1-2位数字,段间用冒号分隔
  • 时间后接空格,以AM或PM结尾,第一列无多余字符

运行上述代码处理提供的测试文件,会得到期望的输出结果:

04/21/2014 02:04:55 AM|34536
12/31/2021 03:29:15 AM|87612

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 04:33:25