単語を見つけるためのgrepパターン構文

単語を見つけるためのgrepパターン構文

私の最初のイニシャルが必ずしも連続して表示されないすべての単語を見つけようとしています。

私の最初のイニシャルは単語で始まるはずです。

私の最後のイニシャルは言葉を終わらせなければなりません。

私の中間イニシャルは言葉の間にあります。

パスワード:

grep '^j.*x$' file

(jは最初の初星、tは中間語、xは単語の終わり)

ベストアンサー1

まあ、あなたから始めます。

j.*t.*x

ただし、この.*ビットは一致します。何もない。したがって、文字のみに一致するように次の部分を制限してください。

j[[:alpha:]]*t[[:alpha:]]*x

これは[[:alpha:]]POSIX文字クラスです。と同じです[A-Za-z]。つまり、任意のアルファベット文字です。

これがあなたのパターンです。その後、grep完全な単語だけを返すように慎重に依頼してください。オプションを使用してこれを実行できます-w。これにより、単語以外の文字(スペースなど)、または行の先頭または末尾で区切られた各行の部分文字列に一致が制限されます。

-i大文字と小文字を区別せずに一致させるには、追加してください。

ライン全体ではなく、実際にパターンに一致する各ラインのビットのみを必要に応じて追加してください-o

あなたは最終的に得るでしょう

grep -i -o -w 'j[[:alpha:]]*t[[:alpha:]]*x'

テスト:

$ grep -i -o -w 'j[[:alpha:]]*t[[:alpha:]]*x' /usr/share/dict/words
janitrix

おすすめ記事