列递增条件

时间:2018-11-08 21:50:29

标签: awk

检查第2列中的值,如果该值不是50的增量,则打印行

Input file

1000 2450 1
1000 2500 1
1000 2501 1
1000 2550 1
1000 2601 1
1000 2650 1

所需的输出

error 1000 2501 1
error 1000 2601 1

使用我尝试过的Karakfa的答案

awk '{$2%50 
{ err = FNR; exit } 
END { print "Invalid file on line", err; exit 1} 
print "Wrong File :", FILENAME }' file

预先感谢

1 个答案:

答案 0 :(得分:2)

$ awk '$2%50{print "error",$0}' file

error 1000 2501 1
error 1000 2601 1

如果该值不是50的倍数,则余数mod 50将为非零。

我想这就是您要尝试的吗?

$ awk '$2%50 {err=FNR; exit} 
       END   {if(err) 
                {print "Invalid file on line:", err; 
                 print "Wrong File :", FILENAME; 
                 exit 1}}' file

注释END不能出现在任何语句中,只能显示为“条件”,类似于BEGIN