考虑以下 perl shell 脚本;
perl -p -i.bak -e 's/index.php?pageid=/p//g' `grep -ril index.php?pageid= *`
我正在尝试递归地浏览我网站中的所有 Web 目录并更改
的任何字符串index.php?pageid=
至
p/
这是为了缩短我的链接,例如:
www.domain.com/index.php?pageid=page1
至
www.domain.com/p/page1
我已经正确设置了 .htaccess 文件,但是这个 shell 脚本对我不起作用,我相信这是因为 ?
或 =
符号弄乱正则表达式的原始字符串。
我该如何解决这个问题?我对正则表达式很糟糕。
最佳答案
点.
和问号?
是characters of special meaning并且需要逃脱。此外,您需要在替换中转义正斜杠或使用不同的分隔符以避免转义。
perl -i.bak -pe 's!index\.php\?pageid=!p/!g'
关于regex - 这个 perl 脚本的正确用法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25755763/