如何在Perl中替换日期?

时间:2013-07-29 14:49:25

标签: perl regex

perl -pi.back -e 's/2013/07/31-05:54:14/2014/07/31-00:00:00/g;' /tmp/ranjan/replace.SEL

我正在使用上面的一个班轮将日期从2013/07/31-05:54:14替换为2014/07/31-00:00:00。但我无法做到。我只能找到字符串的替换而不是上述格式的数字。请帮帮我。

3 个答案:

答案 0 :(得分:11)

使用alternative delimiter

s{find}{replace}g;

s#find#replace#g;

否则你必须逃脱所有/

答案 1 :(得分:4)

Perl认为日期中的正斜杠实际上是替换语句s///g的一部分,因此您可以在日期中转义斜杠或使用不同的分隔符替换

perl -pi.back -e 's/2013\/07\/31-05:54:14/2014\/07\/31-00:00:00/g;'

或更具可读性:

perl -pi.back -e 's#2013/07/31-05:54:14#2014/07/31-00:00:00#g;' 

答案 2 :(得分:3)

您必须更改分隔符,或者已正确转义正则表达式字符串。

直径可能是任何不可打印的,我喜欢使用!。

像这样:

s!2013/07/31-05:54:14!2014/07/31-00:00:00!g;