【问题标题】:Replace apostrophe in JSON with apostrophe suitable for curl via sed通过 sed 将 JSON 中的撇号替换为适合 curl 的撇号
【发布时间】:2019-09-06 09:11:16
【问题描述】:

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

{"myField":"Apos'test"}

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

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

我尝试过的:

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

哪个输出:

{myField:Apos'\''test}

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

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

【问题讨论】:

  • 使用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" &lt;&lt;&lt; "{\"myField\":\"Apos'test\"}"

标签: json sed replace apostrophe


【解决方案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"}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多