Linux中perl和sed的字符串批量替换,包括特殊字符$的替换

所有的命令都是现学现卖,但都是测试过的,网上有相当多的帖子是被搬来搬去的,没有测试过,相当一部分是不能100%运行的,所以在此分享100%可以运行的替换命令。

在Linux中文本替换通常有Perl,Sed和Shell 3种方法,网上现有的帖子
在此介绍Perl和Sed方法:
1. Perl 方法

find /data/www/www/biquhengsheng -iname "*.php" |xargs perl -pi -e "s|set names 'gbk'|set names 'utf-8'|g"
这条命令是查找/data/www/biquhengsheng 目录及子目录下的所有php文件中的字符串set names 'gbk',并将此替换成set names 'utf-8'。

find /data/www/biquhengsheng -iname "*.php" |xargs perl -pi -e "s|MYSQL_|MYSQLI_|g"

这条命令是查找data/www/biquhengsheng 目录及子目录下的所有php文件中的字符串MYSQL_,并将此替换成MYSQLI_。

2. Sed 方法

find /data/www/biquhengsheng -iname "*.php" |xargs sed -i "s#mysqli_query(#mysqli_query(/$link, #g"
 这条命令是查找/data/www/biquhengsheng 目录及子目录下的所有php文件中的字符串mysqli_query(,并将此替换成

mysqli_query($link。

其中#为隔离符,也可以跟上面的perl命令一样用 / 做隔离符;#隔离符在你要替换特殊符号/或/时是特别管用。此外请特别注意'$link'前面的/,即便在写这个帖子时也是充满挑战的,如果缺少/将无法执行这条命令,Linux会将此作为变量。

本文链接:https://www.dnwfb.com/21.html,转载请注明出处。
0

评论0

没有账号? 注册  忘记密码?