数字ic后端使用TCL脚本语言正则表达式抓取提取文件报告txt中关键数据关键词小程序procedure

下面是我的文本文件的具体内容,文件名是:DTMF_CHIP_postCTS.summary

------------------------------------------------------------optDesign Final Summary                             
------------------------------------------------------------+--------------------+---------+---------+---------+
|     Setup mode     |   all   | reg2reg | default |
+--------------------+---------+---------+---------+
|           WNS (ns):|  0.158  |  2.609  |  0.158  |
|           TNS (ns):|  0.000  |  0.000  |  0.000  |
|    Violating Paths:|    0    |    0    |    0    |
|          All Paths:|   228   |   219   |    9    |
+--------------------+---------+---------+---------+

我要写一个tcl脚本来抓取文件中的WNS行里的reg2reg列和default列的值。

脚本如下:

set fp [open DTMF_CHIP_postCTS.summary r]
set content [read $fp]
regexp -line {.*WNS.*([0-9]\.[0-9]+).*([0-9]\.[0-9]+).*([0-9]\.[0-9]+)} $content a b c d
puts "WNS\nreg2reg:$c\ndefault:$d" 

运行结果如下:

WNS
reg2reg:2.609
default:0.158

解析:

我们首先需要新建一个文件,然后把脚本打上去,保存,我这里保存为script.tcl。

回到存放脚本的目录,在该目录下打开linux终端,输入:

tclsh script.tcl

就可以运行这个tcl脚本了。如果你的linux系统还没有tcl引擎,那自己装一个。

第一行,open是用来打开文件的

第二行,read是用来读取打开的文件内容并赋值给我自定义的content变量的。

第三行,regexp是正则表达式,格式可以参考:Tcl正则命令之regexp__荣耀之路_的博客-CSDN博客_regexp tcl

-line 多行匹配;

{ }里的就是匹配模式,这里可以简单地看成{ ( ) ( ) ( ) }的结构,记住这里面有三个小括号,表示三个单独的匹配模式;

$content 就是刚刚那个文件里的所有内容,现在是字符串的格式;

a b c d 是模式匹配的层级,这个名称是自己定的,a 是0级,也就是总的,满足大括号的匹配,b是1级,左数第一个小括号里面的模式,c、d一次类推。

第四行,我们要的数据在c和d的匹配模式中,所以最后打印c和d的内容。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部