如何解决Awk程序来确定最大值
我试图确定列S2和S4的最大值,但仅针对具有BBB的相应S1列。
输出将为S2 max = 800和S4 max = 90。
目前有:
awk 'BEGIN { FS = " " ; OFS = " "; } { if(NR%3==0){max=$3} { s2+=substr($2,1,3); s4+=substr($4,2) } } ; { $3 >= max } END { print "Max S2 = " s2,"; Max S4 = " s4 } ' file.txt
S1 S2 S3 S4
--- --- - --
AAA 100 A 99
BBB 200 B 90
CCC 300 C 80
AAA 400 A 70
BBB 500 B 60
CCC 600 C 50
AAA 700 A 40
BBB 800 B 30
CCC 900 C 20
AAA 999 A 10
解决方法
您可以尝试按照链接https://ideone.com/OMoqG8
中显示的示例进行笔试和测试吗?awk '
$1=="BBB"{
maxS2=(maxS2>$2?maxS2:$2)
maxS4=(maxS4>$4?maxS4:$4)
}
END{
print "max of S2 is:" maxS2 ORS "max of S4 is:" maxS4
}
' Input_file
输出如下:
max of S2 is:800
max of S4 is:90
,
您使用的shell不会有任何区别,不会改变tput flash >/dev/ttys002
的行为方式。它可能会改变您向awk
提供变量输入的方式,但是这里的问题不需要任何问题。
在这里,您可以简单地标识包含awk
的记录(行),然后跟踪field-2和field-4的最大值,然后使用BBB
规则输出结果。您可以使用传统的END
或三元运算符,如@ RavinderSingh13所使用的那样。传统的if
是:
if
使用/输出示例
使用文件名awk '/BBB/{
if ($2 > s2)
s2 = $2
if ($4 > s4)
s4 = $4
}
END{
printf "S2 max=%d and S4 max=%d\n",s2,s4
}' file
中的数据,您可以仅切换到包含file
的目录(确保将file
更改为输入文件名),然后选择-将上面的鼠标和中间鼠标粘贴到终端中进行测试,例如
file
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。