免费注册 查看新帖 |

Chinaunix

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

[文本处理] 文本处理_如何实现某列两个数字间相差多少就插入多少空行 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2019-02-20 10:38 |只看该作者 |倒序浏览
a.txt
1 1006 + 0 2 CHH CCC U L L L L L
1 1007 + 0 2 CHH CCT U L L L L L
1 1008 + 0 2 CHH CTA U L L L L L
1 1013 + 0 2 CHH CCC U L L L L L
1 1014 + 0 2 CHH CCT U L L L L L
1 1015 + 0 2 CHH CTA U L L L L L
1 1020 + 0 2 CHH CCC U L L L L L
1 1021 + 0 2 CHH CCT U L L L L L
1 1022 + 0 2 CHH CTA U L L L L L
1 1027 + 0 2 CHH CCC U L L L L L
1 1028 + 0 2 CHH CCT U L L L L L
1 1029 + 1 2 CHH CTA U L L L L U
如果相邻两行第二列的数字不连续,则在这两行之间添加行,添加的行数等于两列数字的差,得到的结果文件:
1 1006 + 0 2 CHH CCC U L L L L L
1 1007 + 0 2 CHH CCT U L L L L L
1 1008 + 0 2 CHH CTA U L L L L L
   1009
   1010
   1011
   1012
1 1013 + 0 2 CHH CCC U L L L L L
1 1014 + 0 2 CHH CCT U L L L L L
1 1015 + 0 2 CHH CTA U L L L L L
   1016
   1017
   1018
   1019
1 1020 + 0 2 CHH CCC U L L L L L
1 1021 + 0 2 CHH CCT U L L L L L
1 1022 + 0 2 CHH CTA U L L L L L
   1023
   1024
   1025
   1026
1 1027 + 0 2 CHH CCC U L L L L L
1 1028 + 0 2 CHH CCT U L L L L L
1 1029 + 1 2 CHH CTA U L L L L U

论坛徽章:
0
2 [报告]
发表于 2019-02-20 11:04 |只看该作者
  1. $ awk 'NR>1{do {first=$1; gsub(/./," ",first); count++; if ($2!=count) print first" "count} while ($2>count)}  NR==1{count=$2; first=$1; gsub(/./, " ", first)} 1' a.txt
  2. 1 1006 + 0 2 CHH CCC U L L L L L
  3. 1 1007 + 0 2 CHH CCT U L L L L L
  4. 1 1008 + 0 2 CHH CTA U L L L L L
  5.   1009
  6.   1010
  7.   1011
  8.   1012
  9. 1 1013 + 0 2 CHH CCC U L L L L L
  10. 1 1014 + 0 2 CHH CCT U L L L L L
  11. 1 1015 + 0 2 CHH CTA U L L L L L
  12.   1016
  13.   1017
  14.   1018
  15.   1019
  16. 1 1020 + 0 2 CHH CCC U L L L L L
  17. 1 1021 + 0 2 CHH CCT U L L L L L
  18. 1 1022 + 0 2 CHH CTA U L L L L L
  19.   1023
  20.   1024
  21.   1025
  22.   1026
  23. 1 1027 + 0 2 CHH CCC U L L L L L
  24. 1 1028 + 0 2 CHH CCT U L L L L L
  25. 1 1029 + 1 2 CHH CTA U L L L L U
复制代码

评分

参与人数 1信誉积分 +20 收起 理由
hechao7021 + 20 很给力!

查看全部评分

论坛徽章:
0
3 [报告]
发表于 2019-02-20 11:32 |只看该作者
回复 2# csccyab
非常感谢您的帮忙,太给力了

论坛徽章:
0
4 [报告]
发表于 2019-02-23 09:44 |只看该作者
回复 2# csccyab

大神,请问如果第一列遇到不同的值,则从头开始插入要怎么做呢?我这样改输不出结果:awk 'NR>1{do {first[NR]=$1; gsub(/./," ",first); count++; if ($2!=count&&first[NR]==first[NR-1]) print first" "count} while ($2>count)}  NR==1{count=$2; first[NR]=$1; gsub(/./, " ", first)} 1' a.txta.txt
1 1006 + 0 2 CHH CCC U L L L L L
1 1007 + 0 2 CHH CCT U L L L L L
1 1008 + 0 2 CHH CTA U L L L L L
1 1013 + 0 2 CHH CCC U L L L L L
2 1005 + 0 2 CHH CCT U L L L L L
2 1009 + 0 2 CHH CTA U L L L L L
2 1010 + 0 2 CHH CCC U L L L L L
2 1012 + 0 2 CHH CCT U L L L L L
3 1002 + 0 2 CHH CTA U L L L L L
3 1017 + 0 2 CHH CCC U L L L L L
3 1018 + 0 2 CHH CCT U L L L L L
3 1020 + 1 2 CHH CTA U L L L L U
变成:
1 1006 + 0 2 CHH CCC U L L L L L
1 1007 + 0 2 CHH CCT U L L L L L
1 1008 + 0 2 CHH CTA U L L L L L
   1009
   1010
   1011
   1012
1 1013 + 0 2 CHH CCC U L L L L L
2 1005 + 0 2 CHH CCT U L L L L L
   1006
   1007
   1008
2 1009 + 0 2 CHH CTA U L L L L L
2 1010 + 0 2 CHH CCC U L L L L L
   1011
