数组变量的百分比计算

尼山斯:

我有如下输入

Topic   Current Log     Lag
abc     324     22345   235
xyz     552     48453   1055
bcd     673     100546  3567

我的要求是找到Log和Lag值之间的百分比差异

如果百分比大于30,则需要整行打印在某些文件上。

将整个百分比公式应用于以下if语句不起作用。

if [${log_array[$i]} - ${lag_array[$j] * 100 / ${log_array[i]} -gt 30]

如果[100-70 * 100/100> 30]我需要打印该行。

如何在Shell脚本中对数组进行此百分比计算?

索科维:

正如您已经awk用来创建数组一样log_arraylag_array我建议您在单个awk命令中完成所有操作这不仅写起来短,执行起来快,而且由于awk支持浮点数而更加精确,bash不能。

awk 'NR>1 && ($3-$4)/$3 > 0.3' inputFile

这将读取表inputFile,并打印这些线路,其中差日志-滞后是大于30%日志

如果您还想打印百分比使用

awk 'NR>1 && (p=($3-$4)/$3)>0.3 {print $0, p}' inputFile

注意:我认为该公式是错误的,因为示例中的所有百分比均大于90%。您没有完全指定应如何计算“百分比差异”但是,我怀疑以下情况:

Log-LagLog:的H百分比,因此现在计算100%(Log的“百分比” )与H之间的差D
Log * H/100 = Log-LagH = (Log-Lag)/Log * 100

D = 100-H

在这种情况下,脚本将是

awk 'NR>1 && (p=1-($3-$4)/$3)>0.3 {print $0, p}' inputFile

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章