Awk 如何从列中查找最大值

Awk 如何从列中查找最大值,awk,Awk,我试图在名为data.dat的文件的三列中找到最大值。这个想法是 5414 6267 3157 4521 1235 5418 1366 6472 4598 5153 7814 5648 我正在尝试使用awk作为 for k in {1..3};awk 'BEGIN {max = 0} {if ('$k'>max) max='$k'} END {print max}' data.dat;done 但我并不走运。请您尝试以下内容,并用GNUawk中显示的示例编写和测试 awk ' {

我试图在名为data.dat的文件的三列中找到最大值。这个想法是

5414 6267 3157 
4521 1235 5418
1366 6472 4598
5153 7814 5648
我正在尝试使用
awk
作为

for k in {1..3};awk 'BEGIN {max = 0} {if ('$k'>max) max='$k'} END {print max}' data.dat;done

但我并不走运。

请您尝试以下内容,并用GNU
awk
中显示的示例编写和测试

awk '
{
  for(i=1;i<=NF;i++){
    arr[i]=(arr[i]>$i?arr[i]:$i)
  }
}
END{
  for(k=1;k<=NF;k++){
    print arr[k]
  }
}' Input_file
awk'
{
对于(i=1;i$i?arr[i]:$i)
}
}
结束{

对于(k=1;k您能否尝试使用GNU
awk
中显示的样本编写并测试以下内容

awk '
{
  for(i=1;i<=NF;i++){
    arr[i]=(arr[i]>$i?arr[i]:$i)
  }
}
END{
  for(k=1;k<=NF;k++){
    print arr[k]
  }
}' Input_file
awk'
{
对于(i=1;i$i?arr[i]:$i)
}
}
结束{

对于(k=1;k这就是
awk
数组的用途。您可以简单地在每个字段上循环,使用字段编号作为数组索引,并将值与当前字段值进行比较。如果值更大,则使用当前值更新该索引处的值,例如

awk '{
    for (i=1; i<=NF; i++)
        if ($i > a[i])
            a[i] = $i
}
END {
    for (j = 1; j < i; j++)
        print a[j]
}' file

这就是
awk
数组的用途。您可以简单地在每个字段上循环,使用字段编号作为数组索引,并将值与当前字段值进行比较。如果值更大,则使用当前值更新该索引处的值,例如

awk '{
    for (i=1; i<=NF; i++)
        if ($i > a[i])
            a[i] = $i
}
END {
    for (j = 1; j < i; j++)
        print a[j]
}' file

哦…哦…不要在循环中调用
awk
awk
能够处理所有问题,而且速度会快几个数量级。在循环中,每次迭代都会产生一个单独的过程。我不太擅长使用awk,我该怎么做呢?哦…哦…不要在循环中调用
awk
awk
的能力非常强在循环中,每次迭代都会产生一个单独的过程。我不太擅长使用awk,我该怎么做呢?
$ awk '{
>     for (i=1; i<=NF; i++)
>         if ($i > a[i])
>             a[i] = $i
> }
> END {
>     for (j = 1; j < i; j++)
>         print a[j]
> }' file
5414
7814
5648