在awk中打印最大值有什么问题



我使用此脚本打印第二列的最大值:

awk 'BEGIN{a=   0}{if ($2>a) a=$2 fi} END{print a}' file

文件:

3830.52482 5.78305
3849.67744 7.10715
3868.92583 7.23076
3888.27046 7.67286
3907.71181 9.21546
3986.45416 11.24000
4006.38643 12.57840
4026.41837 12.39920
4046.55046 12.39390
4066.78321 12.17150
4087.11713 13.03400
4107.55271 12.83100
4128.09047 13.23370
4148.73093 13.40080
4169.47458 13.34160
4190.32196 12.83620
4211.27357 13.02260
4232.32993 12.27750
4253.49158 12.31420
4274.75904 11.57470
4296.13284 9.65358
4317.61350 10.84840
4339.20157 12.88430
4360.89757 13.45180
4382.70206 12.76190
4404.61557 13.58690
4426.63865 14.02720
4448.77184 14.49020

结果:

bash maximum.sh 
9.96591

但是第二列中的数字更大。 即使输入不包含它,我也得到了这个数字。

awk不是 shell,它本身是一种不同的语言,你在逻辑上是正确的,只是语法fi不应该存在,请尝试:

awk 'BEGIN{a=0}{if($2>a){a=$2}} END{print a}' Input_file


或者,您可以简单地使用条件运算符(如下所示(在第二个字段中设置获取最大值,如下所示:

awk '{a=$2>a?$2:a} END{print a}' Input_file

说明:OP 已经走上了正轨,创建一个变量并检查每行的条件,如果当前行的第 2 个字段大于变量的值,则将变量值分配给第 2 个字段,否则保持原样。在此程序END部分中,然后打印变量值。

最新更新