Linux中替换文件中的字符串

来源:互联网 发布:多线程ping java 编辑:程序博客网 时间:2024/05/18 02:40
1、vim
假定先有多个txt文件,需将所有文件中的变量"well"改为"good":
vi/vim 中可以使用 :s 命令来替换字符串。

:s/well/good/ 替换当前行第一个 well 为 good

:s/well/good/g 替换当前行所有 well 为 good


:n,$s/well/good/ 替换第 n 行开始到最后一行中每一行的第一个 well 为 good
:n,$s/well/good/g 替换第 n 行开始到最后一行中每一行所有 well 为 good
n 为数字,若 n 为 .,表示从当前行开始到最后一行

:%s/well/good/(等同于 :g/well/s//good/) 替换每一行的第一个 well 为 good

:%s/well/good/g(等同于 :g/well/s//good/g) 替换每一行中所有 well 为 good


可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#well/#good/# 替换当前行第一个 well/ 为 good/
:%s#/usr/bin#/bin#g 可以把文件中所有路径/usr/bin换成/bin


2、perl
可以执行以下命令:
find . -name '*.c' -print0 | xargs -0 perl -pi -e 's/well/good/g' 
xargs 把find命令的结果作为perl的参数。
find的参数-print0和xargs的参数-0是防止文件名中有空格或新行造成错误,可以man xargs获得帮助。
注意: 如果替换的字符包括 ()[]/"'!? 等等这样的特殊字符,你必须在字符前加上反斜杠\ 。
优点:不用启动编辑器,比较迅速。
缺点:容易出现不想要的替换,例如:把pwell替换成了pgood。


3、sed
可以执行以下命令:
find . -name "*.c" -print0 | xargs -0 sed -i 's/well/good/g'
优缺点和perl方法相同。 
原创粉丝点击