如何grep之间的任何内容;CommonName….流:";使用TCL regexp?

如何grep之间的任何内容;CommonName….流:";使用TCL regexp?,tcl,expect,Tcl,Expect,如何grep“CommonName…Flow:”之间的任何内容。我已经写了上面的脚本。但它不起作用。我无法处理$line变量中“*.daily和motion”之间的空格 输出应为: *.dailymotion.com DigiCert高保证CA-3 请帮我说说你的想法 谢谢 Balu p.您可以简单地使用这是一个通配符来匹配任何字符,除非您应该通过添加?使其变为惰性: set line { Aug 07 18:12:00 2014: %DATAPLANE-5-: Unrecognized Ser

如何grep“CommonName…Flow:”之间的任何内容。我已经写了上面的脚本。但它不起作用。我无法处理$line变量中“*.daily和motion”之间的空格

输出应为:

*.dailymotion.com

DigiCert高保证CA-3

请帮我说说你的想法

谢谢


Balu p.

您可以简单地使用
这是一个通配符来匹配任何字符,除非您应该通过添加
使其变为惰性:

set line {
Aug 07 18:12:00 2014: %DATAPLANE-5-: Unrecognized Server Cert CommonName *.daily

motion.com. Flow: 0x87078500.
Aug 07 18:12:00 2014: %DATAPLANE-5-: Unrecognized Server Cert CommonName DigiCer

t High Assurance CA-3. Flow: 0x87078500.
}


if {![regexp {CommonName ([a-zA-Z0-9\.]*) Flow:} $line junk one]} {
error "invalid parsing"
}
puts "$one"
除了现在,您的行被拆分为多行,因此您可能需要替换换行符:

[regexp {CommonName (.*?) Flow:} $line - one]
将为您提供不带换行符的变量
$one


regsub -all {[\r\n]} $one "" one
set line {
    Aug 07 18:12:00 2014: %DATAPLANE-5-: Unrecognized Server Cert CommonName *.daily

    motion.com. Flow: 0x87078500.
    Aug 07 18:12:00 2014: %DATAPLANE-5-: Unrecognized Server Cert CommonName DigiCer

    t High Assurance CA-3. Flow: 0x87078500.
}


if {![regexp {CommonName (.*?) Flow:} $line - one]} {
    error "invalid parsing"
}
regsub -all {[\r\n]} $one "" one
puts "$one"