2013-07-28 2 views
1
내 지역 mysql.log 파일에서 변경 사항을 복구하기 위해 찾고

프로덕션 서버로 수행하고 난 이미 사용하여 변경 사항을 가지고 :정규 표현식을 제외한 서브 패턴은

^.*(ALTER TABLE).*(ADD|DROP|CHANGE|^AUTO_INCREMENT).*$ 

을 .. 그리고 SHOW CREATE TABLECREATE TABLE IF NOT EXISTS을 제외한 CREATE TABLE 성명도 수신하게됩니다. 그래서 내가 먼저만을 SHOW을 피하기 위해 노력하지만 내 마음에 더 직관적 인 방법을 사용 succeding하고 있지 않다 : 어떤 도움에 감사드립니다

^.*(^SHOW)*(CREATE TABLE).*$ 

^.*(^SHOW CREATE TABLE|CREATE TABLE).*$ 

,

카민 Iaciofano

+0

egrep로 가정하면 부정적인 표정 어설 션을 살펴보십시오. –

답변

2

부정적인 표정 이것은 미리와 같다을 배후가 당신의 문제를 해결하는 데 사용될 수 있습니다. 다음 정규식은이 경우 작업을 수행해야합니다.

(?<!SHOW)(CREATE TABLE)(?! IF) 

이 경우 "SHOW"또는 "IF"가 선행되지 않은 "CREATE TABLE"의 인스턴스를 찾습니다. 그룹의 공백을 확인하십시오.

그런 다음 전체 라인에 맞게

^.*(?<!SHOW)(CREATE TABLE)(?! IF).* 

를 사용할 수 있습니다.

미리보기 및 뒤에서 살펴보기 here을 읽을 수 있습니다.

+0

.. 대단한! 그것은 작동합니다. 나는 여러면에서 부정적 예측을 시도했지만 "SHOW"다음에 그 공간을 놓쳤습니다. 나는 당신이 첨부하고 공부할 링크를 돌볼 것입니다. 감사! – user1508429

관련 문제