我正在使用jq将json文档的文件转换为具有不同形状的json文档的文件。我需要输出文档具有连续的正ID。我可以访问一个等于所看到的换行符数量的变量吗?
gzcat input.gz | jq -r '"{\"id\":???, \"foo\":\(.foo)}"' > output
# can anything take the place of ??? to give 0..n?
答案 0 :(得分:2)
如果您的jq有input_line_number
,您可以使用它。这是一个说明它的作用的打字稿:
$ jq 'input_line_number'
"a"
1
"b"
2
(在上面,输入行后面紧跟输出行。)
同样,以下是foreach
和inputs
可以一起使用的方式:
$ jq -n 'foreach inputs as $line (0; .+1; "line \(.) is \($line)")'
"abc"
"line 1 is abc"
123
"line 2 is 123"
如果您的jq没有foreach
,那么您可能会发现reduce
足以满足您的需求:
$ jq -s -r 'reduce .[] as $line
( [0,""]; .[0]+=1 | .[1] += "line \(.[0]) is \($line)\n")
| .[1]'
输入:
"abc"
123
输出:
line 1 is abc
line 2 is 123