TextFSM规则优化需求:补全行首缺失的x字段继承值
TextFSM规则修改方案:缺失字段继承上一行值
问题场景
待解析的结构化文本:
x y z a b c ------ ----------- ------------------ ------------ --------------- ------------ 4000 4000 No ID Hun0/0/12 1.1.1.1 0 4001 No ID Hun0/0/12 1.1.1.1 0
原TextFSM规则:
Value x((\d+)?) Value y(\w+) Value z(No ID|[\w\./:]+) Value a([\w/\.]+) Value b([\d\./:]+) Value c(\d+) Start ^${x}\s+${y}\s+${z}\s+(${a}\s+)?${b}\s+${c} -> Record
当前解析输出:
['4000', '4000', 'No ID', 'Hun0/0/12', '1.1.1.1', '0'] ['', '4001', 'No ID', 'Hun0/0/12', '1.1.1.1', '0']
期望解析输出:
['4000', '4000', 'No ID', 'Hun0/0/12', '1.1.1.1', '0'] ['4000', '4001', 'No ID', 'Hun0/0/12', '1.1.1.1', '0']
需求:修改规则让第二行缺失的x字段继承上一行的"4000"值,且所有输出为字符串类型。
修改后的TextFSM规则
Value Filldown x((\d+)?) Value y(\w+) Value z(No ID|[\w\./:]+) Value a([\w/\.]+) Value b([\d\./:]+) Value c(\d+) Start ^(?:${x}\s+)?${y}\s+${z}\s+${a}\s+${b}\s+${c} -> Record
规则说明
- Filldown属性:给
x字段添加Filldown标记,TextFSM会自动将上一行有效的x值填充到当前行缺失的x字段中,解决空值继承问题。 - 匹配规则优化:用
(?:${x}\s+)?将x字段的匹配设为可选,既可以匹配有x值的首行,也能匹配以空格开头、缺失x值的第二行。 - 字符串类型保证:所有字段的正则表达式匹配结果均为字符串,无需额外转换,满足输出要求。
内容的提问来源于stack exchange,提问作者bell
相关产品推荐
相关产品推荐

