2017-04-26 1 views
-1

정확히 10 자이고 3 개의 연속 모음의 하위 문자열을 포함하는 단어를 찾기 위해 GREP를 원합니다. 그리고 내가 노력하고 지금까지있어,GREP는 3 개의 연속 모음의 하위 문자열을 포함하는 단어를 찾고 길이는 정확히 10

(.*[aeiou]{3}.*){10} 

그것은 제대로 일을 dosent. 그래서 누군가가 나를 도울 수 있다면 위대 할 것입니다. 고맙습니다. grep

+1

['grep -oP '\ b (? = \ w {10} \ b * \ w * [aeiou] {3} \ w * \ b''] (http : //ideone.com/hWnEK1) –

답변

1

당신은 사용할 수 있습니다

grep -E "[aeiou]{3}" | grep -E "^.{10}$" 

또는 egrep을 :

egrep "[aeiou]{3}" | egrep "^.{10}$" 

awk도 작동합니다 :

awk 'length == 10 && /[aouei]{3}/' 
+0

을 확인하십시오. awk 솔루션이 좋다. 'grep -E'와'egrep'은 실제로 똑같은 명령을 다르게 입력합니다. –

0

당신은 펄 정규 표현식 grep을 사용할 수 있습니다 (-P를) ~하기 위해서 positive lookahead

grep -P "(?=[a-z0-9]{10}$).*[aeiou]{3}.*" test.txt 

그렙 옵션을 사용

-P, --perl-regexp   PATTERN is a Perl regular expression 

enter image description here


Regex Demo