2014-12-03 2 views
3

문자열을 가져 오는 grep 명령에서 모든 행을 채우는 데 bash를 사용하려는 일반적인 SQL 쿼리가 있습니다. 문자열을 가져 오는 파일에서 얻는 문자열의 양도 다릅니다.쿼리에 SQL을 채우는 방법

예 질의 :

select * from table_name 
    where column_name in ('string', 
    'string', 
    'string', 
    'string', 
    'string', 
    'string', 
    'string',) 

은 기본적으로 내가 이메일 메시지 ID에서 찾고 내가 메시지 ID의 출력을 얻을. 한 줄에 하나의 문자열.

grep -Eoh "[a-z0-9]{0,9}\.0\.[0-9]{0,9}\.00\-[0-9]{0,9}\.[0-9]{0,9}\.[a-z0-9{0,10}\.hostname.com" *filename.txt 

62e60645.0.2279968.00-2316.3908868.d02c12m066.hostname.com 
3ebe0645.0.522591.00-2200.908364.a02c11m025.hostname.com 
356f0645.0.1401456.00-2085.2306795.g02c12m014.hostname.com 
9a001645.0.1594149.00-1533.2646910.y01c12m093.hostname.com 

등등.

는 내가 뭘하고 싶은 그래서 단순히 문자열을 붙여에서 실행할 수있는 자동 질의에 삽입 내 grep 명령에서 문자열을 모두 가지고있다.

+0

grep 명령의 출력에는 해당 sql 쿼리에 있어야하는 문자열이 포함되어 있습니까? –

+0

맞습니다. – dguard

답변

3
$ echo 'select * from table_name where column_name in ('"$(grep -Eoh '[a-z0-9]{0,9}\.0\.[0-9]{0,9}\.00\-[0-9]{0,9}\.[0-9]{0,9}\.[a-z0-9]{0,10}\.hostname.com' *filename.txt | awk -v ORS=', ' '{print "\047"$0"\047"}')"')' 
select * from table_name where column_name in ('62e60645.0.2279968.00-2316.3908868.d02c12m066.hostname.com', '3ebe0645.0.522591.00-2200.908364.a02c11m025.hostname.com', '356f0645.0.1401456.00-2085.2306795.g02c12m014.hostname.com', '9a001645.0.1594149.00-1533.2646910.y01c12m093.hostname.com',) 

는의 오타가 수정하여 grep regex. 마지막 범위에서 마감 ]을 놓쳤습니다.

내부 awk 명령은 행 대 목록 형식화를 수행합니다.

awk -v ORS=', ' '{print "\047"$0"\047"}')"' 

-v ORS=', '

전과 끝에 추가 ORS의 값과 이후

{print "\047"$0"\047"} 인쇄 (,에 대한 출력 레코드 분리) ' 각 라인 ORS 세트.

3

또한 라인 반향으로 줄을 반복하여 수행 할 수

#!/bin/bash 
echo 'select * from table_name where column_name in (' 
{ 
    read 
    echo -n "'$REPLY'" 
    while read; do 
     echo -ne ",\n'$REPLY'" 
    done 
} < <(grep -Eoh '[a-z0-9]{0,9}\.0\.[0-9]{0,9}\.00\-[0-9]{0,9}\.[0-9]{0,9}\.[a-z0-9]{0,10}\.hostname.com' *filename.txt) 
echo ')' 
여기

$REPLYprocess substitution (<(grep ...))에 의해 제공되는 입력과 판독 라인 (하나 하나)을 포함한다.

+0

내 기쁨. 참조하십시오 : http://stackoverflow.com/help/someone-answers – whoan

관련 문제