grepで0個からn個までの一致みたいなやり方

こんにちは、minoruです。

Bashのgrepで、「a」の後に「b」がいくつか続いて「c」の書いてある文字列を探したいが、「b」は0個~3個続くものを探したくて、「b」が4つ以上続くものは除外したい。こういう場合はどう書いたら良いか?「b」が4つ以上続く場合は残したいので「.*」は使えない。

abbbc
ac
abbbbbbbc
abc
abbbbbc

こういう場合は以下のように書く。

grep -E 'a(b{0,3})c' ファイル名

-E オプションを使用して、正規表現を拡張しています。実行結果は以下のようになる。

abbbc
ac
abc

"{0,3}"は直前の文字列「b」が0回から3回繰り返されることを示します。つまり、「b」が0個でも1個でも2個でも3個でも検索することができます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする