免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2621 | 回复: 8

[文本处理] ===完成,感谢===求一个脚本,从特定字符后取字段,再写入指定的列 [复制链接]

论坛徽章:
8
双鱼座
日期:2014-07-30 09:28:14辰龙
日期:2014-08-22 14:14:43水瓶座
日期:2014-12-02 15:36:392015年亚洲杯之朝鲜
日期:2015-02-06 09:28:592015亚冠之全北现代
日期:2015-09-10 14:40:18青铜圣斗士
日期:2015-11-18 09:22:56黄金圣斗士
日期:2015-11-26 09:17:2615-16赛季CBA联赛之新疆
日期:2016-08-15 17:00:22
发表于 2016-03-11 13:17 |显示全部楼层
本帖最后由 20032007 于 2016-03-14 14:51 编辑

我有一个文本,格式如下:
  1. PLG1  UWI: X13                       
  2. PLG2  Common: X16                                                                             
  3. PLG3  Measr.Dssss    TVDDssss  TVDSSDssss     X-Offset     Y-Offset

  4. PLG1  UWI: X17                       
  5. PLG2  Common: X17                                                                             
  6. PLG3  Measr.Dssss    TVDDssss  TVDSSDssss     X-Offset     Y-Offset
  7. PLG4        0.0000       0.0000     536.1000       0.0000       0.0000
  8. PLG4        0.1250       0.1250     535.9750       0.0000       0.0000
  9. PLG4        0.2500       0.2500     535.8500       0.0000       0.0000

  10. PLG1  UWI: X23                       
  11. PLG2  Common: X23                                                                             
  12. PLG3  Measr.Dssss    TVDDssss  TVDSSDssss     X-Offset     Y-Offset

  13. PLG1  UWI: X35                       
  14. PLG2  Common: X35                                                                             
  15. PLG3  Measr.Dssss    TVDDssss  TVDSSDssss     X-Offset     Y-Offset

  16. PLG1  UWI: X55                       
  17. PLG2  Common: X55                                                                             
  18. PLG3  Measr.Dssss    TVDDssss  TVDSSDssss     X-Offset     Y-Offset
  19. PLG4        0.5000       0.5000     535.6000       0.0000       0.0000
  20. PLG4        0.6250       0.6250     535.4750       0.0000       0.0000
  21. PLG4        2.5000       3.5000     535.6000       0.0000       0.0000
  22. PLG4        5.6250       6.6250     535.4750       0.0000       0.0000
复制代码
我想把有PLG4的行都留下,这个简单,但是,还需要把有PLG4的行中,把PLG4替换成他的Common后的字符:
  1. PLG3  Measr.Dssss    TVDDssss  TVDSSDssss     X-Offset     Y-Offset
  2. X17        0.0000       0.0000     536.1000       0.0000       0.0000
  3. X17        0.1250       0.1250     535.9750       0.0000       0.0000
  4. X17        0.2500       0.2500     535.8500       0.0000       0.0000
  5. X55        0.5000       0.5000     535.6000       0.0000       0.0000
  6. X55        0.6250       0.6250     535.4750       0.0000       0.0000
  7. X55        2.5000       3.5000     535.6000       0.0000       0.0000
  8. X55        5.6250       6.6250     535.4750       0.0000       0.0000
复制代码
求一个能用的方法,谢谢

论坛徽章:
54
2015亚冠之德黑兰石油
日期:2015-07-07 13:00:1615-16赛季CBA联赛之深圳
日期:2016-03-31 09:03:5415-16赛季CBA联赛之辽宁
日期:2016-05-09 20:38:15程序设计版块每日发帖之星
日期:2016-05-12 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-13 15:19:4715-16赛季CBA联赛之福建
日期:2016-05-15 20:24:34每日论坛发贴之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之吉林
日期:2016-05-26 11:49:4715-16赛季CBA联赛之广东
日期:2016-05-26 13:49:18极客徽章
日期:2016-12-07 14:05:2315-16赛季CBA联赛之广夏
日期:2016-12-20 17:33:532017金鸡报晓
日期:2017-01-10 15:19:56
发表于 2016-03-11 13:27 |显示全部楼层
  1. sed -nr '/Common/{x};/^PLG4/{G;s/([^ ]+)(.*)\n(.*: *)([^ ]+)/\4\2/;P}'
复制代码
  1. awk '/Common/{a=$NF}/^PLG4/{$1=a;print}'
复制代码

评分

参与人数 1信誉积分 +10 收起 理由
20032007 + 10 谢谢

查看全部评分

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2016-03-11 13:46 |显示全部楼层
本帖最后由 jason680 于 2016-03-11 13:47 编辑

