我研究jq手册,并在truncate_stream示例中被阻止,如下所示:
$ echo '1' | jq -c '[ 1 |truncate_stream([[0],1],[[1,0],2],[[1,0]],[[1]])]'
[[[0],2],[[0]]]
有人可以详细解释该示例吗?
感谢您对基本问题的关注。
欢呼声。
首先,本手册在显示输入值(“输入1”)方面有些误导是无关紧要的。这可以在例如由于以下调用会产生相同的数组:
$ jq -n -c '[ 1 |truncate_stream([[0],1],[[1,0],2],[[1,0]],[[1]])]'
[[[0],2],[[0]]]
现在,了解我们如何从输入流中获得收益:
[[0],1], [[1,0],2], [[1,0]], [[1]]
到输出流:
[[0],2], [[0]]]
记住输入流中的每个数组都具有以下形式是很有帮助的
[path, value]
或其他形式
[path]
[C0的效果其中N为非负整数是要删除每个N | truncate_stream(STREAM)
的前N个元素了解到要删除其中路径== []的任何项目。
因此,从每个路径中删除第一项将产生:
path
然后变成:
[[],1], [[0],2], [[0]], [[]]
Q.E.D。