json - 使用 jq 就地修改 json 中的键值

标签 json bash shell jq

我有一个 json,我想在其中修改一个特定的值,但终端总是显示带有修改后的值的 json,但它实际上并没有改变特定文件中的值。示例 json:

{
   name: 'abcd',
   age: 30,
   address: 'abc'
}

我想更改文件本身的地址值,但到目前为止我一直无法这样做。我尝试使用:

jq '.address = "abcde"' test.json

但它没有用。有什么建议吗?

最佳答案

使用临时文件;这就是任何声称可以进行就地编辑的程序正在做的事情。

tmp=$(mktemp)
jq '.address = "abcde"' test.json > "$tmp" && mv "$tmp" test.json

如果地址不是硬编码的,则通过 jq 参数传递正确的地址:

address=abcde
jq --arg a "$address" '.address = $a' test.json > "$tmp" && mv "$tmp" test.json

关于json - 使用 jq 就地修改 json 中的键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42716734/

相关文章:

android - 使用 Picasso 在第二个 Volley JSON 请求后将图像加载到 RecyclerView 中?

使用 pwd 的 Bash 脚本尴尬

bash - 从脚本运行时避免 gpg-agent 出现问题 - gpg2

linux - tail -f OR less +F 如何高亮新行

C UNIX Shell execvp 回显引号

linux - AWK 根据其他列的 if else 写入新列

c# - 为什么 JsonSerializer 给空?

javascript - Angular ng-repeat 不迭代 json

json - 如何从 Wikipedia JSON 响应中获取 "extract"键的值

python - 如何根据条件将 csv 文件合并到单个文件并将文件名添加为列?