ここで初心者のjqユーザーは、次のことに苦労しています。
次のjsonがあり、キーワードに基づいてキーをフィルタリングし、オブジェクト全体(キーだけでなく)または特定のキーと値のペアを出力する必要があります。JSONのネストされたオブジェクト構造に注意してください。これは意図的なものです。
{
"timers": {
"timerWithAKeywordAPlusBlah": {
"count": 1,
"max": 0,
"min": 0
},
"timerWithAKeywordB": {
"count": 2,
"max": 0
},
"timerWithAKeywordAPlusBlahBlah": {
"count": 2385,
"max": 2,
"min": 1
}
}
}
必要な出力:
"timerWithAKeywordAPlusBlah": {
"count": 1,
"max": 0,
"min": 0
},
"timerWithAKeywordAPlusBlahBlah": {
"count": 2385,
"max": 2,
"min": 1
}
私が試したこと:
キー名を印刷することはできますが、オブジェクト全体にアクセスする方法がわかりません。
cat timers.json| jq '.timers | keys[] | select(contains("KeywordA")) '
この応答では、出力を有効なJSONにする必要があると想定します。出力を他の形式にしたい場合は、いくつかの追加のフィルターを追加するだけです。
とにかく、トリックは次のように、キーではなくオブジェクトを選択することです。
.timers
| with_entries( select(.key|contains("KeywordA") ) )
(変更された)入力を使用すると、次のようになります。
{
"timerWithAKeywordAPlusBlah": {
"count": 1,
"max": 0,
"min": 0
},
"timerWithAKeywordAPlusBlahBlah": {
"count": 2385,
"max": 2,
"min": 1
}
}
その後、最終的に必要な詳細を抽出できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加