unix – 使用awk的最大值和最小值
发布时间:2020-12-15 22:54:56 所属栏目:安全 来源:网络整理
导读:您如何从以下文件中找到以MATH开头的行的最大和最小a,b,c值? TITLE a b cMATH 12.3 -0.42 5.5ENGLISH 70.45 3.21 6.63MATH 3.32 2.43 9.42MATH 3.91 -1.56 7.22ENGLISH 89.21 4.66 5.32 它不能只是一个命令行.它必须是使用BEGIN函数和END的脚本文件. 我得到
您如何从以下文件中找到以MATH开头的行的最大和最小a,b,c值?
TITLE a b c MATH 12.3 -0.42 5.5 ENGLISH 70.45 3.21 6.63 MATH 3.32 2.43 9.42 MATH 3.91 -1.56 7.22 ENGLISH 89.21 4.66 5.32 它不能只是一个命令行.它必须是使用BEGIN函数和END的脚本文件. 我得到了错误的最小值,当我运行程序时,我最终得到一个字符串max.请帮忙! 这是我的代码列a: BEGIN { x=1 } { if ($1 == "MATH") { min=max=$2; for ( i=0; i<=NF; i++) { min = (min < $i ? min : $i) max = (max > $i ? max : $i) } } } END { print "max a value is ",max," min a value is ",min } 谢谢! 解决方法
此代码可以展示您想要的概念:
awk '$1!="MATH"{next}1;!i++{min=$2;max=$2;}{for(j=2;j<=NF;++j){min=(min<$j)?min:$j;max=(max>$j)?max:$j}}END{printf "Max value is %.2f. Min value is %.2f.n",min}' file 输出: MATH 12.3 -0.42 5.5 MATH 3.32 2.43 9.42 MATH 3.91 -1.56 7.22 Max value is 12.30. Min value is -1.56. 删除1以禁止消息: awk '$1!="MATH"{next};... 脚本版本: #!/usr/bin/awk $1 != "MATH" { # Move to next record if not about "MATH". next } !i++ { # Only does this on first match. min = $2; max = $2 } { for (j = 2; j <= NF; ++j) { min = (min < $j) ? min : $j max = (max > $j) ? max : $j } } END { printf "Max value is %.2f. Min value is %.2f.n",min } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |