省份 城市 区号 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) |