这个perl脚本的正确用法是什么?

时间:2014-09-10 00:56:39

标签: regex apache perl .htaccess

考虑以下perl shell脚本;

perl -p -i.bak -e 's/index.php?pageid=/p//g' `grep -ril index.php?pageid= *`

我试图递归遍历我网站中的所有网页目录并更改

的任何字符串
  

的index.php?的pageid =

  

P /

这是为了缩短我的链接:

  

www.domain.com/index.php?pageid=page1

  

www.domain.com/p/page1

我已经正确设置了.htaccess文件,但是这个shell脚本对我不起作用,我相信它是因为原始版本中的?=符号正在弄乱正则表达式的字符串。

我该如何解决这个问题?我对正则表达式很糟糕。

1 个答案:

答案 0 :(得分:2)

.和问号?characters of special meaning,需要进行转义。同样,您需要在替换中转义正斜杠或使用不同的分隔符以避免转义。

perl -i.bak -pe 's!index\.php\?pageid=!p/!g'