0

これは sed を使用して行っていることですが、tcl を使用して行うか、正規表現を期待する必要があります

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

VLAN 名と VLAN タイプの 2 つの単語の間の行を印刷する スペースを改行に変換する 空白行を削除する

Tclまたはexpectを使用してそれを達成するにはどうすればよいですか。

または私はできますか

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 に答える