【发布时间】:2011-06-08 07:19:15
【问题描述】:
我需要在 POST HTTP 请求中发送一个日期(格式类似于 2011-06-07T05:34:28+0200)。为了使其工作,我需要将时区的“+”或“-”分别更改为“%2B”或“%2D”。在 bash / sed one liner 中执行此操作的最有效方法是什么?
以下仅更改“+”,因为只有一个“+”(时区中的那个)。
d1=$(date +%Y-%m-%dT%H:%M:%S%z) // -> 2011-06-07T05:34:28+0200
d2=$(echo $d1 | sed -e 's/+/%2B/')
如何在单个命令中仅在时区内更改“+”或“-”字符?
【问题讨论】:
-
d1=$(date +%Y-%m-%dT%H:%M:%S%z | sed -e 's/+/%2B/')有什么问题? -
看到这个问题:URLEncode from a bash script
-
@konerak,它只需要'+'。如果它恰好是时区中的“-”,则不会被考虑在内。
-
呃。然后
d1=$(date +%Y-%m-%dT%H:%M:%S%z | sed -e 's/+/%2B/' | sed -e 's/-/%2D/')? :) -
@mirod,实际上将“+”留在时区是行不通的。奇怪的是,日期中的“-”没有问题。