【发布时间】:2019-11-18 07:08:40
【问题描述】:
这个问题来自以下帖子:
jq -c -r ".[]" C:\setting-es.json | while read line; do echo '{"index":{}}'; echo $line; done > bulk.json
上面的 jq shell 命令抛出错误“Missing statement body in do loop”
我试图改变语法,但仍然无法正常工作。我正在尝试编写一个 shell 脚本来为 elasticsearch 的批量 api 转换以下数据:
[{
"codeId": "111",
"association": [{
"associationId": 123,
"businessUnitsAssociationId": 1,
"financialBusinessUnits": "DCS",
"businessApprovalLimit": [{
"businessApprovalLimitApprovalLimitId": 1,
"itemMinAmount": "0.00",
"itemMaxAmount": "0.00"
}, {
"businessApprovalLimitApprovalLimitId": 2,
"itemMinAmount": "0.00",
"itemMaxAmount": "0.00"
}, {
"businessApprovalLimitApprovalLimitId": 3,
"itemMinAmount": "0.00",
"itemMaxAmount": "0.00"
}]
}]
}]
我正在尝试将其转换为以下内容:
{"index":{}}
[{"codeId":"111","association":[{"associationId":123,"businessUnitsAssociationId":1,"financialBusinessUnits":"DCS","businessApprovalLimit":[{"businessApprovalLimitApprovalLimitId":1,"itemMinAmount":"0.00","itemMaxAmount":"0.00",},{"businessApprovalLimitApprovalLimitId":2,"itemMinAmount":"0.00","itemMaxAmount":"0.00",},{"businessApprovalLimitApprovalLimitId":3,"itemMinAmount":"0.00","itemMaxAmount":"0.00",}]}]
【问题讨论】:
-
值
True和False是否有意或错误地拼写为无效的 JSON 值(在 JSON 中完全拼写为小写)? -
@Dmitry 我已经修复了它,但无论如何这只是虚拟数据
-
@Dmitry jtc 怎么知道每个 json 数据是如何被代理的?在我的虚拟数据中,我有五个数据点,它如何知道每个数据点是如何分开的?我问这个是因为我的 actual 数据集有嵌套值,每个数据点都是分开的。如果需要,我可以分享
-
@cluis92,在这种情况下,同样的
jtc可以工作(但-a选项可以删除,它是多余的,因为它现在是一个JSON)。 -
@cluis92,对,但这不是必需的,显示一个足以解释输入概念并允许构建正确解决方案的 sn-p 就足够了。
标签: json elasticsearch jq