免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 4772 | 回复: 25
打印 上一主题 下一主题

请教,有这样一个数据文件,怎么转化成符合要求的格式?谢谢  关闭 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-10-27 22:56 |只看该作者 |倒序浏览

  1. 2008H99H9
  2. 100-139
  3. 200-219
  4. 311,321,331,339
  5. 312,322,332,336
  6. 319,329
  7. 318,328
  8. 310,320,330
  9. 313,323
  10. 314,324
  11. 333-335
  12. 315,325,337-338
  13. 316,326
  14. 317,327
  15. 471
  16. 472
  17. 474
  18. 477
  19. 478
  20. 479
  21. 470
  22. 476
  23. 475

  24. 473

  25. 340-341,343,346,351
  26. 342,352
  27. 353
  28. 344,354
  29. 345,355
  30. 356
复制代码




现在需要把每行中“100-139”这种形式的转化成100,101,102,......,139
然后把第一行“2008H99H9”中第一个H前面的数字和下面每行中逗号分割的数字合并单列出来,比如,前4行处理完的结果是:


  1. 2008100
  2. 2008101
  3. 2008102
  4. 2008103
  5. 2008104
  6. 2008105
  7. 2008106
  8. ......
  9. 2008139
  10. 2008200
  11. 2008201
  12. 2008202
  13. ......
  14. 2008219
  15. 2008311
  16. 2008321
  17. 2008331
  18. 2008339

复制代码


这种规范的格式。空行要删除

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-10-27 23:34 |只看该作者

请教,有这样一个数据文件,怎么转化成符合要求的格式?谢谢

没看懂 吼吼

论坛徽章:
0
3 [报告]
发表于 2004-10-27 23:44 |只看该作者

请教,有这样一个数据文件,怎么转化成符合要求的格式?谢谢

老大 不会吧 我表达这么差?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2004-10-27 23:56 |只看该作者

请教,有这样一个数据文件,怎么转化成符合要求的格式?谢谢

要这样的结果?
2008100
2008101
......
......
2008479

论坛徽章:
0
5 [报告]
发表于 2004-10-28 00:40 |只看该作者

请教,有这样一个数据文件,怎么转化成符合要求的格式?谢谢

老大 就是用每行含有的数字 加上那个前缀 组合成一个新的数字单独生成一行

论坛徽章:
0
6 [报告]
发表于 2004-10-28 00:42 |只看该作者

请教,有这样一个数据文件,怎么转化成符合要求的格式?谢谢

不用排序 也不用管重复的数字,只要每个3位数字生成一个7位数字占一行就行了,这样说好理解吗  呵呵

论坛徽章:
0
7 [报告]
发表于 2004-10-28 00:45 |只看该作者

请教,有这样一个数据文件,怎么转化成符合要求的格式?谢谢

比如说一行是"315,325,337-338"
我需要处理完的结果是
2008315
2008325
2008337
2008338

每行都要这样处理但空行不要

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
8 [报告]
发表于 2004-10-28 01:02 |只看该作者

请教,有这样一个数据文件,怎么转化成符合要求的格式?谢谢


  1. head=$(cat file|awk 'NR==1{print substr($0,1,4)}')
  2. tr -s '\n'<file|awk 'NR>1{gsub(/,/,"\n");print}'|\
  3. while read i;do
  4.         if echo $i|grep -q '-';then
  5.                 a=${i%%-*};b=${i##*-} #用子串比较用cut效率好
  6.                 while((a<=b));do
  7.                         echo $head$a;((a+=1))
  8.                 done
  9.         else
  10.                 echo $head$i
  11.         fi
  12. #done|sort -n,需要的话
  13. done
复制代码

测试:
2008100
2008101
2008102
2008103
2008104
2008105
2008106
2008107
2008108
2008109
2008110
2008111
2008112
......
2008476
2008475
2008473
2008340
2008341
2008343
2008346
2008351
2008342
2008352
2008353
2008344
2008354
2008345
2008355
2008356

论坛徽章:
0
9 [报告]
发表于 2004-10-28 01:05 |只看该作者

请教,有这样一个数据文件,怎么转化成符合要求的格式?谢谢

老大 你太快了  偶像呀  我看看  谢谢!!

论坛徽章:
0
10 [报告]
发表于 2004-10-28 10:25 |只看该作者

请教,有这样一个数据文件,怎么转化成符合要求的格式?谢谢

1:H的前面位数不一定4位时
2:在文件中不只一个。。。H时

试试这个



nawk -F,  '$0{if($0~/H/){a=substr($0,1,index($0,"H"-1);next}if($0~/-/){split($0,b,"-";for(;b[1]<b[2];b[1]++)print a b[1];next}for(i=1;i<=NF;i++)print a $i}'  infile
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP