考虑以下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脚本对我不起作用,我相信它是因为原始版本中的?
或=
符号正在弄乱正则表达式的字符串。
我该如何解决这个问题?我对正则表达式很糟糕。
答案 0 :(得分:2)
点.
和问号?
为characters of special meaning,需要进行转义。同样,您需要在替换中转义正斜杠或使用不同的分隔符以避免转义。
perl -i.bak -pe 's!index\.php\?pageid=!p/!g'