#json #sed #replace #apostrophe
#json #sed #заменить #апостроф
Вопрос:
Мне нужно подготовить JSON, который содержит апостроф, для отправки через CURL. Пример JSON:
{"myField":"Apos'test"}
Пример JSON, который мне нужен в качестве вывода:
{"myField":"Apos'''test"}
Что я пробовал:
sed -e "s/'/'\''/g" <<< {"myField":"Apos'test"}
который выводит:
{myField:Apos'''test}
И я не понимаю, почему он удаляет двойные кавычки.
PS не обязательно использовать sed, подойдет любой другой стандартный инструмент Linux.
Комментарии:
1. Используйте
jq
:generate_post_data(){jq -n --arg v "$1" '[{ "myField": $v }]'}
и затем используйтеgenerate_post_data "Apos'test"
2. sh удаляет двойные кавычки, такие же, как и with
echo {"myField":"Apos'test"}
. Попробуйте вместоsed -e "s/'/'\''/g" <<< "{"myField":"Apos'test"}"
этого .
Ответ №1:
попробуйте это:
#/bin/bash
replacement=$((cat << EOT
{"myField":"Apos'test"}
EOT
) | sed "s|'|'\''|")
echo $replacement
вывод:
{"myField":"Apos'''test"}
Ответ №2:
Это не так
, если это было потому, что вы использовали <<< , здесь , из которых «» пара была проанализирована, расширена и удалена оболочкой, в которой вы находитесь
$ cat d
{"myField":"Apos'test"}
$ sed -E "s/'/'\''/g" d
{"myField":"Apos'''test"}