jqに「現在」キーを表示

jqに「現在」キーを表示

たとえば、次のユーザー名辞書があります。

"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[] ]以下を使用してすべて取得できます。

おすすめ記事