正则表达式在bash中的值和键周围添加双引号

时间:2018-09-12 20:10:38

标签: regex bash perl sed

我需要有效的JSON格式来请求ES。 我有一个类似

的字符串
{ 
time:  { 
          from:now-60d,
          mode:quick,
          to:now } 
}

应该类似于

 { 
time:  { 
          "from":"now-60d",
          "mode":"quick",
          "to":"now" } 
}

所以我的问题是,有什么解决方案可以在bash中对字符串的键和值添加双引号?

谢谢

1 个答案:

答案 0 :(得分:1)

理想情况下,您希望从一开始就生成适当的JSON,或者至少要为所拥有的内容编写适当的解析。但是您只需要执行一次,使用以下内容并手动解决任何问题可能会更快:

$ echo "{ 
time:  { 
      from:now-60d,
      mode:quick,
      to:now } 
}" | perl -p -e 's/(\w+):([^{, ]+)/"$1":"$2"/'
{ 
time:  { 
      "from":"now-60d",
      "mode":"quick",
      "to":"now" } 
}