{ "layerOrder": [ "Layer1", "Layer2", "Layer3", "Layer4" ] }
这是target.json,我需要在“Layer 1”之前添加“Layer 0”,通过Linux命令行。
{ "layerOrder": [ "Layer0", "Layer1", "Layer2", "Layer3", "Layer4" ] }
我该怎么做?先谢谢你了!
ac1kyiln1#
如果你只是想完成你在问题中所陈述的工作,那么这将起作用:
$ head json -n 2; echo -e " \"Layer0\","; sed -n '3,$p' json > newjson
dw1jzc5e2#
sed -ie 's/"layerOrder": \[/"layerOrder": \[ \n\t\t"Layer0",/' file.json
我发现这种方法,主要问题是与特殊符号([)
h9a6wy2h3#
如果你想要一个健壮和/或灵活的解决方案,最好使用JSON感知工具,比如jq。结合sponge,你可以这样写:
sponge
< input.json jq --arg first Layer0 '.layerOrder |= [$first] + .' | sponge input.json
这也可以在jq的C、Go和Rust实现之间移植,即jq gojq和jaq
3条答案
按热度按时间ac1kyiln1#
如果你只是想完成你在问题中所陈述的工作,那么这将起作用:
dw1jzc5e2#
我发现这种方法,主要问题是与特殊符号([)
h9a6wy2h3#
如果你想要一个健壮和/或灵活的解决方案,最好使用JSON感知工具,比如jq。结合
sponge
,你可以这样写:这也可以在jq的C、Go和Rust实现之间移植,即jq gojq和jaq