JQ не может разобрать \ u2022 символ - PullRequest
0 голосов
/ 17 ноября 2018

Я пытаюсь выполнить массовую загрузку в Elasticsearch (около 1 млн. Документов).Для этого я использую jq для переформатирования файла JSON, извлеченного из базы данных MySQL, и curl для отправки данных в 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, но ошибка все еще возникает.Как я могу справиться с этим для всех случаев \ u2022?

1 Ответ

0 голосов
/ 18 ноября 2018

Вот подтверждение того, что \u2022 правильно обрабатывается различными версиями jq в среде Mac:

$ 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 (текущей версией), предоставьте минимально полный проверяемый пример с дополнительной информацией о вычислительной среде.

...