2 1012 + 0 2 CHH CCT U L L L L L
3 1017 + 0 2 CHH CCC U L L L L L
3 1018 + 0 2 CHH CCT U L L L L L
   1019
3 1020 + 1 2 CHH CTA U L L L L U

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
5 [报告]
发表于 2019-02-23 12:50 |只看该作者
本帖最后由 wh7211 于 2019-02-23 12:54 编辑

回复 1# hechao7021

  1. cat 1
  2. 1 1006 + 0 2 CHH CCC U L L L L L
  3. 1 1007 + 0 2 CHH CCT U L L L L L
  4. 1 1008 + 0 2 CHH CTA U L L L L L
  5. 1 1013 + 0 2 CHH CCC U L L L L L
  6. 1 1014 + 0 2 CHH CCT U L L L L L
  7. 1 1015 + 0 2 CHH CTA U L L L L L
  8. 1 1020 + 0 2 CHH CCC U L L L L L
  9. 1 1021 + 0 2 CHH CCT U L L L L L
  10. 1 1022 + 0 2 CHH CTA U L L L L L
  11. 1 1027 + 0 2 CHH CCC U L L L L L
  12. 1 1028 + 0 2 CHH CCT U L L L L L
  13. 1 1029 + 1 2 CHH CTA U L L L L U

  14. awk '{b=a?$2-a:1;if(b>1){for(i=1;i<b;i++){printf("  %d\n",++a)}};a=$2}1' 1
  15. 1 1006 + 0 2 CHH CCC U L L L L L
  16. 1 1007 + 0 2 CHH CCT U L L L L L
  17. 1 1008 + 0 2 CHH CTA U L L L L L
  18.   1009
  19.   1010
  20.   1011
  21.   1012
  22. 1 1013 + 0 2 CHH CCC U L L L L L
  23. 1 1014 + 0 2 CHH CCT U L L L L L
  24. 1 1015 + 0 2 CHH CTA U L L L L L
  25.   1016
  26.   1017
  27.   1018
  28.   1019
  29. 1 1020 + 0 2 CHH CCC U L L L L L
  30. 1 1021 + 0 2 CHH CCT U L L L L L
  31. 1 1022 + 0 2 CHH CTA U L L L L L
  32.   1023
  33.   1024
  34.   1025
  35.   1026
  36. 1 1027 + 0 2 CHH CCC U L L L L L
  37. 1 1028 + 0 2 CHH CCT U L L L L L
  38. 1 1029 + 1 2 CHH CTA U L L L L U
复制代码

评分

参与人数 1信誉积分 +5 收起 理由
hechao7021 + 5

查看全部评分

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
6 [报告]
发表于 2019-02-23 14:20 |只看该作者
本帖最后由 wh7211 于 2019-02-23 14:21 编辑

回复 4# hechao7021

  1. cat 1
  2. 1 1006 + 0 2 CHH CCC U L L L L L
  3. 1 1007 + 0 2 CHH CCT U L L L L L
  4. 1 1008 + 0 2 CHH CTA U L L L L L
  5. 1 1013 + 0 2 CHH CCC U L L L L L
  6. 2 1005 + 0 2 CHH CCT U L L L L L
  7. 2 1009 + 0 2 CHH CTA U L L L L L
  8. 2 1010 + 0 2 CHH CCC U L L L L L
  9. 2 1012 + 0 2 CHH CCT U L L L L L
  10. 3 1002 + 0 2 CHH CTA U L L L L L
  11. 3 1017 + 0 2 CHH CCC U L L L L L
  12. 3 1018 + 0 2 CHH CCT U L L L L L
  13. 3 1020 + 1 2 CHH CTA U L L L L U

  14. awk '{b=a?$2-a:1;if(b>1){for(i=1;i<b;i++){printf("  %d\n",++a)}};a=$2}1' 1
  15. 1 1006 + 0 2 CHH CCC U L L L L L
  16. 1 1007 + 0 2 CHH CCT U L L L L L
  17. 1 1008 + 0 2 CHH CTA U L L L L L
  18.   1009
  19.   1010
  20.   1011
  21.   1012
  22. 1 1013 + 0 2 CHH CCC U L L L L L
  23. 2 1005 + 0 2 CHH CCT U L L L L L
  24.   1006
  25.   1007
  26.   1008
  27. 2 1009 + 0 2 CHH CTA U L L L L L
  28. 2 1010 + 0 2 CHH CCC U L L L L L
  29.   1011
  30. 2 1012 + 0 2 CHH CCT U L L L L L
  31. 3 1002 + 0 2 CHH CTA U L L L L L
  32.   1003
  33.   1004
  34.   1005
  35.   1006
  36.   1007
  37.   1008
  38.   1009
  39.   1010
  40.   1011
  41.   1012
  42.   1013
  43.   1014
  44.   1015
  45.   1016
  46. 3 1017 + 0 2 CHH CCC U L L L L L
  47. 3 1018 + 0 2 CHH CCT U L L L L L
  48.   1019
  49. 3 1020 + 1 2 CHH CTA U L L L L U
复制代码

论坛徽章:
0
7 [报告]
发表于 2019-02-23 14:43 |只看该作者
回复 6# wh7211
万分感谢,受教了

论坛徽章:
0
8 [报告]
发表于 2019-03-02 09:54 |只看该作者
awk '{b=a?$2-a:1;if(b>1&&$1==tep){for(i=1;i<b;i++){printf("  %d\n",++a)}};a=$2;tep=$1}1' 1
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP