2
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:14to的日期2014/07/31-00:00:00。但我无法做到。我只能找到字符串的替换,而不是上述格式的数字。请帮帮我。

4

3 回答 3

11

使用替代分隔符

s{find}{replace}g;

或者

s#find#replace#g;

否则你将不得不逃避所有的/.

于 2013-07-29T14:55:47.777 回答
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;' 
于 2013-07-29T14:55:53.720 回答
3

你必须改变你的分隔符,或者你已经正确地转义了你的正则表达式字符串。

dilmeter 可以是任何不可打印的东西,我喜欢使用!

像这样:

s!2013/07/31-05:54:14!2014/07/31-00:00:00!g;
于 2013-07-29T14:56:56.673 回答