次のパターンに一致する文字列を取得しようとしています。で始まり、foo
で終わりますbar
。
grep -e "^foo*bar$"
答え1
一致させるパターンは3つの部分に分かれています。
- 最初は、「foo」で文字列を開始することです。したがって、スタートアンカー '^foo'を使用してください。
- 2番目は文字列を「bar」で終わります。ここでは、終了アンカー 'bar$'を使用します。
- 3番目の部分は、開始アンカーポイントと終了アンカーポイントの間のコンテンツです。あなたの場合、すべての文字を0回以上一致させようとします(つまり、間に文字がある場合とない場合があります)。これは「.*」という表現で表されます。ドットはすべての文字と一致し、アスタリスク数量子は0回以上一致することができることを指定します。
これをすべて合わせると、次のような表現が出ます。
grep '^foo.*bar$' file
たとえば、次のテストファイルを考えてみましょう。
$ cat testfile
foobar
foo bar
foo 123 bar
123 foo bar
foo bar 123
123 foo bar 123
次にgrep
、次のコマンドを実行します。
$ grep '^foo.*bar$' testfile
foobar
foo bar
foo 123 bar
grep -e "^foo" -e "bar$" file
注釈()に指定したバリアントは異なる動作をします。
$ grep -e "^foo" -e "bar$" testfile
foobar
foo bar
foo 123 bar
123 foo bar
foo bar 123
-e
これは、OR演算を使用してオプションを結合するためです。元の結果に加えて、結果の一致と結果の一致も^foo.*bar$
取得できます。^foo
bar$