从时间戳中删除冒号

时间:2012-05-16 08:47:29

标签: regex sed

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

 07/May/2012:00:00:01

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

我试试:

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

但那给了我:

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

任何提示赞赏....

4 个答案:

答案 0 :(得分:2)

您是否只想删除第一个冒号,然后可以尝试此

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

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

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

答案 1 :(得分: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 EREs do not support the \d shorthand。现在应该可以了。

答案 2 :(得分:0)

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

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

并且文件的输出将采用

的形式
07/May/2012 00 00 01

答案 3 :(得分: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