我研究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.