如何在正则表达式中使用的Perl文本中转义斜杠?

und*_*ack 2 regex perl escaping slash

end_date=$(date +"%m/%d/%Y")
/usr/bin/perl -pi -e "s/_end_date_/${end_date}/g" filename
Run Code Online (Sandbox Code Playgroud)

我想用当前日期替换字符串'_end_date_'.由于当前日期中有斜杠(是的,我想要斜杠),我需要逃避它们.我怎样才能做到这一点?

我尝试了几种方法,比如使用sed和Perl本身用"/"替换斜杠,但它没有用.最后我使用'cut'来打破3个部分的日期并逃脱斜线,但这个解决方案看起来不太好.有更好的解决方案吗?

Pet*_*ans 16

在Perl中,您可以选择使用哪个字符来分隔正则表达式的各个部分.以下代码可以正常工作.

end_date = $(date +"%m/%d/%Y")
/usr/bin/perl -pi -e "s#_end_date_#${end_date}#g" filename
Run Code Online (Sandbox Code Playgroud)

这是为了避免"倾斜牙签"综合症与/交替.


Ped*_*lva 5

使用不同的s分隔符:s{all/the/slashes/you/want/}{replacement}.