2017-08-29 16 views
0

大文字または小文字のdで始まり、母音が続き、小文字のsで終わるファイルで5文字の単語を検索しようとしています。単語には、5文字の制限を満たす限り、特殊文字を含めることもできます。これは、私が出てきたコマンドであり、要件を満たさないエントリを除いて動作します。それは "Doris's"を返します。これは6文字の単語です。誰かが私が間違っていることについて何らかの方向を教えてもらえますか?私はオンラインで検索し、特にこれに関連するものは見つけられません。 「grepの」あなたが気付いていないことをやっている何ワイルドカードを使用してUNIXでgrepを使用する

grep -w '[dD][aeiouy]..[s]' /usr/share/dict/words

+0

単語 "Doris"はパターンを満たしているので、その行を返します。最後に '$'を追加することで正規表現を修正できます。 – jitendra

+0

また、正規表現の先頭に^を追加する必要があります。これは次のようになります:grep -w '^ [dD] [aeiouy] .. [s] $'/usr/share/dict/words – jitendra

答えて

0

は、それが先行するか何かでか続くのかどうか、単語全体として「ドリス」を含むすべての行を印刷するということです。

「Doris's」が表示され、「Doris」という単語がすべて含まれているため、それが印刷されます。

「ドリスがクッキーを食べているのが好きです」という行も印刷されます。なぜなら、「ドリス」も全体の単語として含んでいるからです。

このように、あなたの正規表現に、あなたが望む動作を得る追加「^」と「$」するには:それは中のテキストだけだ場合、「ドリスは」のみ一致していることを確認します

grep -w '^[dD][aeiouy]..[s]$' /usr/share/dict/words 

この線。

しかし、 "words"ファイル(1行につき1語)を見ているならば、すでに1行に1単語しかないので、grepの "-w"スイッチは必要ありません。

だから、これを試してみてください。

grep '^[dD][aeiouy]..[s]$' /usr/share/dict/words 

注: '^' と '$' あなたのために動作しませんが、 "egrepの" と "はgrepを" 交換してみた場合は、次のように:

egrep '^[dD][aeiouy]..[s]$' /usr/share/dict/words 
+0

これを試してみました。 。 –

+0

egrepでこれを試してください: egrep '^ [dD] [aeiouy] .. [s] $'/usr/share/dict/words –

関連する問題