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

时间:2020-02-26 19:14:35

标签: 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

1 个答案:

答案 0 :(得分: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会保留顺序。