如何使用JQ库中的bash中的空白替换角色



我正在使用 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解释为过滤器。

最新更新