gpt4 book ai didi

bash - 比较列中的数字

转载 作者:行者123 更新时间:2023-11-29 09:40:30 24 4
gpt4 key购买 nike

我很熟悉使用 bash 比较一行中的数字,但是如果我想比较列怎么办?就像我有一个文件

4 2 5 7
6 1 3 8

我想找出每列中最大的

6 2 5 8

我如何使用 awk 执行此操作?

最佳答案

假设您的数据在名为“data”的文件中:

$ awk '{for(j=1;j<=NF;++j){max[j]=(max[j]>$j)?max[j]:$j};mNF=mNF>NF?mNF:NF} END{for(j=1;j<=mNF;++j)printf " " max[j]; print "" }' data
6 2 5 8

或者,使用不同的输出格式:

$ awk '{for(j=1;j<=NF;++j){max[j]=(max[j]>$j)?max[j]:$j};mNF=mNF>NF?mNF:NF} END{for(j=1;j<=mNF;++j)print "max of column " j "=" max[j]}' data
max of column 1=6
max of column 2=2
max of column 3=5
max of column 4=8

上述awk程序的主体包括:

{ for(j=1;j<=NF;++j) {max[j]=(max[j]>$j)?max[j]:$j};mNF=mNF>NF?mNF:NF }

此循环针对输入文件中的每一行运行。循环遍历该输入行中的每一列(字段),从 1 到字段数 (NF)。对于每一列,它都会检查当前值是否大于先前的最大值。如果是,它会更新 max 数组中的值。

关于bash - 比较列中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22596113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com