2017-12-19 12 views
0

JMESPath jphttps://github.com/jmespath/jp)ユーティリティを使用してフィルタを適用しようとしています。 私の目標は、状態が「追加」で、特定のデバイスID(例:0000debf17cff54b)が除外されているフローのみを持つことです。 cat test | ./jp '[][?id=="of:00002259146f7743" && state=="ADDED"]' をが、結果は[]JMESPpath:ネストされた属性によるフィルタリング

[ 
    { 
    "flow": [ 
     { 
     "ethType": "0x86dd", 
     "type": "ETH_TYPE" 
     }, 
     { 
     "protocol": 58, 
     "type": "IP_PROTO" 
     }, 
     { 
     "icmpv6Type": 135, 
     "type": "ICMPV6_TYPE" 
     } 
    ], 
    "id": "of:00001aced404664b", 
    "state": "ADDED" 
    }, 
    { 
    "flow": [ 
     { 
     "ethType": "0x86dd", 
     "type": "ETH_TYPE" 
     }, 
     { 
     "protocol": 58, 
     "type": "IP_PROTO" 
     }, 
     { 
     "icmpv6Type": 136, 
     "type": "ICMPV6_TYPE" 
     } 
    ], 
    "id": "of:0000debf17cff54b", 
    "state": "ADDED" 
    } 
] 

答えて

1

最初の[]、[?id=='of:0000debf17cff54b' && state=='ADDED']正常に動作します使用する必要はありません:

私はこのような何かをしようとしています。

最初の[]を使用すると、idまたはstateキーが含まれていない配列全体が得られます。

+0

はい、正しいです。しかし、実際の原因は、文字列に対して一重引用符を使用する必要があるようです。そして、フィルタ式全体を二重引用符で囲みます。 – KWubbufetowicz

関連する問題