awk - 在 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
不是外壳,它本身是一种不同的语言,您在逻辑上做到了正确,只是语法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 已经在正确的轨道上,如果当前行的第二个字段大于变量的值,则创建一个变量并检查每行的条件,然后将变量值分配给第二个字段,否则保持原样。然后在END
该程序的部分打印变量值。
推荐阅读
- c - libcurl 是否支持 RTSPS?
- wordpress - 在产品页面上,如何以编程方式设置变体值
- json - 如何在 kotlin + klaxon 上序列化到外部标记的枚举(多态类)?
- javascript - Google 表单:如何获取保存在数组中的表单响应项并在 JavaScript/Google App 脚本中传递给云系统的 POST 请求
- python - 对数据框中列的值进行计数和求和的条件函数
- python - ValueError: 层 lstm_1 的输入 0 与层不兼容:预期 ndim=3,发现 ndim=2。收到的完整形状:(无,64)
- css - SVG 动画 onclick
- javascript - 如何根据页码从base64字符串pdf中获取页面内容 - 角度或javascript
- c# - 如何从另一个应用程序清除 IIS 上应用程序的缓存?
- eclipse - AgentSet 无法解析为输入 Repast Simphony 模型