Regex Tcl/是否希望正则表达式实现sed类型的任务?

Regex Tcl/是否希望正则表达式实现sed类型的任务?,regex,sed,expect,Regex,Sed,Expect,这就是我使用sed所做的,但我需要使用tcl或expect regex来完成 sed -n '/VLAN Name/,/VLAN Type/p' | sed 's/[[:blank:]]\+/\n/g' | sed -e '/^$/d' -e 's/,$//g' 打印两个单词VLAN名称和VLAN类型之间的行 将空格转换为换行符 删除空行 我如何使用tcl或expect实现它 或者我能做什么 set val [eval exec "sed -n '/VLAN Name/,/VLAN Typ

这就是我使用sed所做的,但我需要使用tcl或expect regex来完成

  sed -n '/VLAN Name/,/VLAN Type/p' | sed 's/[[:blank:]]\+/\n/g' | sed -e '/^$/d' -e 's/,$//g'
打印两个单词VLAN名称和VLAN类型之间的行 将空格转换为换行符 删除空行

我如何使用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)
set val[eval exec“sed-n'/VLAN Name/,/VLAN Type/p'| sed's/[[:blank:]\+/\n/g'| sed-e'/^$/d'-e's/,$/g']
设置p为假
设置VAL{}
foreach行[split$expect\u out(缓冲区)\n]{
如果{[字符串匹配{*VLAN类型*}$line]}{
设p为假
}
如果{$p}{
foreach字[regexp-all-inline{\S+}$line]{
lappend VAL[字符串trimright$word,]
}
}
如果{[字符串匹配{*VLAN名称*}$line]}{
设置p为真
}
}
卖出$VAL

看起来是对的,不过一个完美的答案也应该有一些解释性的文字(或注释)。