Chinaunix首页 | 论坛 | 博客
  • 博客访问: 265843
  • 博文数量: 54
  • 博客积分: 35
  • 博客等级: 民兵
  • 技术积分: 729
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-09 10:35
文章分类

全部博文(54)

文章存档

2014年(37)

2013年(17)

分类: LINUX

2014-01-16 00:30:59

处理前:
pear    mouse107
pear    mouse123
pear    mouse109
pear    mouse125
apple   cat123
pear    dog105
pear    dog101
apple   cat12
pear    dog104
apple   cat108
pear    dog11
apple   cat125
apple   cat106
pear    mouse108
pear    mouse106
apple   cat107
pear    dog103
apple   cat109

处理后:
apple: cat12,cat106-109,cat123,cat125
pear: dog11,dog101,dog103-105
pear: mouse106-109,mouse123,mouse125


点击(此处)折叠或打开

  1. #!/bin/awk -f
  2. {
  3.         a=gensub(/([^0-9]+).*/,"\\1",1,$2);
  4.         b=gensub(/[^0-9]+(.*)/,"\\1",1,$2);
  5.         c=sprintf("%s%10d",a,b);
  6.         d[$1"\t"c]=b;
  7. }
  8. END{
  9.         for(i=0;i++<asorti(d,e);){
  10.                 split(e[i],f);
  11.                 if(!g)printf "%s: ",f[1];
  12.                 if(g&&g!=f[1]f[2]){
  13.                         gsub(/-[^,]+-[^0-9]+/,"-",h);
  14.                         sub(/.$/,"",h);
  15.                         printf "%s\n%s: ",h,f[1];
  16.                         h="";
  17.                 }
  18.                 h=d[e[i+1]]-d[e[i]]==1?h""f[2]d[e[i]]"-":h""f[2]d[e[i]]",";
  19.                 g=f[1]f[2];
  20.          }
  21.         gsub(/-[^,]+-[^0-9]+/,"-",h);
  22.         sub(/,[^,]+,$/,"",h);
  23.         print h;
  24. }


阅读(1126) | 评论(0) | 转发(1) |
0

上一篇:排序合并(一)

下一篇:排序合并(三)

给主人留下些什么吧!~~