【问题标题】:How to modify a key's value in a JSON file from command line如何从命令行修改 JSON 文件中的键值
【发布时间】:2017-04-08 09:14:46
【问题描述】:

是否可以从命令行更改 JSON 文件中 keyvalue

例如,在 package.json 中:

改变

{
    ...
    ...
    "something": "something",
    "name": "idan" 
    ...
}

{
    ...
    ...
    "something": "something",
    "name": "adar" 
    ...
}

【问题讨论】:

    标签: json shell command-line


    【解决方案1】:

    实现它的一种方法是使用"json" npm package,例如:

    json -I -f package.json -e "this.name='adar'"
    

    另一种方法是使用jq CLI,例如:

    mv package.json temp.json
    jq -r '.name |= "adar"' temp.json > package.json
    rm temp.json
    

    【讨论】:

    • 为什么这两个动作?
    • 移动和重定向是个好主意,因为替代方法是重定向到原始文件,如果使用 jq 解析文件出错,您将丢失原始文件。
    • jq -r '.name |= "adar"' package.json |海绵 package.json “海绵”在“moreutils”包中,必须先安装。
    • 如果键名带有点,如何替换值?例如user.password?
    【解决方案2】:

    使用sde CLI 实用程序,您可以

    sde name adar package.json
    

    【讨论】:

      【解决方案3】:

      :

      $ xidel -s --in-place package.json -e '($json).name:="adar"'
      
      $ xidel -s --in-place package.json -e 'map:put($json,"name","adar")'
      
      $ xidel -s --in-place package.json -e 'map:merge(($json,{"name":"adar"}),{"duplicates":"use-last"})'
      

      【讨论】:

        【解决方案4】:

        另一种方法是在终端中打开文件本身:

        pico filename.json
        

        编辑它然后保存然后退出。

        检查是否进行了正确的更改:

        cat filename.json
        

        【讨论】:

        • 老兄,他的意思是编程。当然你可以手动编辑文件。
        猜你喜欢
        • 2023-03-23
        • 2020-09-07
        • 1970-01-01
        • 1970-01-01
        • 2015-09-23
        • 2013-04-21
        • 2023-04-09
        • 2018-11-19
        • 2013-07-24
        相关资源
        最近更新 更多