再びegrep、及びfgrep
以前の投稿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