回复 1# 20032007

$ awk '/PLG3/&&!H++{print}/Common:/{c=$3}$1=="PLG4"&&$1=c' FILE | column -t
PLG3  Measr.Dssss  TVDDssss  TVDSSDssss  X-Offset  Y-Offset
X17   0.0000       0.0000    536.1000    0.0000    0.0000
X17   0.1250       0.1250    535.9750    0.0000    0.0000
X17   0.2500       0.2500    535.8500    0.0000    0.0000
X55   0.5000       0.5000    535.6000    0.0000    0.0000
X55   0.6250       0.6250    535.4750    0.0000    0.0000
X55   2.5000       3.5000    535.6000    0.0000    0.0000
X55   5.6250       6.6250    535.4750    0.0000    0.0000

   

评分

参与人数 1信誉积分 +10 收起 理由
20032007 + 10 谢谢

查看全部评分

论坛徽章:
28
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之深圳
日期:2016-12-01 10:34:0415-16赛季CBA联赛之新疆
日期:2016-12-07 10:24:2915-16赛季CBA联赛之同曦
日期:2016-12-15 12:06:43CU十四周年纪念徽章
日期:2016-12-18 13:03:4415-16赛季CBA联赛之吉林
日期:2017-01-03 15:52:2515-16赛季CBA联赛之辽宁
日期:2017-01-04 14:58:2415-16赛季CBA联赛之辽宁
日期:2017-01-15 09:42:512016科比退役纪念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16赛季CBA联赛之上海
日期:2017-03-18 10:14:5415-16赛季CBA联赛之青岛
日期:2017-03-18 22:00:44
发表于 2016-03-11 17:10 |显示全部楼层
  1. sed -nr '/.*Common: /{s///;h;n;0,/^PLG3/p;n;:a;/^PLG4/{G;s/(\S+)(.*)\n(.*)/\3\2/p;n;ba}}'|column -t
复制代码

评分

参与人数 1信誉积分 +10 收起 理由
20032007 + 10 谢谢

查看全部评分

论坛徽章:
8
双鱼座
日期:2014-07-30 09:28:14辰龙
日期:2014-08-22 14:14:43水瓶座
日期:2014-12-02 15:36:392015年亚洲杯之朝鲜
日期:2015-02-06 09:28:592015亚冠之全北现代
日期:2015-09-10 14:40:18青铜圣斗士
日期:2015-11-18 09:22:56黄金圣斗士
日期:2015-11-26 09:17:2615-16赛季CBA联赛之新疆
日期:2016-08-15 17:00:22
发表于 2016-03-11 17:21 |显示全部楼层
先谢谢各位,晚上试一下,sed和awk太恐怖了。。。。

论坛徽章:
2
luobin
日期:2016-06-17 17:46:36lufei
日期:2016-06-17 17:49:16
发表于 2016-03-12 02:06 |显示全部楼层
上面两位的代码我没看懂~忧桑啊

论坛徽章:
8
双鱼座
日期:2014-07-30 09:28:14辰龙
日期:2014-08-22 14:14:43水瓶座
日期:2014-12-02 15:36:392015年亚洲杯之朝鲜
日期:2015-02-06 09:28:592015亚冠之全北现代
日期:2015-09-10 14:40:18青铜圣斗士
日期:2015-11-18 09:22:56黄金圣斗士
日期:2015-11-26 09:17:2615-16赛季CBA联赛之新疆
日期:2016-08-15 17:00:22
发表于 2016-03-13 10:31 |显示全部楼层
hz_oracle 发表于 2016-03-12 02:06
上面两位的代码我没看懂~忧桑啊


我暂时也没看懂,家里没有linux环境,等周一到办公室再仔细学习学习

论坛徽章:
0
发表于 2016-03-13 23:25 |显示全部楼层
求对sed方法的解释,不懂啊!!!!!

论坛徽章:
8
双鱼座
日期:2014-07-30 09:28:14辰龙
日期:2014-08-22 14:14:43水瓶座
日期:2014-12-02 15:36:392015年亚洲杯之朝鲜
日期:2015-02-06 09:28:592015亚冠之全北现代
日期:2015-09-10 14:40:18青铜圣斗士
日期:2015-11-18 09:22:56黄金圣斗士
日期:2015-11-26 09:17:2615-16赛季CBA联赛之新疆
日期:2016-08-15 17:00:22
发表于 2016-03-14 14:50 |显示全部楼层
在群里高手的点拨下,终于看懂了第一个和第二个,再次感谢几位高手帮助
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP