두 번째 단어에 모음이 2개만 있는 줄을 추출하기 위한 Grep 템플릿

두 번째 단어에 모음이 2개만 있는 줄을 추출하기 위한 Grep 템플릿

예를 들어 콘텐츠가 포함된 파일이 있습니다.

hello world
it's nice to see you
amazing night
what a wonderful day
my name is Robert
still breathing
speaking bottom soul
something wrong

두 번째 단어에 정확히 두 개의 모음이 있는 줄을 일치시켜야 합니다. 따라서 출력은 다음과 같아야 합니다.

it's nice to see you
my name is Robert
speaking bottom soul

grep을 사용하여 이 작업을 어떻게 수행할 수 있나요?

답변1

확장 정규 표현식을 사용한 grep:

grep -iE '^[^[:blank:]]+[[:blank:]]+([^aeiou]*[aeiou]){2}[^aeiou]*\>' file

grep 및 PCRE

grep -iP '^\S+\s+([^aeiou]*[aeiou]){2}[^aeiou]*\b' file

Perl (솔직히 저는 steeldriver의 의견과 별개로 이 작업을 수행했습니다)

perl -ane 'print if (lc($F[1]) =~ tr/aeiou/aeiou/) == 2' file

awk '{col2 = tolower($2); gsub(/[aeiou]/,"",col2)} length($2) - length(col2) == 2' file

관련 정보