在AWK中以自定义格式打印值

时间:2016-06-17 15:53:35

标签: bash shell awk text-processing gawk

如何对齐下面显示的最小值和最大值

程序

{
    for(i = 1; i <= NF; i++)
    {
    a[i] = $i;
    if (min[i]==""){  min[i]=$i;} #line1
    if (max[i]==""){  max[i]=$i;} #line2
    if ($i<min[i]) {  min[i]=$i;}     #line3
    if ($i>max[i]) {  max[i]=$i;}     #line4
    }
print $0;

}
END {
OFS="\n";
for(j = 1; j <= NF; j++)
        {   
        print min[j],max[j];        
        }
}

数据集

4 14 24 34
3 13 23 33 
1 11 21 31
2 12 22 32
5 15 25 35

当前输出

4 14 24 34
3 13 23 33 
1 11 21 31
2 12 22 32
5 15 25 35
1
5
11
15
21
25
31
35

我需要的输出

4 14 24 34
3 13 23 33 
1 11 21 31
2 12 22 32
5 15 25 35
1 11 21 31  ->   Min Values(for that field)
5 15 25 35  ->   Max Values(for that field)

1 个答案:

答案 0 :(得分:2)

你需要循环两次,一次为最小值,一次为最大值:

END {
    for(j = 1; j <= NF; j++) printf "%d ", min[j]
    print ""
    for(j = 1; j <= NF; j++) printf "%d ", max[j]
    print ""
}