我有以下JSON文件test.json
{
"run_list": ["recipe[cookbook-ics-op::setup_server]"],
"props": {
"install_home": "/inst1",
"tmp_dir": "/inst1/tmp",
"user": "rven"
}
}
从shell脚本中,我必须在props下添加2个属性。我不想先阅读现有的内容。然后加入它。任何人都可以帮我解决这个问题吗?
答案 0 :(得分:0)
尝试sed:
sed -e 's/"props": {/"props": { "foo": "bar", "spam": "eggs",/' test.json
结果:
{
"run_list": ["recipe[cookbook-ics-op::setup_server]"],
"props": { "foo": "bar", "spam": "eggs",
"install_home": "/inst1",
"tmp_dir": "/inst1/tmp",
"user": "rven"
}
}
答案 1 :(得分:0)
使用JSON感知工具,例如jq
。要添加两个属性foo
和bar
:
jq '.props.foo="hello" | .props.bar="bye"' <in.json >out.json
如果要对值使用shell变量:
foo=hello; bar=bye
jq --arg foo="$foo" \
--arg bar="$bar" \
'.props.foo=$foo | .props.bar=$bar' \
<in.json >out.json
如果您希望能够使用shell变量指定两个键和值:
key=hello; val=world
jq --arg key="$key" \
--arg val="$val" \
'.props[$key]=$val' \
<in.json >out.json