我有一个很大的现有 json 对象,我想向值可能非常大(许多 K)的对象添加新的键/值。
使用 jq,我可以做这样的事情:
echo $item | jq '. + {readme:"big blob of text"}'
有没有用 shell 或 jq 变量替换big blob of text
的好方法?
下面说明了如果您的 jq 版本支持 "--argjson",可以做什么。 类似的事情可以用--arg
和--argfile
来完成。
#!/bin/bash
function bigblob {
cat <<EOF
big blob of text
EOF
}
item='{"a": "a"}'
bigblob | jq -R --argjson item "$item" '$item + {"readme": .}'
结果:
{
"a": "a",
"readme": "big blob of text"
}