为什么我的perl命令行替换不起作用?

时间:2015-08-05 04:06:33

标签: perl

我正在运行它,但它似乎没有取代任何东西:

perl -p -i -e 's/page?user_id=/page?uid=/g' *

我在这里做错了什么?

我想将page?user_id=替换为page?uid=

2 个答案:

答案 0 :(得分:5)

The '?' is a special character, indicating that the e needs to be matched 0 or once,如果您想要搜索'?'则需要进行转义。而不是可选的'。逃避' \':

s/page\?user_id=/page?uid=/g

答案 1 :(得分:3)

您也可以使用Quotemeta:

perl -pi -e 's/\Qpage?user_id=\E/page?uid=/g' file

作为附注,我想为什么不将user_id更改为uid