[英]Regexp Pattern Matching Tcl
I have data of the format file.txt 我有file.txt格式的数据
afsdfds/sfsd/sfdsf/VISA_CTS_ec0cbf000an2n06x5_G3B7I1/sfdfdvged/sdvdsfgv ec0cbf000an2n06x5
afsggggdfds/sfsd/sfdsf/VISA_CTS_ec0clb000an2n10x5_G3B7I1/sfdggggfdvged/sdvdsfgv ec0clb000an2n10x5
afsdfds/fdddo9045374857_234242/sfsd/sfdsf/VISA_CTS_ec0cilb000an2n16x5_G3B7I1/sfdfdvged/sdvdsfgv ec0cilb000an2n16x5
qweryt/visa_ec0ceb000an2n20x5_tyiuop/gfds_sfgds_/clock_VISA_CTS_ec0ceb000an2n20x5_G3B7I1/hjkhfjhfd/asdfasdf ec0ceb000an2n20x5
I am using in Tcl 我在Tcl中使用
package require fileutil
set filename file.txt
set pattern {ec0cbf|ec0clb|cb|ceb}
puts "[llength [fileutil::grep $pattern $filename]] occurances"
$tcl> 7 occurances
I want only the right most values from file.txt to be returned by my regexp and my final answer to be 3 occurances (ec0cbf000an2n06x5 ec0ceb000an2n20x5 ec0ceb000an2n20x5) ) instead of 7 as I am not detecting "cilb" 我只希望regexp返回file.txt中最正确的值,而我的最终答案是3次出现(ec0cbf000an2n06x5 ec0ceb000an2n20x5 ec0ceb000an2n20x5)),而不是7,因为我没有检测到“ cilb”
This file.txt is dynamic data` 这个file.txt是动态数据`
This can solve your problem: 这可以解决您的问题:
set a [open test.txt r]
set data [read $a]
set c [split $data "\n"]
set cnt 0
% foreach d $c {
if {[regexp {ec0cbf|ec0clb|cb|ceb} $d]} {
puts "[lindex $d end]"
incr cnt
}
}
puts $cnt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.