Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2968957
  • 博文数量: 272
  • 博客积分: 5544
  • 博客等级: 大校
  • 技术积分: 5496
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 00:48
个人简介

  每个人都要有一个骨灰级的爱好,不为金钱,而纯粹是为了在这个领域享受追寻真理的快乐。

文章分类

全部博文(272)

文章存档

2015年(2)

2014年(5)

2013年(25)

2012年(58)

2011年(182)

分类: LINUX

2012-11-26 15:20:07

cat file:
PIC aaa 12:00 23
PIC aaa 13:00 34
VOD bbb 02:15 55
VOD vds 03:22 65
VOD vds 04:22 40
VOD abs 05:22 30
DLL rft 15:10 22
IDD kjh 17:06 86
PIC hgf 12:45 30
PIC bbb 11:45 35

要求: 在第一列正序排列的基础上对第四列倒序排列





  1. awk '{a[$1"|"$4]=$0;b[$1];c[$4]}END{
  2. for(i=1;i<=asorti(b,bb);i++)
  3. for(j=asorti(c,cc);j>=1;j--)
  4. if(bb[i]"|"cc[j] in a)
  5. print a[bb[i]"|"cc[j]]
  6. }' file
[解析]
通过三个数组来保存各自需要的信息. 首先对数组b进行正序排序, 然后对数组c进行倒序排序, 然后判断这两个下标是否存在于数组a中, 存在然后输出.



  1. awk '{a[$1][$4]=$0}END{for(i=1;i<=asorti(a,b);i++)for(j=asorti(a[b[i]],c);j>=1;j--)print a[b[i]][c[j]]}' file
[解析]
这是awk 4.0支持的写法. "array of array" in gawk 4.0
 

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