2017-04-21 1 views
1

변수 (domainname)와 두 개의 날짜 값 (시작 및 종료 날짜)으로 채울 SQL 쿼리 파일이 있습니다. 아이디어는 SED 명령을 스크립트로 작성하여 월 및 도메인 당 SQL 쿼리 파일을 작성하는 것입니다.SQL 쿼리 파일을 완료하기위한 SED 명령

SQL 쿼리 파일을 검색하여 SED로 바꾸는 것이 현명한 방법입니까? 이렇게하면 날짜 값에서 문자를 이스케이프 처리해야합니다. 다음

는 SQL 파일의 부분을 보인다 :

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

일례의 입력 :

to_domain = testing.com 날짜 = 2017년 4월 1일 날짜 = 2017-04 -02

이 스마트하게 할 아이디어가 있습니까?

죄송하지만 SED에서 충분한 경험이 없습니다. Google은이 문제에 대한 Google의 엉덩이를 찾아 냈지만 지금까지는 행운이 없습니다.

미리 감사드립니다.

답변

0

템플릿 쿼리 파일에서 환경 변수를 사용하고 envsubst으로 새 파일을 생성하여 env vars를 대체 할 수 있습니다.

주어진 query-template.txt을 다음

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

당신은 envsubstquery.txt을 생성 생성 할 수 있으며, 이전에 변수 정의 :

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

를 또는 전에 파일 vars.sh에있는 모든 변수를 export를 넣어 source 대체 수행 :

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

고마워 Bertrand! 너는 나를 올바른 길로 인도했다! 내 vars.sh 파일을 스크립트로 작성하고 나중에 "envsubst query.txt"명령을 실행합니다. – z3us