编辑.json文件(使用Linux命令行添加新行)

new9mtju  于 2023-05-28  发布在  Linux
关注(0)|答案(3)|浏览(220)
{
"layerOrder": [
    "Layer1",
    "Layer2",
    "Layer3",
    "Layer4"
    ]
}

这是target.json,我需要在“Layer 1”之前添加“Layer 0”,通过Linux命令行。

{
"layerOrder": [
    "Layer0",
    "Layer1",
    "Layer2",
    "Layer3",
    "Layer4"
    ]
}

我该怎么做?
先谢谢你了!

ac1kyiln

ac1kyiln1#

如果你只是想完成你在问题中所陈述的工作,那么这将起作用:

$ head json -n 2; echo -e "    \"Layer0\","; sed -n '3,$p' json > newjson
dw1jzc5e

dw1jzc5e2#

sed -ie 's/"layerOrder": \[/"layerOrder": \[ \n\t\t"Layer0",/' file.json

我发现这种方法,主要问题是与特殊符号([)

h9a6wy2h

h9a6wy2h3#

如果你想要一个健壮和/或灵活的解决方案,最好使用JSON感知工具,比如jq。结合sponge,你可以这样写:

< input.json jq --arg first Layer0 '.layerOrder |= [$first] + .' | sponge input.json

这也可以在jq的C、Go和Rust实现之间移植,即jq gojq和jaq

相关问题