【问题标题】:What is the correct usage for this perl script?这个 perl 脚本的正确用法是什么?
【发布时间】:2014-11-03 12:46:39
【问题描述】:

考虑以下 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 脚本对我不起作用,我相信这是因为原始字符串中的 ?= 符号弄乱了正则表达式.

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

【问题讨论】:

    标签: regex apache perl .htaccess


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的快速回复!我一定是做错了什么,因为通过像您解释的那样转义字符,命令运行没有错误,但它应该更改的文件没有受到影响。他们已经创建了备份,但没有进行任何更改。
    猜你喜欢
    • 2011-01-17
    • 2011-09-02
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 2011-10-19
    相关资源
    最近更新 更多