Замените апостроф в JSON апострофом, подходящим для скручивания через sed - PullRequest
0 голосов
/ 16 апреля 2019

Мне нужно подготовить JSON, который содержит апостроф для отправки через CURL.Пример JSON:

{"myField":"Apos'test"}

Пример JSON, который мне нужен в качестве вывода:

{"myField":"Apos'\''test"}

Что я пробовал:

sed -e "s/'/'\\\''/g" <<< {"myField":"Apos'test"}

, который выводит:

{myField:Apos'\''test}

И я не понимаю, почему он удаляет двойные кавычки.

PS Не обязательно использовать sed, любой другой стандартный инструмент linux будет работать.

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

Это не
Если это было потому, что вы использовали <<<, здесь, из которых пара "" была проанализирована, расширена и отброшена оболочкой, в которой вы находитесь </p>

$ cat d
{"myField":"Apos'test"}

$ sed -E "s/'/'\\\''/g" d
{"myField":"Apos'\''test"}
0 голосов
/ 16 апреля 2019

попробуйте это:

#/bin/bash
replacement=$((cat << EOT
{"myField":"Apos'test"}
EOT
) | sed "s|'|'\\\''|")
echo $replacement

выход:

{"myField":"Apos'\''test"}
...