将JSON中的撇号替换为适用于sed的撇号

将JSON中的撇号替换为适用于sed的撇号,json,sed,replace,apostrophe,Json,Sed,Replace,Apostrophe,我需要准备JSON,其中包含撇号,通过CURL发送。 JSON示例: {"myField":"Apos'test"} 我需要作为输出的JSON示例: {"myField":"Apos'\''test"} 我所尝试的: sed -e "s/'/'\\\''/g" <<< {"myField":"Apos'test"} 我不明白为什么它删除了双引号 另外,使用sed不是必须的,任何其他标准的linux工具都可以使用。试试这个: #/bin/bash replacement=$

我需要准备JSON,其中包含撇号,通过CURL发送。 JSON示例:

{"myField":"Apos'test"}
我需要作为输出的JSON示例:

{"myField":"Apos'\''test"}
我所尝试的:

sed -e "s/'/'\\\''/g" <<< {"myField":"Apos'test"}
我不明白为什么它删除了双引号

另外,使用sed不是必须的,任何其他标准的linux工具都可以使用。

试试这个:

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

如果是因为您使用了
jq
generate_post_data(){jq-n--arg v“$1”[{“myField”:$v}]}
然后使用
generate_post_data“Apos'test”
sh正在删除双引号,与
echo{“myField”:“Apos'test”一样。请尝试使用sed-e“s/”/“\\\”“/g”
#/bin/bash
replacement=$((cat << EOT
{"myField":"Apos'test"}
EOT
) | sed "s|'|'\\\''|")
echo $replacement
{"myField":"Apos'\''test"}
$ cat d
{"myField":"Apos'test"}

$ sed -E "s/'/'\\\''/g" d
{"myField":"Apos'\''test"}