我有一个包含 7 列的文件,带有插入符号 (^) 分隔符 例子
ABCD123456^12345678^192.654^02Aug15^12:10:36
我写了一个 awk 命令来检查重复项
awk '!seen[$0]++' filename
第一个字段的长度应为 10,第二个字段的长度应为 8
awk -f '^' '{ if ((length($1) == 10) && (length($1) == 10)) print }'
问题是
如何进行时间验证 (
[0-9]:[0-9]:[0-9]
)?什么 awk 查询awk -F '^' '$5 ~ [0-9]:[0-9]:[0-9]' 打印
但这行不通
日期验证。如何验证 2 位数字的日期、3 个字符的月份和 2 位数字的年份
第三字段中的十进制数验证
我怎样才能将这一切结合到一个 awk 脚本中
最佳答案
您可以像这样将它们组合成一个 awk 命令:
awk -F '^' 'length($1) == 10 && length($2) == 8 &&
$3 ~ /^[0-9]+\.[0-9]+$/ && $5 ~ /^[0-9]{2}:[0-9]{2}:[0-9]{2}$/ && !seen[$0]++' file
关于linux - 用于组合多字段验证的 AWK 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33553287/