
長さが 10 文字で、3 つの連続したコレクションで構成される部分文字列を含む単語のセットです。私はこれまでこれらのコマンドを試しました。
grep -E '^.{10}$'| grep 'a*.e*.i*.o*.u*' words2.txt
grep -E '^.{10}$&a*.e*.i*.o*.u*' words2.txt
OCRによるデータの入力と抽出このスクリーンショット:
unpernicious
unperspicuous
unpervious
unpious
unpiteous
unpiteously
unpiteousness
unplebeian
unplenteous
unportmanteaued
unportuous
unprecarious
unprecious
unprecocious
unpredacious
unpresumptuous
unpresumptuously
unpretentious
unpretentiously
unpretentiousness
unpromiscuous
unpropitious
unpropitiously
unpropitiousness
unpugnacious
unpunctilious
unquailed
unquailing
unquailingly
unqueen
unqueened
unqueening
unqueenlike
unqueenly
unquiescence
unquiescent
unquiescently
unquiet
unquietable
unquieted
unquieting
unquietly
unquietness
unquietude
unrapacious
unrebellious
unreligious
unreligiously
unreligiousness
unrighteous
unrighteously
unrighteousness
unsacrilegious
Unsagacious
unsalubrious
unsanctimonious
unsanctimoniously
unsanctimoniousness
unsanguineous
unsanguineously
unseditious
unseeable
unseeing
答え1
あなたの質問(IMHO)はで最もよく解決されますが、awk
あなたのコマンドに1つの問題を指摘したいと思います。
grep -E '^.{10}$'| grep 'a*.e*.i*.o*.u*' words2.txt
word2.txt
2回の呼び出しでファイルの内容をフィルタリングするには、grep
次のようにする必要があります。
grep -E '^.{10}$' words2.txt | grep 'a*.e*.i*.o*.u*'
2番目のモードは次のようにする必要がgrep
あります。[auoie]{3}
grep -E '^.{10}$' words2.txt | grep -E '[aouie]{3}'
最初の項目への入力はgrep
ファイルです。 2番目の入力はgrep
最初の出力ですgrep
。いいえあなたのファイル。
POSIXを使用するawk
(最新バージョンのGNUに似ていますawk
):
$ awk 'length == 10 && /[aouei]{3}/' words2.txt
unpervious
unplebeian
unportuous
unprecious
unquailing
unqueening
unquieting
unquietude
mawk
、BSD、awk
および過去のPOSIX実装は正規表現をawk
サポートしていません。{n}
ステファン・チャゼラスは次のように指摘しています。。
答え2
10文字を正確に推測しましたが、連続した3つのコレクションを見つけるには、次のグループを見つけます[AEIOU]
。
egrep '^.{10}$' | egrep -i '[AEIOU]{3}'
空白を拒否するには、次のコマンドを使用します。
egrep '^[^ \t]{10}$' | egrep -i '[AEIOu]{3}'
答え3
1つの単語/行を仮定すると、次のようにできます。
sed -nE '/^.{10}$/!d;/[aAeEiIoOuU]{3}/p' words.txt
答え4
内蔵grep
PCREサポート:
grep -iPx '(?=.*[aeiou]{3}.*).{10}'
または:
grep -wiP '(?=\w*[aeiou]{3}\w*)\w{10}'
1行に1つでない場合は、これらの単語を検索します(実装がその単語を含む行全体を印刷するのではなく、一致する単語のみを印刷することをサポートしている-o
場合は追加)。grep
そこ言葉任意のシーケンスを表します。言葉文字(文字(ラテンスクリプトでは発音区別記号のみを除く、(*UCP)
すべてのスクリプトの文字にaを追加しますé
が、同じ母音は除くα
)、数字、アンダースコア)。