JQ无法解析\ u2022字符

时间:2018-11-17 15:17:49

标签: json unicode jq

我正在尝试批量上传到Elasticsearch(大约1百万个文档)。为了做到这一点,我正在使用jq重新格式化从MySQL数据库提取的JSON文件,并卷曲将数据发布到Elasticsearch:

cat dataset.json | jq -r -c '.[] | { "index" : { } }, .' | curl -u login:password -H "Content-Type: application/json" -XPOST "https://.../skills/default/_bulk?pretty" --data-binary @-

我得到一个错误:

  

解析错误:无效的字符串:从U + 0000到U + 001F的控制字符必须在276249行的317列中转义

我发现jq无法解析的字符是\ u2022。我尝试添加“ -r” jq命令,但出现错误stil。我该如何处理所有出现的\ u2022?

1 个答案:

答案 0 :(得分:1)

在此验证\u2022在Mac环境中是否可以由各种版本的jq正确处理:

$ echo '"\u2022"' | jq-1.4 .
"•"
$ echo '"•"' | jq-1.6 .
"•"
$ echo '"•"' | jq-1.5 .
"•"
$ echo '"•"' | jq-1.4 .
"•"
$ 

问题可能与jq 1.5发布以来已修复的错误有关(例如,见https://github.com/stedolan/jq/issues/1311)。

如果您在使用jq 1.6版(当前版本)时遇到困难,请提供一个minimal complete verifiable example 以及有关计算环境的更多详细信息。