jq 手册中的 truncate_stream 示例需要解释

Explanation needed for truncate_stream example in jq manual

本人学习jq手册并在truncate_stream中屏蔽实例如下:

$ echo '1' | jq -c '[ 1 |truncate_stream([[0],1],[[1,0],2],[[1,0]],[[1]])]'
[[[0],2],[[0]]]

有人可以详细解释这个例子吗?

感谢您对基本问题的关注。

干杯。

首先,手册有点误导,因为显示的输入值 ("Input 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]

N | truncate_stream(STREAM)的效果 其中N为非负整数就是去掉每个path的前N个元素 理解路径 == [] 中的任何项目都将被删除。

因此,从每个路径中删除第一项会产生:

[[],1],  [[0],2], [[0]], [[]]

然后这变成:

[[0],2], [[0]]

Q.E.D.