0

这就是我使用 sed 所做的,但我需要使用 tcl 或期望正则表达式

  sed -n '/VLAN Name/,/VLAN Type/p' | sed 's/[[:blank:]]\+/\n/g' | sed -e '/^$/d' -e 's/,$//g'

在两个单词之间打印行 VLAN Name 和 VLAN Type 将空格转换为换行符删除空白行

我如何使用 tcl 或期望实现它。

或者我可以做

set val [eval exec "sed -n '/VLAN Name/,/VLAN Type/p' | sed 's/[[:blank:]]\+/\n/g' | sed -e '/^$/d' -e 's/,$//g'" ] < expect_out(buffer)
4

1 回答 1

2
set p false
set vals {}
foreach line [split $expect_out(buffer) \n] {
    if {[string match {*VLAN Type*} $line]} {
        set p false
    }
    if {$p} {
        foreach word [regexp -all -inline {\S+} $line] {
            lappend vals [string trimright $word ,]
        }
    }
    if {[string match {*VLAN Name*} $line]} {
        set p true
    }
}

puts $vals
于 2013-03-13T13:19:14.910 回答