私は何をすべきかわかりません。 ~しようとする
egrep -i ^[^aeiou] [aeiou]$ /usr/share/dict/words
しかし、これはまったく機能しません。私は何が間違っていましたか?
答え1
シェルで式を引用する必要があります。
grep -i '^[^aeiou][aeiou]*$' /usr/share/dict/words
そうしないと、パターンが現在のディレクトリにあるファイル名に拡張される可能性があります。また、パターンの2つの部分の間にスペースを挿入したため、grep
2番目の部分は検索する必要があるファイル名と見なされます(「該当するファイルまたはディレクトリなし」エラーが発生します)。
ファイル/usr/share/dict/words
には1行に1つの単語があるため、-x
必要に応じて式でアンカーを使用または削除できます。
grep -ix '[^aeiou][aeiou]*' /usr/share/dict/words
を使用すると、-x
行全体grep
に一致する項目のみが返されます。
もしあなたなら必要[aeiou]*
コレクション(上記は空の文字列と一致するため、単一の子音単語を返すことができます):
grep -ix '[^aeiou][aeiou][aeiou]*' /usr/share/dict/words
または
grep -Eix '[^aeiou][aeiou]+' /usr/share/dict/words
答え2
以下を行う必要があります。
- 正規表現の引用
- 間のスペースを削除します(検索されます)
+
1つ以上のコレクションに一致するようにaを追加します(正規表現の機能egrep
)。
努力する:
egrep -i '^[^aeiou][aeiou]+$' /usr/share/dict/words