我正在使用 jq
命令在JSON文件中替换对应的"键"的"值"。在以下代码段中,我必须替换与JSON对象中的键k
相对应的v
的值。
jq --arg flag "$node"
--arg temp $v
'(.[$flag]|.['$k'])|=$temp' properties.json > tempprop.json
问题是,如果已经存在一个值,那么我需要将一个空字符串作为值传递。但是jq
解析器正在抛出异常说
jq: error: properties/0 is not defined at <top-level>, line 1:
properties.json
所以我不知道其他方法来解决这个问题,感谢任何帮助。
谢谢。
如果 v
是一个空字符串,则需要引用其扩展。您也应该通过变量传递$k
的值,而不是尝试将其插入。
jq --arg flag "$node"
--arg temp "$v"
--arg k1 "$k"
'(.[$flag]|.[$k1])|=$temp' properties.json > tempprop.json
否则,空的$v
"消失"的未引用的扩展,jq
将过滤器视为该 --arg
选项的第二个参数,而properties.json
将CC_11解释为过滤器。