2010-04-08 2 views
1

이 스크립트를 사용하여 파일 목록에서 업데이트 쿼리를 가져 오려고합니다. "업데이트"만 포함하고 "업데이트 됨"또는 "UpdateSQL"이 아닌 행을 가져와야합니다. 우리는 모든 업데이트 쿼리에 set이 포함되어 있다는 것을 알고 있습니다.하지만 업데이트와 Updated SQL 같은 경우를 제거해야합니다. 아무도 도와 줄 수 있습니까?선택 셸 스크립트를 사용하여 파일 목록에서 쿼리 만 업데이트

nawk -v file="$TEST" 'BEGIN{RS=";"} 
    /[Uu][Pp][Dd][Aa][Tt][Ee] .*[sS][eE][tT]/{ gsub(/.*UPDATE/,"UPDATE");gsub(/.*Update/,"Update");gsub(/.*update/,"update");gsub(/\n+/,"");print file,"#",$0;} 
    ' "$TEST" >> $OUT 

답변

1

이 모든 [Uu]없이 나에게 더 읽기 보인다는 grep을 필요로하지 않습니다

{ line=tolower($0); if (line ~ /update .*set/ && line !~ /updated|updatesql/) { gsub ... 
0

당신은, 첫째 GREP을 사용하여 시도 할 수 있습니다 (그리고 난 당신이 솔라리스에있는 가정합니다.)

grep -i "update.*set" "$TEST" | egrep -vi "updatesql|updated" | nawk ..... 
관련 문제