再びegrep、及びfgrep

7月 24, 2009

以前の投稿pgrep&egrepでegrepコマンドについて書いたのだが、若干認識違いがあったようで…
複数の文字列を検索にかけるときに使うもんだとばかり思っていたが、本来は「?」や
「+」等の拡張正規表現(extended)を使えるgrep、ということだそうだ。

ちなみに「?」は直前のひと文学の0または1個以上に一致、「+」は1個以上に一致する、という条件。

以下のコマンドだと、disk、scsi、deviceのうちいずれかを含む行をdmesgから検索する。
つまり「|」がor条件になる。なので、単に「複数のキーワードを指定できる」というのとは、ちと違いかと。

$ egrep ‘disk|scsi|device’ dmesg


それと、fgrepについて。
fgrep はgrep -Fと同じで、指定した文字列を正規表現の解釈をせずに、文字列のみとして扱う。
どんな時に便利かというと、検索対象の文字列に「?」や「[」 などの特殊文学がある場合、
grep だと¥でエスケープしないといけないところが、fgrep ならその必要がない。

例えば、dmesgから[sda]を含む行を検索したいとき、grepだと以下のようにする必要が
あるけど…

$ dmesg | grep “¥[sda¥]“


fgrepならこうなる。

$ dmesg | fgrep [sda]


おぉ、これはシンプルでよい。覚えておくと、便利かもね!

関連記事
pgrep&egrep

Linux関連記事一覧はこちらをどうぞ
↓ ↓ ↓
Linux-index


Categories: Linux