Unix 如何使用jq将输入复制到输出?

Unix 如何使用jq将输入复制到输出?,unix,jq,Unix,Jq,我正在尝试改编以下片段: 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 addi

我正在尝试改编以下片段:

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\u unsorted
保留排序。

以下自适应生成所需的输出:

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\u unsorted
保留排序。

可以
。作为$in |键[]|$in[.]的值
可以减少为仅
递归|标量
。是否建议这样做?至少对于没有父级标量的给定输入?@Inian-我刚刚修改了给定的答案,因为不清楚真正需要什么,但请注意,Q使用
,而不是
键_unsorted
。可以
。作为$in |键[]|$in[.]的值
可以减少为仅
递归|标量
。是否建议这样做?至少对于没有父级标量的给定输入?@Inian-我刚刚修改了给定的答案,因为不清楚真正需要的是什么,但请注意,Q使用
键,而不是
键。