2012-01-11 2 views
9

나는 역 참조를 가진 정규 표현식을 가지고있다. 어떻게 bash 스크립트에서 사용할 수 있습니까?배쉬에서 역 참조를 사용하는 방법

grep -E "CONSTRAINT \`(.*)\` FOREIGN KEY" temp.txt 

하는 경우가

CONSTRAINT `fk_dm` FOREIGN KEY 

에 적용

(. *) I가 일치 무엇을 인쇄 할 그러한 I 출력

fk_dm 

답변

13
$ echo 'CONSTRAINT `helloworld` FOREIGN KEY' | grep -oP '(?<=CONSTRAINT `).*(?=` FOREIGN KEY)' 
helloworld 
원하는
-o, --only-matching  show only the part of a line matching PATTERN 
-P, --perl-regexp   PATTERN is a Perl regular expression 

(?=pattern) 
    is a positive look-ahead assertion 
(?!pattern) 
    is a negative look-ahead assertion 
(?<=pattern) 
    is a positive look-behind assertion 
(?<!pattern) 
    is a negative look-behind assertion 
+0

자세히 설명해 주시겠습니까? <= 및? = – metdos

+0

여러 경기를 인쇄하려면 어떻게해야합니까? – metdos

+0

당신은'substitution'을 사용해야합니다. – kev

-2
grep -E 'CONSTRAINT \`(.*)\` FOREIGN KEY' temp.txt 
+1

당신은이 경우에 아무런 영향을 미치지 만 따옴표를 변경, 영업의 질문의 일부를 반복했다. –

+0

그들은 : OP는 "어떻게 bash 스크립트에서 사용할 수 있습니까?" 작은 따옴표가 답입니다. –

+0

백틱은 원본에서 이스케이프 처리되므로 명령 대체로 간주되지 않습니다. –

관련 문제