我有一个json文件,我想在其上追加一个新的对象数组。我正在尝试使用jq命令行。正如我在看互联网这个命令是这样做的,不仅在Json文件的查询对象。但我无法弄清楚如何在jq上使用ADD命令。 我的JSON文件是报告-2017-01-07.json >>使用jq向现有JSON数组添加新元素
{
"report":"1.0",
"data":{
"date":"2010-01-07",
"messages":[
{
"date":"2010-01-07T19:58:42.949Z",
"xml":"xml_samplesheet_2017_01_07_run_09.xml",
"status":"OK",
"message":"metadata loaded into iRODS successfully"
},
{
"date":"2010-01-07T20:22:46.949Z",
"xml":"xml_samplesheet_2017_01_07_run_09.xml",
"status":"NOK",
"message":"metadata duplicated into iRODS"
},
{
"date":"2010-01-07T22:11:55.949Z",
"xml":"xml_samplesheet_2017_01_07_run_09.xml",
"status":"NOK",
"message":"metadata was not validated by XSD schema"
}
]
}
}
我使用下面的命令>>
$ cat report-2017-01-07.json | jq -s '.data.messages {"date": "2010-01-07T19:55:99.999Z", "xml": "xml_samplesheet_2017_01_07_run_09.xml", "status": "OKKK", "message": "metadata loaded into iRODS successfullyyyyy"}'
jq: error: syntax error, unexpected '{', expecting $end (Unix shell quoting issues?) at <top-level>, line 1:
.data.messages {"date": "2010-01-07T19:55:99.999Z", "xml": "xml_samplesheet_2017_01_07_run_09.xml", "status": "OKKK", "message": "metadata loaded into iRODS successfullyyyyy"}
jq: 1 compile error
我已经尝试过其他命令的组合,但我总是结束错误编译。有关于此的任何暗示? 谢谢!
输出必须像>>
{
"report": "1.0",
"data": {
"date": "2010-01-07",
"messages": [{
"date": "2010-01-07T19:58:42.949Z",
"xml": "xml_samplesheet_2017_01_07_run_09.xml",
"status": "OK",
"message": "metadata loaded into iRODS successfully"
}, {
"date": "2010-01-07T20:22:46.949Z",
"xml": "xml_samplesheet_2017_01_07_run_09.xml",
"status": "NOK",
"message": "metadata duplicated into iRODS"
}, {
"date": "2010-01-07T22:11:55.949Z",
"xml": "xml_samplesheet_2017_01_07_run_09.xml",
"status": "NOK",
"message": "metadata was not validated by XSD schema"
}, {
"date": "2010-01-07T19:55:99.999Z",
"xml": "xml_samplesheet_2017_01_07_run_09.xml",
"status": "OKKKKKKK",
"message": "metadata loaded into iRODS successfullyyyyy"
}]
}
}
不知道这口井,但难道不是.data.messages是arrray的问题吗?所以你需要类似.data.messages的东西。[] –
对不起,没有工作 –
好吧 - 阅读文档并安装jq(在这里有Windows)并尝试 - 像你一样得到同样的错误。看起来像Windows shell有问题的方式,它将双引号输入到跳转jq的流中。无法获得任何工作,因此无法回答您的问题,但您可能需要查看jq命令中的双引号。所以''日期''会变成'\“日期\”等 –