如何在多个数组中保留数字组并使用awk打印最大值?

时间:2014-06-10 22:13:40

标签: awk

我有一列数字,每组用空白行分隔。

5    
6
10   
4

3    
4

34  
5435
545
543
3
3

0 
0
4343

现在我想从每组中找到最大值(在空行之间)并进行进一步的操作。我该怎么做?

3 个答案:

答案 0 :(得分:2)

这应该可以解决问题:

$ awk '{n=n>$1?n:$1}/^$/{print n;n=""}END{print n}' file
10
4
5435
4343

您只需使用进一步操作的任何内容更改print n语句。

答案 1 :(得分:0)

使用GNU awk

你可以在段落模式下工作

awk -v RS= '{x=-inf; n=split($0, a, "\n"); 
for(i=0; i<=n; ++i)x=a[i]>x?a[i]:x; print x}' file
10
4
5435
4343

答案 2 :(得分:0)

awk -v RS= -F'\n' '{
    min = max = $1
    for (i=2;i<=NF;i++) {
        min = ($i < min ? $i : min)
        max = ($i > max ? $i : max)
    }
    print min, max
} ' file
4 10
3 4
3 5435
0 4343