免费注册 查看新帖 |

Chinaunix

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

[文本处理] 请求高手关于补齐字段的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-06-11 17:19 |只看该作者 |倒序浏览
想补齐所有空的字段,并使用前一行的字段,方便后续的分析,感觉很困难
|title1 |title2 |title3 |title4 |title5 |title6
|PC     |1.0    |0      |1       |2      |3
|         |        |        |1.1    |2.1   |3.1
|         |        |       |1.2     |2.2   |3.2
|         |        |1      |2       |3       |4
|         |        |        |2.1    |3.1    |4.1
|         |2.0    |0      |1      |2      |3
|         |         |       |1.1    |2.1   |3.1
|         |         |       |1.2    |2.2   |3.2
|         |        |1      |2       |3       |4
|         |         |       |2.1    |3.1    |4.1
|mobile |1.0   |0     |1       |2      |3
|         |        |        |1.1    |2.1   |3.1
|         |        |       |1.2     |2.2   |3.2
|         |        |1      |2       |3       |4
|         |        |        |2.1    |3.1    |4.1
|         |2.0    |0      |1      |2      |3
|         |         |       |1.1    |2.1   |3.1
|         |         |       |1.2    |2.2   |3.2
|         |        |1      |2       |3       |4
|         |         |       |2.1    |3.1    |4.1

输出类似如下:
|title1 |title2 |title3 |title4 |title5 |title6
|PC     |1.0    |0      |1       |2      |3
|PC     |1.0    |0        |1.1    |2.1   |3.1
|PC     |1.0    |0       |1.2     |2.2   |3.2
|PC     |1.0    |1      |2       |3       |4
|PC     |1.0    |1        |2.1    |3.1    |4.1
|PC     |2.0    |0      |1      |2      |3
|PC     |2.0    |0       |1.1    |2.1   |3.1
|PC     |2.0    |0       |1.2    |2.2   |3.2
|PC     |2.0    |1      |2       |3       |4
|PC     |2.0    |1       |2.1    |3.1    |4.1
|mobile |1.0   |0     |1       |2      |3
|mobile |1.0    |0        |1.1    |2.1   |3.1
|mobile |1.0    |0       |1.2     |2.2   |3.2
|mobile |1.0    |1      |2       |3       |4
|mobile |1.0    |1        |2.1    |3.1    |4.1
|mobile |2.0    |0      |1      |2      |3
|mobile |2.0    |0       |1.1    |2.1   |3.1
|mobile |2.0    |0       |1.2    |2.2   |3.2
|mobile |2.0    |1      |2       |3       |4
|mobile |2.0    |1       |2.1    |3.1    |4.1

论坛徽章:
9
寅虎
日期:2013-12-02 12:49:22巨蟹座
日期:2014-07-18 18:13:34卯兔
日期:2014-07-25 14:43:08子鼠
日期:2014-07-26 10:10:51酉鸡
日期:2014-07-31 15:09:562015亚冠之本尤德科
日期:2015-05-19 09:27:382015亚冠之卡尔希纳萨夫
日期:2015-06-20 10:30:212015亚冠之阿尔纳斯尔
日期:2015-07-01 20:46:062015亚冠之城南
日期:2015-07-15 21:12:00
2 [报告]
发表于 2015-06-11 17:31 |只看该作者
  1. awk 'BEGIN{FS=OFS="|"}{for(i=1;i<=NF;i++){if($i~/^ +$/){$i=a[i]}else{a[i]=$i}}}1' test.txt
复制代码

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
3 [报告]
发表于 2015-06-11 17:38 |只看该作者
回复 1# joan8363
  1. awk 'BEGIN{FS=OFS="|"} NR>1{for(i=2;i<=NF;i++)if($i~/^[[:space:]]*$/)$i=a[i];else a[i]=$i}1' i
  2. |title1 |title2 |title3 |title4 |title5 |title6
  3. |PC     |1.0    |0      |1       |2      |3
  4. |PC     |1.0    |0      |1.1    |2.1   |3.1
  5. |PC     |1.0    |0      |1.2     |2.2   |3.2
  6. |PC     |1.0    |1      |2       |3       |4
  7. |PC     |1.0    |1      |2.1    |3.1    |4.1
  8. |PC     |2.0    |0      |1      |2      |3
  9. |PC     |2.0    |0      |1.1    |2.1   |3.1
  10. |PC     |2.0    |0      |1.2    |2.2   |3.2
  11. |PC     |2.0    |1      |2       |3       |4
  12. |PC     |2.0    |1      |2.1    |3.1    |4.1
  13. |mobile |1.0   |0     |1       |2      |3
  14. |mobile |1.0   |0     |1.1    |2.1   |3.1
  15. |mobile |1.0   |0     |1.2     |2.2   |3.2
  16. |mobile |1.0   |1      |2       |3       |4
  17. |mobile |1.0   |1      |2.1    |3.1    |4.1
  18. |mobile |2.0    |0      |1      |2      |3
  19. |mobile |2.0    |0      |1.1    |2.1   |3.1
  20. |mobile |2.0    |0      |1.2    |2.2   |3.2
  21. |mobile |2.0    |1      |2       |3       |4
  22. |mobile |2.0    |1      |2.1    |3.1    |4.1
复制代码

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
4 [报告]
发表于 2015-06-11 20:59 |只看该作者
本帖最后由 songyc_2015 于 2015-06-11 21:01 编辑

回复 1# joan8363
  1. awk -F\| '{for(i=2;i<=NF;i++){s=gensub(/ /,"","g",$i);a[i]=length(s)?$i:a[i];$i=length(s)?$i:a[i];}}1' OFS="|" file
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP