免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: minzyyl
打印 上一主题 下一主题

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

论坛徽章:
2
摩羯座
日期:2014-11-03 15:28:56卯兔
日期:2015-01-04 17:20:51
11 [报告]
发表于 2014-09-12 17:10 |只看该作者
本帖最后由 bulletmarquis 于 2014-09-12 17:11 编辑

回复 6# minzyyl


    把a.txt中从VIAS开始到END VIAS的所有内容覆盖到b.txt文件中从VIAS开始到END VIAS,然后把所有ROW和GCELLGRID开头的行删除,ROW和ROW行之间的;也要删除,结果保存在c.txt文件中,ab文件不变。

   表示理解不能。。。给一个期望的c.txt文本,让我们参考一下吧=。=

论坛徽章:
0
12 [报告]
发表于 2014-09-12 17:39 |只看该作者
回复 9# Herowinter


    哈哈,各位,是我细节上没有描述清楚。不过你写的已经够用了,谢谢啦

论坛徽章:
0
13 [报告]
发表于 2014-09-15 12:44 |只看该作者
回复 5# Herowinter


   

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
noShow: Event not found.


你好,运行后提示错误noShow: Event not found.

论坛徽章:
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
14 [报告]
发表于 2014-09-15 13:30 |只看该作者
回复 13# minzyyl

目测不是bash gawk?

论坛徽章:
0
15 [报告]
发表于 2014-09-16 16:03 |只看该作者
回复 14# Herowinter

什么意思啊?

以前写过一个其他功能的可以工作,如下:
    awk '/ROW/,/VIAS/{if($0!~/VIAS/)next;}{if($0~/^DIEAREA/) print "DIEAREA ( 0 0 ) ( 0 2136250 )\n     ( 2272600 2136250 ) ( 2272600 2702100 )\n     ( 3331550 2702100 ) ( 3331550 0 ) ;";else print $0}' test1.txt>test2.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
16 [报告]
发表于 2014-09-16 17:23 |只看该作者
回复 15# minzyyl

说一下你的操作系统和shell,还有awk版本吧.
我这边测试的环境RedHat6.2 bash gawk3.1.7.

论坛徽章:
0
17 [报告]
发表于 2014-09-17 13:59 |只看该作者
回复 16# Herowinter


    你好,suse11,csh,GNU Awk 3.1.3

论坛徽章:
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
18 [报告]
发表于 2014-09-17 14:35 |只看该作者
本帖最后由 Herowinter 于 2014-09-17 14:38 编辑

回复 17# minzyyl

csh主要是取反操作!noShow有点问题,我改了下.应该可以了.
  1. lnx-suse11-x64  zzz> 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/){if(noShow==0)noShow=1;else noShow=0;next}else if($0~/^GCELLGRID/)next;else if($0~/^VIAS/)noShow=1;else if($0~/^END VIAS/){noShow=0;print s;next}}{if(noShow==0)print}' a.txt b.txt
  2. *****************
  3. start
  4. bbb
  5. ;
  6. ...
  7. ...
  8. ...
  9. VIAS 1088 ...;
  10. ...
  11. abc
  12. ...
  13. END VIAS
  14. ...
  15. ****************
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP