当前位置: 首页 > 面试题库 >

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

申屠项明
2023-03-14
问题内容

我有一个想要修改特定值的json,但是终端总是显示带有修改后值的json,但实际上并不会更改特定文件中的值。样本json:

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

我想更改文件本身中的address的值,但到目前为止,我一直无法更改。我尝试使用:

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

但这没用。有什么建议?


问题答案:

AFAIK
jq不支持就地编辑,因此您必须先重定向到一个临时文件,然后再用它替换原始文件,或者使用spongemoreutils包中的实用程序,如下所示:

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

还有其他“重定向到相同文件”的技术,例如,将输出保存在变量中,例如“ Unix&Linux
StackExchange”是一个很好的起点,如果您想了解更多信息。



 类似资料:
  • 既然每行中的signalName字段都在动态变化,那么如何在Nifi中实现这一点呢?

  • 问题内容: 我试图用来构造一个哈希值,其中键名来自变量。像这样: 但是,这不起作用,并出现以下错误: 问题答案: 使用括号可以尽早评估:

  • 如何获取密钥名称,如下所示:

  • 问题内容: 我试图从bash中的字符串创建一个json对象。字符串如下。 输出来自docker stats命令,我的最终目标是将自定义指标发布到AWS CloudWatch。我想将此字符串格式化为json。 我以前使用过jq命令,似乎在这种情况下应该可以正常工作,但是我还没有想出一个好的解决方案。除了使用sed或awk对变量名进行硬编码和索引编制之外。然后从头开始创建一个json。任何建议,将不胜

  • 问题内容: 上面的命令仅输出以下值: 我如何像下面这样获取键名: 问题答案: 您可以使用: 更新: 要使用这些键创建一个BASH数组: 使用BASH 4+: 在较旧的BASH上,您可以执行以下操作: 然后打印:

  • 问题内容: 我试图从bash中的字符串创建一个json对象。字符串如下。 输出来自docker stats命令,我的最终目标是将自定义指标发布到AWS CloudWatch。我想将此字符串格式化为json。 我以前使用过jq命令,似乎在这种情况下应该可以正常工作,但是我还没有能够提出一个好的解决方案。除了使用sed或awk对变量名进行硬编码和索引编制以外。然后从头开始创建一个json。任何建议,将