2017-05-07 1 views
0

egrep은 괄호 안의 서브 표현식의 결과를 출력 할 수 있습니까?egrep은 괄호로 묶인 서브 표현식의 결과를 출력 할 수 있습니까?

grep의 man 페이지를 확인했을 때 re_format(7)을 언급했습니다. man 7 re_format을 확인하면, 괄호로 묶인 서브 표현식에 대한 지원이 있다는 것을 알았고 pmatch array에이를 기록합니다.

그러나 어쨌든 egrep을 괄호로 묶은 부분 식만 출력하는 방법이 명확하지 않습니다.

+0

일부'grep' 버전은 정규 표현식의 일치하는 부분 만 출력하는'-o' 옵션을 가지고 있지만 캡쳐 그룹을 필요로하지 않습니다 ... 샘플 입력 행과 예상 출력을 추가해야합니다 ... 또한 grep이 사용할 수있는 유일한 명령입니까? 왜 sed/awk/perl 등을 사용하지 않겠습니까 – Sundeep

+0

인사말 @Sundeep -'grep' 만이 유일한 옵션은 아니지만 할 수 있다면 궁금합니다. 나는 당신이 참조하는 것과 같은 더 전문화 된 언어를 사용해야 할 것 같습니다. –

+0

예. 또는 아니오. 그것은 모두 당신이 의미하는 것에 달려 있습니다. 간결하고 테스트 가능한 샘플 입력과 예상 출력을 포함하여 [mcve]가 무엇을하고 싶은지 명확하게 보여주는 귀하의 질문을 편집하십시오. –

답변

0

아니, egrep는 괄호 표현식의 결과를 출력 할 수 없습니다.

0

인가이 무엇 개봉() (일치하는 3 인수에 대한 GNU AWK를 사용하는) 일을하려고 :

$ cat file 
aa(bb(cc(dd)(ee)ff)(gg))hh 

$ awk '{ while(match($0,/(.*)\(([^)]*)\)(.*)/,a)) { print ++c, a[2]; $0=a[1] a[3]} print "rest:", $0 }' file 
1 gg 
2 ee 
3 dd 
4 ccff 
5 bb 
rest: aahh 
+0

이것은 멋지며 여러분의 노력에 감사 드리며, 단지'egrep'으로 가능했는지 알고 싶었습니다. 어쨌든 고마워! –

+0

그게'그것 '에 달려 있습니다. 귀하의 질문에 내 의견을 참조하십시오. –

+0

나는 지금 당분간 막혀있다. (계속 노력해 주셔서 감사합니다!)하지만 https://www.freebsd.org/cgi/man.cgi?query=re_format&sektion=7에서 "parenthesized subexpression"을 검색하면 내가 무슨 말하는지 알 수있어. grep 만 출력하면됩니다. –

관련 문제