如何使用jq将对象数组转换为分隔的键值列表-输出特定的键值而不是数组索引



这与我之前的问题有关:如何使用jq将对象数组格式化为分隔的键值列表

我如何(一般地)使用jq将下面的输入文件转换为下面的输出文件?键"id"处的值唯一标识数组元素。输出文件的记录格式为:(value at key "id") | key | value.

如果我在前面的问题的解中添加awk,我可以做到这一点,但是在jq中我很难做到这一点。

输入文件:

[{"id": 11, "b": 100},
{"id": 12, "d": "fred", "e": 300}]

输出文件:

11|id|11
11|b|100
12|id|12
12|d|fred
12|e|300

下面是使用to_entries的解决方案,它将对象分解为键值对数组:

jq -r '.[] | .id as $id | to_entries[] | [$id,.key,.value] | join("|")'
11|id|11
11|b|100
12|id|12
12|d|fred
12|e|300

最新更新