Chinaunix首页 | 论坛 | 博客
  • 博客访问: 207840
  • 博文数量: 87
  • 博客积分: 192
  • 博客等级: 入伍新兵
  • 技术积分: 455
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-14 07:44
文章分类

全部博文(87)

文章存档

2013年(1)

2012年(86)

分类:

2012-04-14 15:35:04

原文地址:awk之输出每列最大值 作者:zooyo

文本:
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
 
  1. 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清零。

阅读(1197) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~