我想使用 jq 给 JSON 对象添加和删除一个 'key:value' 。我是 jq 的新手,对 jq 报错不太理解,因此非常感谢能帮我指明正确方向的任何帮助。我的具体问题是我有一个 JSON 对象(如下),我想能够添加/删除该 JSON 对象中的“maxHeight”键/值。
我尝试了一些命令并遇到了错误:
jq 'recurse(.[]) |= del(.maxHeight)' new.json
无法迭代null(null)
jq 'recurse(.[]) |= {maxHeight}' new.json
无法迭代字符串("feature")
jq 'recurse(.[]) |= .maxHeight' new.json
无法使用字符串“style”索引字符串
new.json文件如下所示...
{
"style": {
"className": "feature",
"showLabels": false,
"color": "function(feature, variableName, glyphObject, track){if(feature.get(\"type\") === \"CDS\"){return \"#9CFBF5\";} else if(feature.get(\"type\") === \"exon\"){return \"#43A47F\";} else if(feature.get(\"type\") === \"intron\"){return \"#E8E8E8\";} else if(feature.get(\"type\") === \"five_prime_UTR\"){return \"#F192FE\";} else if(feature.get(\"type\") === \"three_prime_UTR\"){return \"#FEC892\";} else {return \"#FF0000\";}}",
"arrowheadClass": null,
"featureCss": "padding:3px;"
},
"menuTemplate": [
{
"label": "View details"
},
{
"label": "Highlight a gene"
},
{
"iconClass": "dijitIconBookmark",
"content": "function(track,feature,div) { window.parent.angular.element(window.frameElement).scope().specificNote( feature[2] ) }",
"action": "contentDialog",
"title": "(feature{name})",
"label": "Create Note"
}
],
"hooks": {
"modify": " function(track,feature,div){ var checkArr=[\"Reference\",\"Missing\",\"Heterozygous\",\"NonReference\"];for(var i=0;i<feature.length;i++){for(var j=0;j<checkArr.length;j++){ if( i>3) { if( feature[i] === checkArr[j] ) { if(feature[i]==\"NonReference\"){div.style.backgroundColor=\"red\"}else if(feature[i]==\"Reference\"){div.style.backgroundColor=\"green\"}else if(feature[i]==\"Heterozygous\"){div.style.backgroundColor=\"orange\"}else if(feature[i]==\"Missing\"){div.style.backgroundColor=\"grey\"} }}}}} "
},
"key": "cucumber_ChineseLong_v2.gff3",
"storeClass": "JBrowse/Store/SeqFeature/NCList",
"trackType": null,
"maxHeight": "200px",
"urlTemplate": "tracks/cucumber_ChineseLong_v2.gff3/{refseq}/trackData.json",
"compress": 0,
"label": "cucumber_ChineseLong_v2.gff3",
"type": "JBrowse/View/Track/CanvasFeatures"
}
echo '{ "a": 1, "b": 2 }' | jq 'del(.a)' >output.json
或者echo '{ "a": 1, "b": 2 }' >input.json; jq 'del(.a)' input.json >output.json
或者echo '{ "a": 1, "b": 2 }' >input.json; jq 'del(.a)' input.json | sponge input.json
和moreutils
中的sponge
吗? - milahu