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' 进行全局替换,然后将该文件内容输出到标准输出。
标签:xtrabackuplog,log,echo,案例,sed,date,masterdb,替换 来源: https://blog.csdn.net/csdnhsh/article/details/92249564