如何使用带有选项(如或条件)的 TextFSM 解析文本

how to parse text using TextFSM with option (like or condiiton)

我需要从 switch/router 中解析出 'show env all',但是有不同的文本结构。

开关 A :

FAN is OK
SYSTEM TEMPERATURE is OK
System Temperature Value: 38 Degree Celsius
System Temperature State: GREEN
Yellow Threshold : 58 Degree Celsius
Red Threshold    : 68 Degree Celsius

开关 B :

FAN is OK
TEMPERATURE is OK
Temperature Value: 42 Degree Celsius
Temperature State: GREEN
Yellow Threshold : 54 Degree Celsius
Red Threshold    : 64 Degree Celsius

不同的是'System'。我需要创建一个可用于开关 A 和 B 的 TextFSM 模板。因此,我不需要为每个开关创建 2 个 TextFSM 模板。

我当前的模板:

Value FAN (\S*) 
Value TEMPERATURE (\S*) 
Value TEMPERATURE_VALUE (\S*) 
Value TEMPERATURE_STATE (\S*)
Value YELLOW_THRESHOLD (\S*)
Value RED_THRESHOLD (\S*) 
Value POWER (\S*)
Value RPS (\S*)

Start 
  ^FAN is ${FAN}
  ^TEMPERATURE is ${TEMPERATURE}
  ^Temperature Value: ${TEMPERATURE_VALUE}
  ^Temperature State: ${TEMPERATURE_STATE}
  ^Yellow Threshold : ${YELLOW_THRESHOLD}
  ^Red Threshold    : ${RED_THRESHOLD}

*仅适用于交换机 B

我应该添加 [System] Temperature Value 还是什么?

谢谢:)

您可以添加 system 作为可选

^(?:SYSTEM )?TEMPERATURE is (.*)$

参见 DEMO 和解释