Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1095772
  • 博文数量: 186
  • 博客积分: 4939
  • 博客等级: 上校
  • 技术积分: 2075
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-08 17:15
文章分类

全部博文(186)

文章存档

2018年(1)

2017年(3)

2016年(11)

2015年(42)

2014年(21)

2013年(9)

2012年(18)

2011年(46)

2010年(35)

分类:

2010-11-10 16:08:44

省份    城市    区号    1350    1351      1352       1353    1354    1355    1356    1357    1358    1359
上海    上海    21      160-199 210-219 400-499                         400-499         550-599
天津    天津    883                   "960-962,998"                                        "830-833,842-844"
要求结果如下(举例而已,不是实际数据):
 
1350200                天津
1350201                天津
1350202                天津
1350203                天津
1350204                天津
1350205                天津
实际上是个体力活,比较麻烦不难。这是黑哥给的答案,大量的sub,gsub来规范格式:
BEGIN {
    FS = "\"?[ ]\"?";
}
NR == 1 {
    for(i = 4;i <= NF;i++) h[i] = $i;
    next;
}
{
    for(i = 4;i <= NF;i++)
        if ( $i ) {
            n = split($i,r,",");
            for ( j = 1;j <= n;j++)
                if (r[j]~/-/) {
                    s = r[j];
                    sub(/-.*/,"",s);
                    e = r[j];
                    sub(/.*-/,"",e);
                    for(k = s;k <= e;k++)
                        printf("%s%03d\t%s\n", h[i],k,$2);
                }
                else
                    printf("%s%03d\t%s\n", h[i],r[j],$2);
        }
}
阅读(946) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~