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

Linux 用于组合多个字段验证的AWK脚本,linux,bash,shell,awk,sed,Linux,Bash,Shell,Awk,Sed,我有一个带有插入符号(^)分隔符的7列文件 范例 我编写了一个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]”打印

我有一个带有插入符号(^)分隔符的7列文件 范例

我编写了一个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
    

    完美的我如何验证2015年8月2日,任何或只是
    /^[0-9]{2}[A-S][A-z]{2}[0-9]{2}$/
    /^[0-9]{2}[A-S][A-z]{2}[0-9]{2}$/
    应该可以很好地工作。这是一种魅力,+1是有效的方法
    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