최소한 모든 모음을 포함하지만 순서에 관계없이 연속 모음은 포함하지 않는 줄을 인쇄합니다.

최소한 모든 모음을 포함하지만 순서에 관계없이 연속 모음은 포함하지 않는 줄을 인쇄합니다.

문제는 파일을 인수로 받아들이고 순서에 관계없이 적어도 모든 모음을 포함하는 모든 줄을 인쇄하지만 [연속된 두 개의 모음은 동일하지 않습니다.].

예를 들어 aaeaiou는 허용되지만 'aa'이므로 aaeiou는 허용되지 않습니다.

아래 스크립트는 거의 필요한 것이지만 연속성을 확인하지는 않습니다.

egrep -i '.[a]+' ${1} | egrep -i '[e]+' | egrep -i '[i]+' | egrep -i '[o]+'| egrep -i '[u]+'

참고: grep 및 루프 구조를 사용할 수 있지만 퍼지/고급 명령은 사용할 수 없습니다.

해결됨;

egrep -vi '[a][a]' ${1} | egrep -vi '[e][e]' | egrep -vi '[i][i]' | egrep -vi '[o][o]' | egrep -vi '[i][i]' | egrep -i '[a]+' | egrep -i '[e]+' | egrep -i '[i]+' | egrep -i '[o]+'| egrep -i '[u]+'

답변1

전체 줄을 제외하려는 경우(이중모음이 있는 경우) 다음과 같이 작동합니다.

grep -i a file | \
    grep -i e | \
    grep -i i | \
    grep -i o | \
    grep -i u | \
    grep -v -i '\([aeiou]\)\1'

답변2

grepsed여러 통화 대신 한 번의 통화를 사용할 수도 있습니다.

sed -rn '/(aa|ee|ii|oo|uu)/d; /a/{/e/{/i/{/o/{/u/p}}}}'

또는

sed -rn '/([aeiou])\1/d; /a/{/e/{/i/{/o/{/u/p}}}}'

원하는 경우 역참조를 사용하세요.

답변3

질문(질문 앞에 개행 문자가 있도록 약간 수정됨 but not aaeiou because of the 'aa')을 입력으로 사용:

$ cat hehe.txt
The problem is to write a script that takes a file as argument
and prints all the lines that contain -at least- all the vowels ,
-regardless of ordering-, but with [no two same consecutive vowels].

e.g aeaiou is allowed, 
but not aaeiou because of the 'aa'

The script below is almost what I need, but it does not check for
consecutiveness.

$ awk 'BEGIN { IGNORECASE=1 };
       ! /aa|ee|ii|oo|uu/ && ( /a/ && /e/ && /i/ && /o/ && /u/ )' hehe.txt
The problem is to write a script that takes a file as argument
-regardless of ordering-, but with [no two same consecutive vowels].
e.g aeaiou is allowed, 

스크립트 awk는 대소문자 구분 모드를 활성화하고 이중모음이 포함된 줄을 제거한 다음 각 모음이 하나 이상 포함된 줄을 인쇄합니다.

관련 정보