用于组合多字段验证的AWK脚本

时间:2015-11-05 19:36:27

标签: linux bash shell awk sed

我有一个带有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 }' 

问题是

  1. 如何进行时间验证([0-9]:[0-9]:[0-9])?什么awk查询

    awk -F'^''$ 5~ [0-9]:[0-9]:[0-9]'打印

    但这不起作用

  2. 日期验证。如何验证2位数的日期,3个月的Char和& 2位数年

  3. 第3个字段中的十进制数验证

  4. 如何在单个awk脚本

  5. 中组合这一切

1 个答案:

答案 0 :(得分:2)

您可以将它们组合成一个这样的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