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

TextFSM重复正则值提取失败及ip命令输出解析求助

一、简单示例的错误原因与修正

错误根源

你的TextFSM模板存在两个核心问题:

  1. 规则匹配顺序问题:TextFSM对每一行按顺序检查规则,匹配到第一条后立即停止,不会执行后续规则。第二行3 4同时符合^${FIRST} ${SECOND}和^${THIRD} ${FORTH},但第一条规则先匹配,导致FIRST/SECOND被覆盖为3/4,第二条规则完全没机会触发。
  2. Record时机错误:第一行匹配后未触发状态转移或Record,第二行的覆盖值被最终记录,导致预期的THIRD/FORTH为空。

修正后的模板

若要将两行数据合并为一个Record,需用状态转移确保匹配顺序:

Value FIRST (\d+)
Value SECOND (\d+)
Value THIRD (\d+)
Value FORTH (\d+)

Start
  ^${FIRST} ${SECOND} -> NextState

NextState
  ^${THIRD} ${FORTH} -> Record

修正逻辑:第一行匹配后进入NextState,第二行只能匹配NextState下的规则,赋值THIRD/FORTH后触发Record,输出符合预期:

[
    {
        "FIRST": "1",
        "SECOND": "2",
        "THIRD": "3",
        "FORTH": "4"
    }
]

针对无法提取TX/RX统计值的问题,根据输出结构设计如下模板:

最终模板

Value INTERFACE (\S+)
Value RX_BYTES (\d+)
Value RX_PACKETS (\d+)
Value RX_ERRORS (\d+)
Value RX_DROPPED (\d+)
Value RX_OVERRUN (\d+)
Value RX_MCAST (\d+)
Value TX_BYTES (\d+)
Value TX_PACKETS (\d+)
Value TX_ERRORS (\d+)
Value TX_DROPPED (\d+)
Value TX_CARRIER (\d+)
Value TX_COLLSNS (\d+)

Start
  ^\d+: ${INTERFACE}@?.* -> RX_State

RX_State
  ^\s*RX: bytes  packets  errors  dropped overrun mcast -> RX_Values
  ^.* -> Continue  # 跳过无关行(如MAC地址行)

RX_Values
  ^\s*${RX_BYTES}\s+${RX_PACKETS}\s+${RX_ERRORS}\s+${RX_DROPPED}\s+${RX_OVERRUN}\s+${RX_MCAST} -> TX_State
  ^.* -> Continue  # 跳过RX错误统计行

TX_State
  ^\s*TX: bytes  packets  errors  dropped carrier collsns -> TX_Values
  ^.* -> Continue  # 跳过中间无关行

TX_Values
  ^\s*${TX_BYTES}\s+${TX_PACKETS}\s+${TX_ERRORS}\s+${TX_DROPPED}\s+${TX_CARRIER}\s+${TX_COLLSNS} -> Record
  ^.* -> Continue  # 跳过TX错误统计行

模板核心逻辑

  1. 状态转移:通过Start → RX_State → RX_Values → TX_State → TX_Values的顺序,严格匹配接口信息→RX表头→RX数值→TX表头→TX数值的输出结构。
  2. 跳过无关行:用Continue动作忽略MAC地址、错误统计等不需要的行。
  3. 精准匹配:所有数值用(\d+)提取,接口名用(\S+)匹配非空白字符,确保数据准确。

测试输出

针对你提供的输入,输出结果如下:

[
    {
        "INTERFACE": "eth0@if15",
        "RX_BYTES": "567635797",
        "RX_PACKETS": "6154603",
        "RX_ERRORS": "0",
        "RX_DROPPED": "18089",
        "RX_OVERRUN": "0",
        "RX_MCAST": "0",
        "TX_BYTES": "41624009",
        "TX_PACKETS": "340091",
        "TX_ERRORS": "0",
        "TX_DROPPED": "0",
        "TX_CARRIER": "0",
        "TX_COLLSNS": "0"
    }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 22:06:03