0

这是 cisco 命令的输出SWEs-elmPCI-A-01#show cdp neighbors

Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
                  S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone,
                  D - Remote, C - CVTA, M - Two-port Mac Relay

Device ID        Local Intrfce     Holdtme    Capability  Platform  Port ID
SWEx-elmPCI-A-02.lssh.com
                 Gig 2/0/1         137             R S I  WS-C3750X Gig 1/0/1
SWEx-elmPCI-A-02.lssh.com
                 Gig 2/0/1         138             R S I  WS-C3750X Gig 1/0/1

SWEa-elmPCI-02   Gig 1/0/4         169               T    AIR-LAP12 Gig 0
SWEa-elmPCI-01   Gig 1/0/9         170               T    AIR-LAP11 Gig 0

我怎样才能得到只包含行SWEx-elmPCI-A-02.lssh.com及其详细信息的行Gig 2/0/1 137 R S I WS-C3750X Gig 1/0/1

Gig 2/0/1 137 R S I WS-C3750X Gig 1/0/1 注意: andGig 2/0/1 138 R S I WS-C3750X Gig 1/0/1S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone, and之前有空格D - Remote, C - CVTA, M - Two-port Mac Relay

我可以使用 expect 或 ciso 正则表达式。我正在使用 expect 脚本在 cisco 上执行一些任务,所以我也可以在那里使用一些命令(如包含、排除)或在我的预期代码中。我只需要搜索 SWEx 及其对应的像 Gig 1/0/4 这样的条目,以便我可以将 Gig 和 1/0/4 放入某个变量中,并将其用于每个 SWEx.. 行

4

1 回答 1

1

像下面这样的东西应该可以工作:

/^(SWEx-elmPCI-A-02\.lssh\.com)\s+(.*?)\s{2,}(\d+)\s+(.*?)\s{2,}([^\s]+)\s+(.*?)$/gsm

将创建 6 个组:

  1. 设备ID
  2. 本地接口
  3. 保持时间
  4. 能力
  5. 平台
  6. 端口号

演示


火柴

比赛 1

  1. SWEx-elmPCI-A-02.lssh.com
  2. Gig 2/0/1
  3. 137
  4. R S I
  5. WS-C3750X
  6. Gig 1/0/1

比赛 2

  1. SWEx-elmPCI-A-02.lssh.com
  2. Gig 2/0/1
  3. 138
  4. R S I
  5. WS-C3750X
  6. Gig 1/0/1
于 2013-03-08T14:22:13.473 回答