入力ファイルは、複数の10文字の組み合わせを含む行の外側にあります。
NGNAEAREAX EAHVSELYCI FNWGNLACQM AWKLRMDHIT PRYMFNYMVM
NCNREDEEEQ EAHVSELYCI FNWGNLACQM AWKLRMDHIT PRYMFNYMVM
最初の単語に「REGEX」という単語を構成する文字を含むすべての行を見つけるには、正規表現(PCREまたはBRE / ERE)が必要です。したがって、行の最初の単語には少なくともR 1、E 2、G 1、X 1が含まれている必要があります。
したがって、上記の結果は次のようになります。
NGNAEAREAX EAHVSELYCI FNWGNLACQM AWKLRMDHIT PRYMFNYMVM
ベストアンサー1
単一の正規表現と一致させることはできません(*)。最終的な真または偽の結果を得るには、各条件(R 1、E 2、G 1、X 1)を個別に論理的にANDして一緒にテストする必要があります。
たとえば、次のようにしますawk
。
$ awk '$1 ~ /R/ && $1 ~ /E.*E/ && $1 ~ /G/ && $1 ~ /X/' inputfile.txt
NGNAEAREAX EAHVSELYCI FNWGNLACQM AWKLRMDHIT PRYMFNYMVM
(*) 次の代替項目を使用して正規表現を作成できます。すべて5文字(R、E、G、E、X)の可能な組み合わせは異なる順序で表示されますが、これは非現実的です。
しかし、大文字と小文字を区別しない一致が必要で、GNU awkを使用している場合:
$ awk -v IGNORECASE=1 '$1 ~ /R/ && $1 ~ /E.*E/ && $1 ~ /G/ && $1 ~ /X/' inputfile.txt
または、GNU awkなしで大文字と小文字を区別しません。
$ awk '$1 ~ /[Rr]/ && $1 ~ /[Ee].*[Ee]/ && $1 ~ /[Gg]/ && $1 ~ /[Xx]/' inputfile.txt