Azure CLIから取得したプレーンリストをフィルター処理しようとしていますが、リストを適切にフィルター処理するクエリを作成するのに苦労しています。私が達成しようとしていることをカプセル化する例は、リストをフィルタリングして、[1, 2, 3, 4, 5]
2より大きいすべての値を取得しようとすることです。
:JQを使用して、私はそうのようにこれを行うことができますecho "[1, 2, 3, 4, 5]" | jq "map(select(. > 2))"
与えます[3, 4, 5 ]
。問題は、参照する特定のキーがないと、私が知る限りJMESPathの「現在の要素」を示すことができないことに起因します。
JMESPathクエリを使用して、このような単純なリストをフィルタリングするにはどうすればよいですか?
これ@
は、フィルター式の一部として現在のノードトークンを使用して実行できます。1つの注意点は、JMESPathのリテラルをバッククォートで囲む必要があるということです。そうしないと、式が無効になります。配列から2より大きいすべての数値を取得するためのフィルターは次のとおりです。
[?@ > `2`]
数値以外のオブジェクトの配列の場合、フィルター式に組み込まれている関数のいずれかを、現在のノードトークンとともに使用し@
てフィルター処理できます。これにより、以下を含むすべての文字列が取得されますsubstring
。
[?contains(@, `substring`)]
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加