linux中的文本的批量替换

1) 文件内全部替换:

:%s#abc#123#g (如文件内有#,可用/替换,:%s/abc/123/g,如果替换或被替换内容中有/(特别是路径),可用\/转义)

  --注:把abc替换成123

(或者: %s/str1/str2/g 用str2替换文件中所有的str1)

2) 文件内局部替换:

 :20,30s#abc#123(如文件内有#,可用/替换,:%s/abc/123/g)

  --注:把20行到30行内abc替换成123

3)文件夹下全部替换:

格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径`,注意别漏了两个`

例如:替换/home下所有文件中的www.admin99.net为admin99.net
          sed -i "s/www.admin99.net/admin99.net/g" `grep www.admin99.net -rl /home`

          加grep是为了提高效率,只有存在www.admin99.net的才执行替换

          如果只替换单个文件,可以直接用下面的命令

          sed -i "s/garden/mirGarden/g" 1.txt

          将文件1.txt内的文字“garden”替换成“mirGarden”

相关推荐