码迷,mamicode.com
首页 > 系统相关 > 详细

shell实例

时间:2015-07-14 06:23:28      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:shell

    今天遇到了这么一个问题,同事写的SQL文件中有212条SQL,全部SQL都使用select ... into outfile形式,但是在导出文件名都为"/opt/export/tmp.dat",所以在运行时第二条SQL就报错"/opt/export/tmp.dat"已经存在导致脚本运行失败。于是,就写一个小脚本来解决此问题。


    需求是这样的,在03.sql这个文件中出现了212次“/opt/export/tmp.dat”,要将tmp.dat替换为不同的212个文件名。

    具体是这样实现的:

  • 第一步

使用

grep -n "tmp\.dat" 03.sql |awk -F‘:‘ ‘{print $1}‘ > list.txt

将03.sql文件中所有包含"tmp.dat"的行号打印出来。

需要注意的是,在使用grep时,默认是使用正则表达式进行匹配的,所有tmp.dat中的"."需要有\进行转义,变为"tmp\.dat",否则的话匹配到的行会不准确。

  • 第二步

    编写脚本,解决问题

for i in `seq 1 212`
do
    line=`head -$i list.txt|tail -1`
    sed -i "${line}s/tmp\.dat/sql_${i}\.dat/g" 03.sql
done

执行此脚本,会对每一个"tmp.dat"进行匹配替换成"sql_**.dat",到达预期目标。



shell实例

标签:shell

原文地址:http://hakaz.blog.51cto.com/5067476/1673918

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!