数字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的内容。

  • 6
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值