首页 > 系统服务 > 详细

shell替换指定行的内容

时间:2020-06-05 19:54:55      阅读:222      评论:0      收藏:0      [点我收藏+]

问题:

我想修改 a.sql 的指定字符串  文件如下:

INSERT OVERWRITE WF_STUDIO_H(
                       `WFID`           
                      ,`WFNAME`         
                      ,`WFSIGN`         
                      ,`WFSORT`         
                      ,`WFFOLDER`       
)PARTITION(dt = cast (3000-12-31 as varchar(10)))
SELECT
                       `WFID`           
                      ,`WFNAME`         
                      ,`WFSIGN`         
                      ,`WFSORT`         
                      ,`WFFOLDER`       
           FROM    WF_STUDIO_H;
            where WFID=AAA
ALTER TABLE WF_STUDIO_H_BAKTEMP DROP IF EXISTS PARTITION(dt = cast (3000-12-31 as varchar(10)));

WF_STUDIO_H这个表名替换成WF_STUDIO_H_BAKTEMP

脚本如下:

#!/bin/sh

#指定字符串
tablename="WF_STUDIO_H"  

#grep -B5 B是显示匹配行和它前面的5行 -A是显示匹配后和它后面的n行 -C是匹配行和它前后各n行
#grep -n  顺便输出行号
hangline=`grep -B2 -n   DROP IF EXISTS PARTITION  a.sql|grep FROM|awk -F   {print $1} |sed s/-//g`

sedcom="${hangline}s/${tablename}/${tablename}_BAKTEMP/"
#替换指定行的字符
sed -i ${sedcom} a.sql

echo "脚本替换完成!"

exit 0

这个也可以写成多个序列,一个一个脚本执行。

shell替换指定行的内容

原文:https://www.cnblogs.com/hello-wei/p/13051038.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!