515439429 发表于 2018-8-30 12:51:28

Linux 批量字符串替换命令(sed, perl )与vi文本下字符替换命令

  http://blog.csdn.net/meic51/article/details/7850084
  1. perl 命令
  例1 执行命令:
  perl -p -i -e "s/China/Sumly/g" /www/*.htm /www/*.txt
  上面的意思是说将www文件夹下所有的htm和txt文件中的“China”都替换为“Sumly”
  例2 执行命令:
  perl -p -i -e "s/mry_production/mry_production2/g" ./*.sql
  上面的意思是将当前目录下所有的sql文件中的“mry_production”替换成“mry_production2”
  2. sed 命令
  用sed命令可以批量替换多个文件中的字符串。
  
  sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录`
  例如:我要把mahuinan替换为huinanma,执行命令:
  sed -i "s/mahuinan/huinanma/g" 'grep mahuinan -rl /www'
  具体格式如下:
  sed -i "s/oldString/newString/g" `grep oldString -rl /path`
  实例代码:
  sed -i "s/大小多少/日月水火/g" `grep 大小多少 -rl /usr/aa`
  sed -i "s/大小多少/日月水火/g" `grep 大小多少 -rl ./`
  
  3. vi\vim 文本命令
  :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

页: [1]
查看完整版本: Linux 批量字符串替换命令(sed, perl )与vi文本下字符替换命令