こんにちは、minoruです。
Bashのgrepで、「a」の後に「b」がいくつか続いて「c」の書いてある文字列を探したいが、「b」は0個~3個続くものを探したくて、「b」が4つ以上続くものは除外したい。こういう場合はどう書いたら良いか?「b」が4つ以上続く場合は残したいので「.*」は使えない。
abbbc
ac
abbbbbbbc
abc
abbbbbc
ac
abbbbbbbc
abc
abbbbbc
こういう場合は以下のように書く。
grep -E 'a(b{0,3})c' ファイル名
-E オプションを使用して、正規表現を拡張しています。実行結果は以下のようになる。
abbbc
ac
abc
ac
abc
"{0,3}"は直前の文字列「b」が0回から3回繰り返されることを示します。つまり、「b」が0個でも1個でも2個でも3個でも検索することができます。