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

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

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

find /data/www/default -iname "*.php" |xargs perl -pi -e "s|set names 'gbk'|set names 'utf-8'|g"

这条命令是查找/data/www/default 目录及子目录下的所有php文件中的字符串set names 'gbk',并将此替换成set names 'utf-8'

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


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

2. Sed 方法

find /data/www/default -iname "*.php" |xargs sed -i "s#mysqli_query(#mysqli_query(\$link, #g"

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

mysqli_query($link

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

Guess you like

Origin blog.csdn.net/weinsheimer/article/details/84888645