【发布时间】:2020-02-26 19:14:35
【问题描述】:
我正在尝试调整以下 sn-p:
echo '{"a":{"value":"b"}, "c":{"value":"d"}}' \
| jq -r '. as $in | keys[] | [$in[.].value | tostring + " 1"] | @tsv'
b 1
d 1
输出:
b 1
b 2
d 1
d 2
【问题讨论】:
我正在尝试调整以下 sn-p:
echo '{"a":{"value":"b"}, "c":{"value":"d"}}' \
| jq -r '. as $in | keys[] | [$in[.].value | tostring + " 1"] | @tsv'
b 1
d 1
输出:
b 1
b 2
d 1
d 2
【问题讨论】:
以下改编会产生所需的输出:
echo '{"a":{"value":"b"}, "c":{"value":"d"}}' |
jq -r '
def addindex(start;lessthan):
range(start;lessthan) as $i | "\(.) \($i)";
. as $in
| keys[]
| $in[.].value
| addindex(1;3)'
请注意,keys 在排序后发出键名,而 keys_unsorted 保留排序。
【讨论】:
. as $in | keys[] | $in[.].value 简化为recurse|scalars。是否建议这样做?至少对于没有父级标量的给定输入?
keys,而不是 keys_unsorted。