少なくともすべてのコレクションを含むが、順序に関係なく、連続したコレクションは含まない行を印刷します。

少なくともすべてのコレクションを含むが、順序に関係なく、連続したコレクションは含まない行を印刷します。

問題は、ファイルを引数として受け入れ、順序に関係なく、少なくともすべてのコレクションを含むすべての行を印刷しますが、[2つの連続したコレクションは同じではありません。]。

たとえば、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複数の通貨の代わりに 1 回の通話を使用することもできます。

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は大文字と小文字を区別するモードを有効にし、二重コレクションを含む行を削除してから、1つ以上のコレクションを含む行を印刷します。

関連情報