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個でも検索することができます。

LinuxやUbuntuをこれから試してみたい!と言う人や、今までWindowsで使っていたPCをWindowsは残したままLinuxやUbuntuを活用してみたい人は以下の本がおすすめ!
https://amzn.to/3Vl1oNx

LinuxやUbuntuを使おうとして、初心者の人が最初に「?」となりやすいのがコマンドでしょう。使い方がわかればこれほど簡単で便利なものはありませんが、最初は戸惑うのが普通です。そんな初心者に向けてマンガで超わかりやすいコマンドについて学べるのはシス管系女子みんとちゃんの本!
https://amzn.to/3FMTx5v

シェアする

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

フォローする