5

当尝试更改数组中的单个元素时,我得到了Invalid path expression near attempt to access element- 但仅当从--rawInput.

例子:

# input: [ 1, 0 ]
. as $list | $list[0] = 30
# output: [ 30, 0 ]

但这不起作用:

# input: 1,0
split(",") | map(tonumber) as $list | $list[0] = 30
# Invalid path expression near attempt to access element 0 of [1,0]

有任何想法吗?

4

1 回答 1

6

由于以下原因,您的尝试失败:

请注意,赋值运算符的 LHS 是指.. 因此 $var.foo = 1不会按预期工作($var.foo在 中不是有效或有用的路径表达式.);改为使用$var | .foo = 1

jq 手册的分配部分

它可能只在您的第一个jq命令中起作用,因为$list.是相等的。

之后,您可以使用以下内容:

split(",") | map(tonumber) as $list | $list | .[0] = 30

或更简单地说,在您的情况下:

split(",") | map(tonumber) | .[0]=30
于 2019-12-13T14:39:59.630 回答