免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2561 | 回复: 17

[文本处理] 2个文件部分行替换 [复制链接]

论坛徽章:
0
发表于 2014-09-12 10:56 |显示全部楼层
本帖最后由 minzyyl 于 2014-09-12 17:50 编辑

a.txt内容:

*****************
start
aaa
ROW ROW_1409 ...
;
ROW ROW_1503 ...
;
ROW ROW_1503 ...
...
;
ROW ROW_1503 ...
...
GCELLGRID Y 332 ...;
GCELLGRID Y 344 ...;
...
GCELLGRID Y 354 ...;
...
VIAS 1088 ...;
...
abc
...
END VIAS
...
****************

b.txt内容:

*****************
start
bbb
ROW ROW_1409 ...
;
ROW ROW_1503 ...
;
ROW ROW_1503 ...
...
;
ROW ROW_1503 ...
...
GCELLGRID Y 332 ...;
GCELLGRID Y 344 ...;
...
GCELLGRID Y 354 ...;
...
VIAS 1089 ...;
...
cde
...
END VIAS
...
****************

目标文件c.txt:
*****************
start
bbb
...
...
VIAS 1088 ...;
...
abc
...
END VIAS
...
****************

任务:把b.txt文件中的ROW行ROW行之间的“;”都删除,GCELLGRID开头的行也都删除,再把a.txt的VIAS到END VIAS行替换到b.txt对应的位置,得到c.txt。
前面写的不是很清楚,所以重新编辑下,先谢谢大家的帮忙啦

论坛徽章:
21
申猴
日期:2014-10-10 15:56:39射手座
日期:2014-10-10 15:57:18黑曼巴
日期:2018-05-14 11:05:122016科比退役纪念章
日期:2018-05-14 11:05:0715-16赛季CBA联赛之北控
日期:2018-05-14 11:05:0015-16赛季CBA联赛之江苏
日期:2017-02-27 18:11:0715-16赛季CBA联赛之上海
日期:2018-08-15 09:48:5415-16赛季CBA联赛之佛山
日期:2018-07-20 17:14:23
发表于 2014-09-12 11:21 |显示全部楼层
本帖最后由 chengchow 于 2014-09-12 11:25 编辑

说了这么多,绕来绕去,就是将a内容的ROW-ROW删除,匹配GCELLGRID的删除
sed -e '/^ROW/,/^ROW/d' -e '/GCELLGRID/d' a
楼主这逻辑推理能力

论坛徽章:
7
亥猪
日期:2013-10-10 17:00:29辰龙
日期:2013-10-12 16:23:19卯兔
日期:2013-11-18 17:01:27金牛座
日期:2014-09-09 10:17:052015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之柏太阳神
日期:2015-09-25 13:56:42数据库技术版块每日发帖之星
日期:2016-08-06 06:20:00
发表于 2014-09-12 11:56 |显示全部楼层
回复 2# chengchow
哈哈。。我被绕进去了。


   

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
发表于 2014-09-12 11:59 |显示全部楼层
回复 3# li0924
+1



   

论坛徽章:
434
金牛座
日期: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
发表于 2014-09-12 12:05 |显示全部楼层
回复 1# minzyyl
  1. awk 'NR==FNR{if($0~/^VIAS/){s=$0;k=1;next};if(k){s=s"\n"$0};if($0~/^END VIAS/)k=0;next} {if($0~/^ROW/){noShow=!noShow;next}else if($0~/^GCELLGRID/)next;else if($0~/^VIAS/)noShow=1;else if($0~/^^END VIAS/){noShow=0;print s;next}}!noShow' a.txt b.txt
  2. *****************
  3. ...
  4. ...
  5. ;
  6. ...
  7. ...

  8. ...
  9. ...

  10. VIAS 1088 ...;
  11. ...
  12. a.txt
  13. END VIAS

  14. ...
  15. ****************
复制代码
  1. cat a.txt
  2. *****************
  3. ...
  4. ...
  5. ROW ROW_1409 ...
  6. ;
  7. ROW ROW_1503 ...
  8. ;
  9. ...
  10. ...

  11. GCELLGRID Y 332 ...;
  12. GCELLGRID Y 344 ...;
  13. ...
  14. ...

  15. VIAS 1088 ...;
  16. ...
  17. a.txt
  18. END VIAS

  19. ...
  20. ****************
复制代码
  1. cat b.txt
  2. *****************
  3. ...
  4. ...
  5. ROW ROW_1409 ...
  6. ;
  7. ROW ROW_1503 ...
  8. ;
  9. ...
  10. ...

  11. GCELLGRID Y 332 ...;
  12. GCELLGRID Y 344 ...;
  13. ...
  14. ...

  15. VIAS 1088 ...;
  16. ...
  17. b.txt
  18. END VIAS

  19. ...
  20. ****************
复制代码

论坛徽章:
0
发表于 2014-09-12 15:54 |显示全部楼层
回复 2# chengchow


    你的理解有误,没认真看我的帖子。

论坛徽章:
0
发表于 2014-09-12 15:55 |显示全部楼层
回复 5# Herowinter


    这个;能一起去掉吗?

论坛徽章:
3
丑牛
日期:2014-09-13 18:19:22摩羯座
日期:2014-10-10 17:43:02水瓶座
日期:2014-10-16 01:00:22
发表于 2014-09-12 16:19 |显示全部楼层
怎么没明白你的需求哪?。。。。。需求最好按条目写嗯,规范点儿

论坛徽章:
434
金牛座
日期: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
发表于 2014-09-12 17:07 |显示全部楼层
回复 7# minzyyl

凭什么去掉?你的原始文本这样的:
  1. ROW ROW_1409 ...
  2. ;
  3. ROW ROW_1503 ...
  4. ;
复制代码
这里有2行分号,按照你1楼描述的规则,只取掉两个ROW之间的分号,
第二个分号所以保留下来了,有其他规则请重新描述需求.
   

论坛徽章:
2
摩羯座
日期:2014-11-03 15:28:56卯兔
日期:2015-01-04 17:20:51
发表于 2014-09-12 17:08 |显示全部楼层
回复 6# minzyyl


    你这需求看起来很模糊啊,不要拿...来代替,建议把原意简化一下,然后写出原文本、目标文本,我们才好着手

   说实在的,花了几分钟也没完全看懂。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

基于案例的 SQL 优化实战训练营

讲师:中电福富特级专家梁敬彬,参与本次课程培训,你将收获:
1. 能编写出较为高效的 SQL;
2. 能解决70%以上的数据库常见优化问题;
3. 能得到老师提供的高效的相关工具和解决方案;
4. 能举一反三,收获不仅仅是 SQL 优化。
现在购票享受8.8折优惠!
----------------------------------------
优惠时间:2019年3月20日前

大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP