代码之家  ›  专栏  ›  技术社区  ›  Brandon Spendlove

TextFSM-如何匹配彼此相关的单独行?

  •  0
  • Brandon Spendlove  · 技术社区  · 4 年前

    我不太清楚我的问题该怎么说,所以我会尽我所能举个例子。

          -------------------------------------------------
            Port 0/1, port index, 4 devices total, 3 online
          -------------------------------------------------
    
          ID        Info            Last Seen
    
          -------------------------------------------------
    
          0         111         1m 3s ago
          1         222         never seen
          2         333         30s ago
          14        444         2m 12s ago
    
          -------------------------------------------------
    
          ID        Type            Distance
    
          -------------------------------------------------
    
          0         aaa         322m
          1         bbb         -
          2         ccc         932m
          14        ddd         194m
          -------------------------------------------------
    
          -------------------------------------------------
            Port 0/2, port index, 4 devices total, 4 online
          -------------------------------------------------
    
          ID        Info            Last Seen
    
          -------------------------------------------------
    
          23        555         3m 2s ago
          24        666         23m 4s ago
          51        777         23s ago
          52        888         14m 22s ago
    
          -------------------------------------------------
    
          ID        Type            Distance
    
          -------------------------------------------------
    
          23        eeee            23m
          24        ffff            -
          51        gggg            442m
          52        hhhh            167m
          -------------------------------------------------
    

    我不确定如何匹配出现在每个端口下的两个表,同时将其作为textfsm解析器中的单个条目返回。我得到的最远的结果是用这个模板得到最后一个条目(888和hhhh):

    Value Filldown PORT (\d+\/\d+)
    Value Required ID (\d+)
    Value INFO (\w+)
    Value LAST_SEEN (.*)
    Value TYPE (\w+)
    Value DISTANCE (\S+)
    
    Start
      ^\s+Port\s+${PORT}.* -> Record
      ^\s+ID.*Last\s+Seen -> Table1
    
    Table1
      ^\s+${ID}\s+${INFO}\s+${LAST_SEEN}
      ^\s+ID.*Distance -> Table2
    
    Table2
      ^\s+${ID}\s+${TYPE}\s+${DISTANCE}
      ^\s+-+
      ^\s+Port\s+${PORT} -> Start
    

    我得到的数据:

    [
        {
            "DISTANCE": "167m",
            "ID": "52",
            "INFO": "888",
            "LAST_SEEN": "14m 22s ago",
            "PORT": "0/2",
            "TYPE": "hhhh"
        }
    ]
    

    我试过改变一些东西,但似乎不知道我应该在哪里寻找,以确保每个条目都得到记录。。。

    如果有人能给我指出正确的方向,我将不胜感激。

    0 回复  |  直到 4 年前
    推荐文章