Bash 用于检查并抛出乘法结果错误的AWk脚本

Bash 用于检查并抛出乘法结果错误的AWk脚本,bash,awk,scripting,Bash,Awk,Scripting,我需要将第1列和第3列数据相乘,并将其与第5列进行比较。 如果结果大于或小于第5列的值,则需要检查乘法和抛出错误,尽管+/-2的差值可以 Ex-如果第1列的值为2.4,第3列的值为3.5,那么第5列的值在第1行(6.4到10.4)、第2行(248到252)、第3行(22634.8到22638.8)的范围内就可以了 只需要检查乘法结果并抛出错误。 文件也有头,但在验证时需要跳过头 正确的文件 a|b|c|d|e 2.4||3.5||8.4 5||50||250 6.55||3456||22636.

我需要将第1列和第3列数据相乘,并将其与第5列进行比较。 如果结果大于或小于第5列的值,则需要检查乘法和抛出错误,尽管+/-2的差值可以

Ex-如果第1列的值为2.4,第3列的值为3.5,那么第5列的值在第1行(6.4到10.4)、第2行(248到252)、第3行(22634.8到22638.8)的范围内就可以了 只需要检查乘法结果并抛出错误。 文件也有头,但在验证时需要跳过头

正确的文件

a|b|c|d|e
2.4||3.5||8.4
5||50||250
6.55||3456||22636.8
正确的文件

a|b|c|d|e
2.4||3.5||7.4
5||50||251
6.55||3456||22635.8
工作文件:

a|b|c|d|e
2.4||3.5||6.3
5|50|247
6.55||3456||22634.4
Worng文件

a|b|c|d|e
2.4||3.5||10.5
5||50||253
6.55||3456||22638.9
这似乎可以检查大于2的结果

if ($5 > $1 * $3 + 2 ) {print "Error 401: column1 and colmn3 does not match with column5,Field position 5, Linenumber:"NR,$0}
但下面并没有检查结果是否小于2,若乘法结果等于$5,则抛出错误

if ($5 > $1 * $3 - 2 ) {print "Error 402: column1 and colmn3 does not match with column5,Field position 5, Linenumber:"NR,$0}

使用作为输入提供的所有输入文件的串联:

$ cat tst.awk
BEGIN { FS="|" }
NR>1 { print $0 "\tis " (abs($5-($1*$3)) > 2 ? "bad" : "good") }
function abs(val) { return (val<0 ? -val : val) }

$ awk -f tst.awk file
2.4||3.5||8.4   is good
5||50||250      is good
6.55||3456||22636.8     is good
2.4||3.5||7.4   is good
5||50||251      is good
6.55||3456||22635.8     is good
2.4||3.5||6.3   is bad
5|50|247        is bad
6.55||3456||22634.4     is bad
2.4||3.5||10.5  is bad
5||50||253      is bad
6.55||3456||22638.9     is bad
$cat tst.awk
开始{FS=“|”}
NR>1{打印$0“\tis”(abs($5-($1*$3))>2?“坏”:“好”)}

函数abs(val){return(val)您需要
bash
脚本还是
awk
脚本?标题在哪里?向我们展示它在每个file@Inian...bash脚本..抱歉..请编辑我的帖子抱歉,这不是StackOverflow的工作方式。表格“我想做X,请给我提示和/或示例代码”中的问题被认为是离题的。请访问并阅读,特别是阅读@kvantour..抱歉..我也会发布我尝试过的代码..您打算如何在shell脚本中使用此脚本?或
($5-$1*$3)^2>4
Hi@Ed Morton..我不需要任何输出..只想打印另一个文件中标题为的坏记录行,这些行的乘法结果偏差大于+/-2。
只想打印坏记录行…
-这就是输出。编辑您的问题以显示它。