将JSON中的撇号替换为适合于通过sed卷曲的撇号

问题描述 投票:0回答:2

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

{"myField":"Apos'test"}

我需要作为输出的JSON示例:

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

我尝试过的:

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

哪个输出:

{myField:Apos'\''test}

我不明白为什么它会删除双引号。

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

json sed replace apostrophe
2个回答
0
投票

试试这个:

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

输出:

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

0
投票

它没有 如果是因为你使用<<<,这里,其中“”对被解析,扩展和掉落你所在的shell

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

$ sed -E "s/'/'\\\''/g" d
{"myField":"Apos'\''test"}
© www.soinside.com 2019 - 2024. All rights reserved.