查找和替换斜杠字符的文本(Find and replace text with slash char

2019-06-27 17:40发布

所以,我环顾四周,#2,我知道查找和替换文本的工作是这样的:

perl -pi -w -e 's/www.example.com/www.pressbin.com/g;' *.html

但是,如果我想查找和替换文本是什么,有斜线文件路径? 如何做到这一点呢?

perl -pi -w -e 's/path/to/file/new/path/to/file/g;' *.html

Answer 1:

用Perl的正则表达式,你可以使用除空格作为分隔符正则表达式的任何字符,尽管

  • 字符\w (所以s xfooxbarx相同s/foo/bar/ )和
  • 问号? (隐式激活比赛只有一次的行为,不建议使用)和
  • 单引号'...' (可变插值转)

应该避免。 我宁愿花括号:

perl -pi -w -e 's{path/to/file}{new/path/to/file}g;' *.html

可能没有相应的字符串内出现的定界符,当他们是平衡的括号或正确转义除。 所以,你也可以

perl -pi -w -e 's/path\/to\/file/new\/path\/to\/file/g;' *.html

但就是dowrnright难看。

当使用括号/括号等可以有正则表达式和替换之间的空白,允许像beatiful代码

$string =~ s {foo}
             {bar}g;

这方面的另一个有趣的正则表达式的选项是quotemeta功能。 如果搜索表达式包含许多字符通常会被具有特殊意义的解释,我们可以包围内部的串\Q...\E 。 所以

m{\Qx*+\E}

匹配的确切字符串x*+ ,即使像字符* ,“+”或者| 等等都包括在内。



Answer 2:

您可以使用其它字符不是“/”来指定模式。 例如:

perl -pi -w -e 's,path/to/file,new/path/to/file,g;' *.html


Answer 3:

perl -pi -w -e 's/path\/to\/file/new\/path\/to\/file/g;' *.html



文章来源: Find and replace text with slash characters