免费注册 查看新帖 |

Chinaunix

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

关于文件空行问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-04-04 14:21 |只看该作者 |倒序浏览
本帖最后由 linux65 于 2012-04-04 14:35 编辑

源文件:  将源文件中的空行填充上, 中间空行为相邻最近有数值行的差值 首尾的值和最边上的值一致  思考中..........



  1. 2

  2. 4

  3. 6
  4. 7
  5. 6
  6. 5
  7. 4

  8. 5

  9. 6

  10. 10

  11. 7

  12. 6




  13. 7
  14. 8
  15.   
  16.   
  17.   
复制代码
希望得到结果文件:
  1. 2
  2. 2
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. 7
  9. 6
  10. 5
  11. 4
  12. 4.5
  13. 5
  14. 5.5
  15. 6
  16. 8
  17. 10
  18. 9
  19. 7
  20. 6.5
  21. 6
  22. 6.2
  23. 6.4
  24. 6.6
  25. 6.8
  26. 7
  27. 8
  28. 8
  29. 8
  30. 8
复制代码

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
2 [报告]
发表于 2012-04-04 15:01 |只看该作者
回复 1# linux65
  1. awk -vt1=0 -vt2=0 '
  2. function p(a,b,c){
  3. t2=!a?$1:a;
  4. for(i=1;i<=c;i++){t2+=!a||!b?0:((b-a)/c);s=s RS t2};
  5. printf s;s=""}
  6. NF{p(t2=t1,t1=$1,NR-nr);nr=NR;}
  7. END{p(t2=t1,t1=$0,NR-nr)}'
复制代码

论坛徽章:
0
3 [报告]
发表于 2012-04-04 15:18 |只看该作者
回复 2# yinyuemi


  结果是对的 太精简了 以至于我还没看懂

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
4 [报告]
发表于 2012-04-04 15:31 |只看该作者
回复 3# linux65


书看的太少了

论坛徽章:
0
5 [报告]
发表于 2012-04-04 15:49 |只看该作者
回复 4# Shell_HAT


    你能看明白你解释一下

论坛徽章:
0
6 [报告]
发表于 2012-04-04 16:05 |只看该作者
回复 5# linux65


    没法给你解释,你没说你哪里没懂

论坛徽章:
0
7 [报告]
发表于 2012-04-04 16:25 |只看该作者
谁还能有其它的解法吗?

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
8 [报告]
发表于 2012-04-04 18:35 |只看该作者
回复 5# linux65


订机票和酒店吧,我过去当面讲。

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
9 [报告]
发表于 2012-04-04 18:58 |只看该作者
本帖最后由 ziyunfei 于 2012-04-04 19:05 编辑
  1. perl -0pe '
  2. s/ //g; #数据里有空格,删除掉成为真的空行
  3. s/^(?=\s+(\d+))/$1/;   #开头补数字
  4. s/(\d+)(\s+)$/$1$2$1/;    #结尾补数字
  5. s#(\d+)(\s{2,})(?=(\d+))(?{$a="$1\n";for(1..($len=length($2))-1){$a.=($1+($3-$1)*$_/$len)."\n"}})#$a#g    #执行替换
  6. ' file
复制代码

论坛徽章:
0
10 [报告]
发表于 2012-04-05 08:15 |只看该作者
回复 9# ziyunfei


    楼上朋友神勇! 你的我看懂了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP