You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用TextFSM匹配多列中含跨行内容的vPC输出文本

解决TextFSM匹配vPC输出中多列跨行内容的问题

针对你的vPC状态输出中Consistency、Reason和Active vlans字段存在跨行的情况,以下是调整后的TextFSM模板,可正确捕获所有跨行内容:

Value id (\d+)
Value port (\S+)
Value status (\S+)
Value Append consistency (\S+(?:\s+\S+)*)
Value Append reason (.+)
Value Append active_vlans ([\d,\-\s]+)

Start
  ^\s*Id\s*Port\s*Status\s*Consistency\s*Reason\s*Active\s*vlans -> BeginCapture

BeginCapture
  ^${id}\s+${port}\s+${status}\s+${consistency}\s+${reason}\s+${active_vlans} -> InEntry
  ^\s*$ -> Start

InEntry
  ^${id}\s+${port}\s+${status}\s+${consistency}\s+${reason}\s+${active_vlans} -> Record, BeginCapture
  ^\s+${consistency}\s+${reason} -> Continue
  ^\s+${reason} -> Continue
  ^\s+${active_vlans} -> Continue
  ^\s*$ -> Record, Start

关键调整说明:

  1. 字段定义优化:

    • 改用Append修饰符处理Consistency、Reason和Active vlans字段,确保跨行内容被追加到同一字段值中,而非作为多个独立值。
    • 调整正则表达式适配实际内容格式:
      • consistency:捕获空格分隔的单词(如"Not Applicable")
      • reason:捕获任意文本内容,支持多行拼接
      • active_vlans:捕获包含数字、逗号、连字符和空格的VLAN列表
  2. 状态逻辑优化:

    • BeginCapture状态专门处理vPC条目首行的捕获
    • InEntry状态处理当前条目的跨行内容:
      • 匹配同时包含Consistency和Reason续行的场景(如条目7的第二行)
      • 匹配仅包含Reason续行的场景(如条目19的后续行)
      • 匹配仅包含Active vlans续行的场景(如条目5的第二行)
    • 遇到新条目或空行时自动记录当前条目并重置状态,确保每个vPC条目被正确分隔

效果验证:

  • 条目7的Consistency字段会被捕获为Not Applicable,Reason字段为Consistency Check Not Performed
  • 条目19的Reason字段会完整拼接所有跨行文本
  • 条目5的Active vlans字段会合并为2002,2121, 1000

后续可根据需要对捕获结果进行简单的空格清理,但核心的跨行匹配逻辑已解决。

内容的提问来源于stack exchange,提问作者Amankumar Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 07:34:54