1

我有一个日期时间戳,例如:

 07/May/2012:00:00:01

我希望删除日期和时间之间的冒号并用空格替换它。

我尝试:

sed -e 's/....:../.... ../g' local.csv > local07_nocolon.csv

但这给了我:

07/May/.... ..:00:01

任何提示表示赞赏....

4

4 回答 4

2

你想只删除第一个冒号然后你可以试试这个

echo "07/May/2012:00:00:01" | sed 's/:/ /'

如果您需要删除所有冒号,请使用此

echo "07/May/2012:00:00:01" | sed 's/:/ /g'
于 2012-05-16T08:51:47.650 回答
1

使用捕获组和反向引用(并确保仅匹配数字):

sed -e 's/\([0-9][0-9][0-9][0-9]\):\([0-9][0-9]\)/\1 \2/g' local.csv > local07_nocolon.csv

编辑:我忘记了POSIX ERE 不支持\d简写。现在它应该可以工作了。

于 2012-05-16T08:51:02.623 回答
0

这可能对您有用:

echo "07/May/2012:00:00:01" | sed 's/\([0-9]\{4\}\):/\1 /g' file
07/May/2012 00:00:01

或者:

echo "07/May/2012:00:00:01" | sed 's/\([[:digit:]]\{4\}\):/\1 /g'
07/May/2012 00:00:01
于 2012-05-16T12:47:52.133 回答
0

下面的 sed 命令使用全局替换标志“g”将所有出现的 : 替换为“”。

sed 's/:/ /g' local.csv > local07_nocolon.csv

文件的输出格式为

07/May/2012 00 00 01
于 2012-05-16T09:10:57.107 回答