2017-04-21 38 views
1

我有一个SQL查询文件用一个变量(域名)和两个日期值(开始和结束日期)填充。 这个想法是bash脚本SED命令每月和域创建SQL查询文件。完成SQL查询文件的SED命令

用SED搜索和替换SQL查询文件是否聪明? 当我尝试这样做时,我需要从日期值中跳过字符。

SQL文件的部分看起来如下:

date < '' 
AND 
date >= '' 
AND 
to_domain = '' 

一个例子的输入:

to_domain = testing.com日期= 2017年4月1日的日期= 2017-04 -02

任何想法做到这一点聪明?

对不起,但我没有足够的SED经验。 我已经谷歌与这一个我的屁股,但没有运气到目前为止。

在此先感谢!

回答

0

您可以在模板查询文件中使用环境变量,并使用envsubst生成新文件来替代env变量。

鉴于以下query-template.txt

date < '$start_date' 
AND 
date >= '$end_date' 
AND 
to_domain = '$to_domain' 

可以生成生成query.txtenvsubst和先前定义的变量:

export start_date=2017-04-01 
export end_date=2017-04-02 
export to_domain=testing.com 
envsubst < query-template.txt > query.txt 

或之前把所有的变量export在文件vars.shsource它执行取代:

source vars.sh 
envsubst < query-template.txt > query.txt 
+0

非常感谢伯特兰!你让我以正确的方式!我要编写我的vars.sh文件,稍后我将运行命令“envsubst query.txt” – z3us