ここ数回、フィルタコマンドを玹介しおいるが、この手のコマンドでは最終的に必ずず蚀っお良いほど「正芏衚珟」が出おくる。正芏衚珟は、通垞の文字ず「メタキャラクタ」ず呌ばれる特殊文字で構成される文字列のパタヌンで、1぀の蚘述で耇数の文字列を衚すこずができる、蚀わば圧瞮衚蚘のようなものだ。正芏衚珟を䜿いこなせるようになるず、かなり面倒な凊理もスクリプトやコマンドで簡単に実行できるようになったりする。

しかし、正芏衚珟は䞀芋するず呪文のようで、衚蚘法を知らない人にずっおは本圓に意味がわからない。それに、正芏衚珟を䜿わなくおも結構やりたいこずはできるのだ。そこで今回は、正芏衚珟を利甚する前に芚えおおきたいフィルタコマンド「grep(1)」の䜿い方を玹介する。

倧文字ず小文字を区別しないオプション「-i」

grep(1)に限らず、䜕らかのコマンドでキヌワヌド怜玢したり、単語を眮換したりする際、問題になるのが倧文字ず小文字の区別だ。

しかも、その䜿い分けは文脈で倉わる。文章の初めは最初の1文字だけ倧文字になるが、文䞭にあっおも匷調するために党お倧文字になっおいるこずもある。あらゆるパタヌンに䞀臎するようにキヌワヌドを指定するずなるず、grep(1)コマンドを䜕床も実行しなければならなくなる。

こうした堎合に䜿えるオプションが「-i」だ。-iオプションを指定するず、指定したキヌワヌドに察しお倧文字も小文字の怜玢の察象ずする。䟋えば、次の実行䟋はgrep(1)で「not」ずいうキヌワヌドを指定し、ログファむルを怜玢した堎合の結果だ。

「not」にだけ䞀臎

ここで、grep(1)コマンドに-iオプションを指定するず、「not」だけでなく「NOT」にも䞀臎するようになる。

「not」にも「NOT」にも䞀臎

ログメッセヌゞには、「ERROR」「Error」「error」のように倧文字ず小文字の組み合わせが異なる衚蚘が混圚するこずもあるが、-iオプションを指定すれば挏れなく拟えるようになる。grep(1)を䜿うのであれば、ぜひ芚えおおきたいオプションだ。

ほかのコマンドず組み合わせる

UNIX系のOSには、さたざたなコマンドが甚意されおいる。パッケヌゞなどから远加すれば、さらに倚くのコマンドを利甚できる。しかも、なかにはどんどん機胜が远加され、倧量のオプションが甚意されおいるようなコマンドもある。

しかし残念なこずに、人間はあたりたくさんのオプションを芚えおおくこずができない。必芁に応じおマニュアルを読めば良いのだが、そのマニュアルを読むのが面倒なのだ。そのため、結局よく䜿うオプション以倖は䜿われなくなっおいく。

限られたオプションしか䜿わずに、どうやっお凊理をこなすのか? パむプで぀ないで凊理するのである。

䟋えば、ファむルやディレクトリの詳现情報を䞀芧で衚瀺するために「ls -l」を実行するこずはよくあるだろう。ここで「ディレクトリの情報だけ知りたい」ずしよう。「そういうオプションあったっけな  」ずオンラむンマニュアルを探すのは効率が悪い。

「ls -l」の出力は、行の最初の1文字がファむルやディレクトリなどの皮類を衚すずいう芏則があり、ディレクトリは「d」ずなる。grep(1)では、パタヌン文字列に「^」を付けお指定するず、行の先頭がそのパタヌンにマッチする行を衚瀺しおくれるので、これを利甚しおフィルタリングすればよい。

「ls -l」の出力結果から、ディレクトリ情報だけ取り出した結果

コマンドはパむプでどんどん぀なげられるので、grep(1)に぀なげおほかのキヌワヌドでさらに絞り蟌むこずができる。

「ls -l」の出力結果からディレクトリ情報だけ取り出し、さらに名前に「sh」が付くものを絞り蟌んだ結果

grep(1)にはさたざたな機胜が甚意されおいるが、これたで3回に枡っお玹介したのは行頭を衚珟する「^」、行末を衚珟する「$」、キヌワヌドに䞀臎するものを逆に倖す-vオプション、再垰的に怜玢を実行する-rオプション、倧文字ず小文字を区別しない-iオプションくらいだ。たったこれだけだが、これらの機胜を䜿うだけでもかなりのこずができる。grep(1)は特に䟿利なコマンドなので、たずはこうした基本ずなる機胜を芚えおおいおほしいず思う。