たとえば、次のユーザー名辞書があります。
"userinfo": { "alice": { "key1": 1, "key2": 2}, "bob": { "key1": 11, "key2": 22}, ... }
ユーザー名といくつかの値を含むテーブルテキストを表示したいです。
alice 1 2
bob 11 22
ユーザー名を最初の列に入れるか、値を後の列にインポートするのは簡単ですが、同じコマンドからユーザー名とその下の値を取得する.info[]|[.key1,.key2]
方法はわかりません。何度も実行して出力を貼り付けるなどjq
愚かなことをしないように努力しています。jq
ベストアンサー1
これを行うには、次のコマンドを使用できます。
jq -r '.userinfo | to_entries[] | [.key, .value.key1, .value.key2] | @tsv'
最初にデータをentries
参照できるように変換し、次に目的の値にを生成し、最後に演算子を使用して出力list
に変換します。別の形式にしたい場合は、詳細をお読みください。tab-seperated-values
@tsv
ここ。
また、対応するフラグを使用して生出力を取得します。それ以外の場合は、その文字を-r
取得します。 :)"\t"
@さんのコメント0 石 0:不明な数のキー*がある場合は、[ .key, .value[] ]
以下を使用してすべて取得できます。