私は現在、次のような特性を持つ単語を検索する必要があるUnixプロセスで問題に直面しています。以前に行ったよりもはるかに複雑なコマンドを書くのに役立つ人がいるかどうか疑問に思います。英語の単語の特徴は次のとおりです。
必ず…
- 正確に5文字の長さ
- 大文字または小文字の集合(a、e、i、o、u、またはy)で始まります。
- 途中に小文字「t」があります。
- 小文字の「s」で終わる
- 残りの文字は、英単語(例えば、大文字、小文字、ハイフン、数字など)に現れる任意の文字です。
これまで私はこのようなものを持っています。
[aeiouy].t.s
かっこなど。これらはすべてgrepに関連しており、/usr/share/dict/words
コマンドが読み取る内容を見つけるために使用されます。どのパラメータを使用するかを知る必要があります。本当に混乱しています。
私が見つけた主な問題は、最初の文字が大文字か小文字であることを確認し、残りの文字は大文字または小文字に交換できることを確認することです。
答え1
/usr/dict/words
1行に1単語ずつ。
あなたが逃している最も重要なことアンカーポイント単語の始めと終わりを一致させます。単語は1行に1つずつあるため、文字列(行)の先頭と末尾を一致させるために^
andを使用できます。$
grep '^[AEIOUYaeiouy].t.s$' /usr/dict/words
多くのバージョンの正規表現ツールには、単語の境界を可能にする拡張機能があります。
grep '\<[AEIOUYaeiouy].t.s\>' /usr/dict/words
答え2
grep "^[aeiouAEIOU].t.s\b" filename