免费注册 查看新帖 |

Chinaunix

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

[文本处理] 提取信息,替换并且打印 [复制链接]

论坛徽章:
1
狮子座
日期:2015-01-07 16:40:55
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2018-07-05 17:37 |只看该作者 |倒序浏览
本帖最后由 南武水寿 于 2018-07-05 17:43 编辑

请教大家:
原始脚本:
current_instance {core}
insert_buffer [get_pins {hehe/A}]   BUFX2 -new_net_names {NET1} -new_cell_names {BUF1} -location {3604 122} -orientation FS
insert_buffer [get_pins {nono/A}]   BUFX2 -new_net_names {NET2} -new_cell_names {BUF2} -location {3605 123} -orientation FS
size_cell {FE1} {INVX1}
set_cell_location -coordinates {2841 1305} -orientation S [get_cells {FE1}]
current
_instance
......
然后每段都是current_instance开头和结尾的循环下去 (正确显示请参见附件 图片11,原始文本总共6行:
current_instance, insert_buffer,insert_buffer,size_cell,set_cell_location,current_instance

希望输出格式: (要求抓取每段中有颜色的内容抓出来,重新组织,打印成如下内容(总共三行))
AddRepeater -term {core/hehe/A} -cell BUFX2 -hinstGuide core -name BUF1 -loc {3604 122} -bufOrient FS
AddRepeater -term {core/nono/A} -cell BUFX2 -hinstGuide core -name BUF2 -loc {3605 123} -bufOrient FS
ChangeCell -inst core/FE1 -cell INVX1 -loc {2841 1305} -orient S

主要是不知道怎么抓出{}里面的内容,与core关键字组合起来: 文本格式请参见附件图片11
谢谢!





11.PNG (64.5 KB, 下载次数: 29)

显示问题

显示问题

论坛徽章:
1
狮子座
日期:2015-01-07 16:40:55
2 [报告]
发表于 2018-07-05 19:58 |只看该作者
琢磨了一下,自己写了个复杂的:
awk '$1~/current_instance/&&NF>1{gsub("{","",$2);gsub("}","",$2);a=$2} $1~/insert_buffer/{gsub("{","",$3);gsub("}","",$3);gsub("]","",$3);b=$3; c=$4; gsub("{","",$;gsub("}","",$;d=$8; e=$10; d=$11 ; print a"/"b}'

论坛徽章:
1
狮子座
日期:2015-01-07 16:40:55
3 [报告]
发表于 2018-07-05 19:59 |只看该作者
琢磨了一下,自己写了个复杂的:
awk '$1~/current_instance/&&NF>1{gsub("{","",$2);gsub("}","",$2);a=$2} $1~/insert_buffer/{gsub("{","",$3);gsub("}","",$3);gsub("]","",$3);b=$3; c=$4; gsub("{","",$;gsub("}","",$;d=$8; e=$10; d=$11 ; print a"/"b}'
大概这个思路

论坛徽章:
1
狮子座
日期:2015-01-07 16:40:55
4 [报告]
发表于 2018-07-05 19:59 |只看该作者
琢磨了一下,自己写了个复杂的:
awk '$1~/current_instance/&&NF>1{gsub("{","",$2);gsub("}","",$2);a=$2} $1~/insert_buffer/{gsub("{","",$3);gsub("}","",$3);gsub("]","",$3);b=$3; c=$4; gsub("{","",$;gsub("}","",$;d=$8; e=$10; d=$11 ; print a"/"b}'
大概这个思路

论坛徽章:
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 [报告]
发表于 2018-07-06 12:13 |只看该作者
回复 1# 南武水寿


  1. awk '/current_instance {/{split($0,t,"[{}]");a=t[2]}/insert_buffer/{split($0,t,"[{}]");b1=t[2];b2=$4;b3=t[6];b4=t[8];printf("AddRepeater -term {%s/%s} -cell %s -hinstGuide %s -name %s -loc {%s} -bufOrient FS\n",a,b1,b2,a,b3,b4)}/size_cell {/{split($0,t,"[{}]");c1=t[2];c2=t[4]}/set_cell_location/{split($0,t,"[{}]");c3=t[2];c4=t[4];printf("ChangeCell -inst %s/%s -cell %s -loc {%s} -orient S\n",a,c4,c2,c3)}' file
复制代码

论坛徽章:
4
15-16赛季CBA联赛之青岛
日期:2018-07-09 14:17:2815-16赛季CBA联赛之八一
日期:2018-08-06 15:30:0515-16赛季CBA联赛之广东
日期:2018-08-09 09:11:2115-16赛季CBA联赛之佛山
日期:2019-02-14 09:26:31
6 [报告]
发表于 2018-07-06 12:42 |只看该作者
本帖最后由 christmas1102 于 2018-07-06 12:44 编辑
  1. #!/bin/bash
  2. set -- $(grep -Po '(?<=\{|\s)((?!NET|S)\w+((\pP|\s)\w+)?)(?=\}|\s)' 原文本)
  3. echo "AddRepeater -term {$1/$2} -cell $3 -hinstGuide $1 -name $4 -loc {$5 $6} -bufOrient FS
  4. AddRepeater -term {$1/$7} -cell $8 -hinstGuide $1 -name $9 -loc {${10} ${11}} -bufOrient FS
  5. ChangeCell -inst $1/${12} -cell ${13} -loc {${14} ${15}} -orient S"
复制代码

论坛徽章:
0
7 [报告]
发表于 2018-07-06 15:03 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
8 [报告]
发表于 2018-07-07 10:24 |只看该作者
# [ /home/soio/1bs/awks ] {2018-07-07 10:22:18}
: 1530930138:0;➜  sed 's/insert_buffer \[get_pins /AddRepeater -term /g;s/{hehe\/A}/{core\/hehe\/A}/g;s/{nono\/A}/{core\/nono\/A}/g;s/\]   / -cell /g;s/ \-new_net_names {NET[1|2]} -new_cell_names / -hinstGuide core -name /g;s/\({\)\(BUF[1|2]\)\(}\)/\2/g;s/-location/-loc/g;s/-orientation/-bufOrient/g;s/set_cell_location -coordinates/ChangeCell -inst core\/FE1 -cell INVX1 -loc/g;s/-bufOrient S \[get_cells {FE1}\]/-orient S/g;/^size_cell {.*}$/d;/^current_instance/d;s/core/\x1b[01;31m&\x1b[0m/g;s/BUFX[0-9]\|INVX1/\x1b[01;32m&\x1b[0m/g;s/BUF[0-9]/\x1b[01;34m&\x1b[0m/g;s/{[0-9][0-9]* [0-9][0-9]*}/\x1b[01;33m&\x1b[0m/g;s/FEI\|hehe\/A\|nono\/A/\x1b[01;35m&\x1b[0m/g' 1.col.kwa
AddRepeater -term {core/hehe/A} -cell BUFX2 -hinstGuide core -name BUF1 -loc {3604 122} -bufOrient FS
AddRepeater -term {core/nono/A} -cell BUFX2 -hinstGuide core -name BUF2 -loc {3605 123} -bufOrient FS
ChangeCell -inst core/FE1 -cell INVX1 -loc {2841 1305} -orient S

#--#
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP