Expect - 解析模式的所有出现并存储在变量中

Expect - 解析模式的所有出现并存储在变量中

我正在尝试从程序的输出中处理多个 mac 地址。输出格式如下 -

Device B0:CA:68:CF:88:54 dev1
Device DC:16:B2:AE:FB:8F dev2
Device B0:CA:68:CF:88:11 dev3
Device DC:16:B2:AE:FB:22 dev4

我想将 mac 地址及其名称存储在一个文件中 我想将 mac 地址存储在一个变量中并进一步处理。

我在 Expect 中遇到了困难。怎么做 ?请帮忙

下面的命令有效,但只给出单个 Mac -

expect -re "Device.*(\[0-9A-Z]\[0-9A-Z]:\[0-9A-Z]\[0-9A-Z]:\[0-9A-Z]\[0-9A-Z]:\[0-9A-Z]\[0-9A-Z]:\[0-9A-Z]\[0-9A-Z]:\[0-9A-Z]\[0-9A-Z])"

答案1

如果您不需要与该程序交互,您可以exec轻松地捕获输出:

set output [exec some_program]

set macs [lmap line [split $output \n] {lindex [split $line] 1}]

参考:执行,地图

如果程序需要交互,那么捕获输出就有点棘手。让我知道。

相关内容