文本:
12 15 87 74 00 45
34 48 97 28 83 27
34 69 17 45 20 65
11 29 68 47 36 50
34 48 97 28 83 27
34 69 17 45 20 65
11 29 68 47 36 50
27 48 78 37 16 68
要求输出每列的最大值:
34 69 97 74 83 68
- awk '{for(i=1;i<=NF;i++)a[NR,i]=$i}END{for(j=1;j<=NF;j++){x=0;for(k=1;k<=NR;k++){x=a[k,j]>x?a[k,j]:x}printf x FS}print ""}' file
[解析]
思路是利用二维数组来解题,首先按照行与列的二维坐标把该文本的每个元素都放入数组a中,最后用2个for循环来比较每列的每个元素的值,把最大的值赋给x,然后输出x,记着下一列的时候x清零。
阅读(5688) | 评论(1) | 转发(1) |