sed替换 使用案例记录

缘由: 需要批量修改N台db的备份脚本,把其中的一个log日志路径修改下。一个个vi进去修改太麻烦了,就想到了用sed替换命令。

 

 1 将文件的将/var/log/xtrabackuplog变成/mysqlbackup/$HOSTNAME/xtrabackuplog_$(date +%Y%m%d).log,原文件内容如下:

 

 for masterdb in `cat int.db.full`;do
   
   echo $masterdb
   ssh  $masterdb "df -h" |grep -i mysqldata;
   echo ""
   echo "Completed: `date`" >> /var/log/xtrabackuplog
   echo '';
   echo "Completed: `date`" >> /var/log/xtrabackuplog


done;


2 要将它变成如下内容:

 

 

for masterdb in `cat int.db.full`;do

   echo $masterdb
   ssh  $masterdb "df -h" |grep -i mysqldata;
   echo "" 
   echo "Completed: `date`" >>  /mysqlbackup/$HOSTNAME/xtrabackuplog_$(date +%Y%m%d).log
   echo '';
   echo "Completed: `date`" >>  /mysqlbackup/$HOSTNAME/xtrabackuplog_$(date +%Y%m%d).log


done;


3 注意里面有/目录符号,需要用\来转义。

 

sed命令如下:

 

sed -i 's/\/var\/log\/xtrabackuplog/ \/mysqlbackup\/$HOSTNAME\/xtrabackuplog_$(date +%Y%m%d).log/g' sed_t.sh 
[novamysqladminint@eanintmydbc000ctl ~]$   sed -e 's/\/var\/log\/xtrabackuplog/ \/mysqlbackup\/$HOSTNAME\/xtrabackuplog_$(date +%Y%m%d).log/g' sed_t.sh 
for masterdb in `cat int.db.full`;do

   echo $masterdb
   ssh  $masterdb "df -h" |grep -i mysqldata;
   echo "" 
   echo "Completed: `date`" >>  /mysqlbackup/$HOSTNAME/xtrabackuplog_$(date +%Y%m%d).log
   echo '';
   echo "Completed: `date`" >>  /mysqlbackup/$HOSTNAME/xtrabackuplog_$(date +%Y%m%d).log


done;

 


4 OK,搞定。

 

 

 

5 sed替换扩展部分

(1)在每一行的末尾加分号

sed 's/.*/&;/' g.sql >g1.sql
awk '{print $0,"xxxx"}' file

 

 

 

 

 

(2)去掉第一行记录

sed -i '1d' g1.log

 


(3)在每行的头添加字符,比如"HEAD",命令如下:

sed 's/^/HEAD&/g' test.file

 

 

 

(4)在每行的行尾添加字符,比如“TAIL”,命令如下:
sed 's/$/&TAIL/g' test.file


(5)删除检索到的行,-i在源文件上面修改

sed -i '/grant fors/d' t.file

 

 

 

(6)sed替换
 

sed -e 's/foo/bar/' myfile.txt  
 此命令将 myfile.txt 中每行第一次出现的 'foo'(如果有的话)用字符串 'bar' 替换,然后将该文件内容输出到标准输出。
 sed -e 's/foo/bar/g' myfile.txt 
 此命令将 myfile.txt 中每行出现的 'foo'(如果有的话)用字符串 'bar' 进行全局替换,然后将该文件内容输出到标准输出。

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值