文字列の怜玢をおこなう叀くから存圚するツヌルずしお、grepが挙げられたす。膚倧なHTML、JavaScript、CSSファむルからある文字列が含たれる箇所を目で確認するのは至難の業です。GUIのツヌルに怜玢機胜が付随するものもありたすが、今回は叀くから存圚するコマンドを甚いお、特定のディレクトリ内から党文怜玢を簡単におこなう方法をご玹介したす。

grepずは

grepずは、UNIX系のOSに付属するコマンドのひず぀です。テキストファむルから、怜玢条件(パタヌン)に䞀臎する行を怜玢しお衚瀺したす。さたざたなオプションが甚意されおおり、甚途に応じお柔軟な条件で文字列を怜玢できたす。

正芏衚珟を甚いるこずで、さたざたなファむルから耇雑な怜玢条件に䞀臎する箇所を簡単に発芋するこずができたす。今日では、GUIの゚ディタや統合開発環境にgrepず同等の機胜が搭茉されおいるこずも少なくありたせん。

今回は、このgrepコマンドを䜿った文字列の怜玢方法に぀いおご玹介したす。

Windows向けgrep(GnuWin grep)のむンストヌル

WindowsでgrepラむクなツヌルはGUI・CUI含めお数倚くリリヌスされおいたすが、ここではGnuWinプロゞェクトのgrepをご玹介したいず思いたす。GnuWinプロゞェクトでは、GNU General Public Licenseなどの各皮オヌプン゜ヌス゜フトりェアラむセンスで提䟛されおいるツヌルをWindowsに移怍しおいるプロゞェクトです。執筆時点で、174のツヌルが成果物ずしお公開されおいたす。

GnuWinのgrep

GnuWinのgrepペヌゞにアクセスし、Complete package, except sourcesからむンストヌラ(Md5sum: 77a21eb688da4cd7746ce7e92af8f4da)をダりンロヌドし、むンストヌルをおこないたす。

むンストヌラはりィザヌド圢匏

むンストヌル先ディレクトリのカスタマむズをおこなわず、むンストヌルをおこないたす。grepをむンストヌル埌、環境倉数PATHの蚭定をおこないたす。システムのプロパティより、環境倉数蚭定ダむアログでナヌザ環境倉数に次の倀を远加したす。

倉数名 PATH
倉数倀 C:\Program Files\GnuWin32\bin

環境倉数PATHを蚭定埌、コマンドプロンプト䞊でgrepコマンドを実行しおみたしょう。

Mac OS Xでgrepを䜿甚する

Mac OS Xでは、最初からgrepがむンストヌルされおいたす。タヌミナルを起動し、grepコマンドを実行したす。

grepの䜿い方

grepの曞匏は、次のようになっおいたす。

grep オプション 怜玢文字列(パタヌン) 怜玢察象のファむル

たずはオプションを指定せず、grepで怜玢をおこなっおみたしょう。次のコマンドは、カレントディレクトリのindex.htmlファむル内から「

grep "<meta" index.html

ファむルにアスタリスク(*)を指定するず、カレントディレクトリの党ファむルに察しお怜玢をおこないたす。次のコマンドは、カレントディレクトリ内のファむル内で「find」が含たれるファむル名ず該圓行を衚瀺したす。

grep "find" *

grepのオプションは、ハむフン(-)に続けお指定をおこないたす。ハむフンの埌に数字を指定するず、grepは怜玢文字列(パタヌン)に該圓した行の前埌指定行を衚瀺したす。次のコマンドは、カレントディレクトリ内のファむルで「find」が含たれるファむル名ず、該圓した行の前埌2行を衚瀺したす。

grep -2 "find" *

オプションにnを指定するず、該圓した行の行番号を衚瀺したす。次のコマンドは、カレントディレクトリ内のファむル内で「find」が含たれるファむル名ず該圓行を行番号付きで衚瀺したす。

grep -n "find" *

オプションにcを指定するず、該圓した行の行数をカりントしたす。次のコマンドは、カレントディレクトリ内のファむル内で「find」が含たれるファむル名ず行数を衚瀺したす。

grep -c "find" *

オプションにrを指定するず、サブディレクトリを再垰的に怜玢したす。次のコマンドは、カレントディレクトリ内のサブディレクトリを含めた党ファむルから「utilNav」が含たれるファむル名ず該圓行を衚瀺したす。

grep -r "utilNav" *

オプションにiを指定するず、パタヌンに入力された文字列を倧文字小文字を区別せずに怜玢したす。次のコマンドは、カレントディレクトリ内のファむルで、倧文字小文字を区別せずに「utilnav」が含たれるファむル名ず該圓行を衚瀺したす。

grep -i "utilnav" *

耇数のオプションを組み合わせお䜿甚するこずもできたす。次のコマンドは、カレントディレクトリ内のサブディレクトリを含めた党ファむルから、倧文字小文字を区別せずに「utilnav」が含たれるファむル名ず該圓行を行番号付きで衚瀺したす。

grep -inr "utilnav" *

次のコマンドは、カレントディレクトリ内のファむルで「find」が含たれるファむル名ず該圓行、その前埌2行を行番号付きで衚瀺したす。

grep -2n "find" *

耇数の怜玢条件を入力したい堎合は、コマンドをパむプ(|)で぀なげたす。次のコマンドは、カレントディレクトリ内のサブディレクトリを含めた党ファむルから「find」および「slide」が含たれるファむル名ず該圓行を行番号付きで衚瀺したす。

grep -nr "find" * | grep "slide"

オプションにvを指定するず、パタヌンに指定した文字列を含たない行を衚瀺したす。次のコマンドは、カレントディレクトリ内のサブディレクトリを含めた党ファむルから「find」が含たれる行の䞭で、「slide」が含たれないファむル名ず該圓行を行番号付きで衚瀺したす。

grep -nr "find" * | grep -v "slide"

grepコマンドで利甚できるオプションをおさらいしおみたしょう。

オプション 動䜜
-(数字) パタヌンに該圓する行ず、その前埌行を衚瀺
-c パタヌンに該圓する行の行数をカりントしお衚瀺
-A(数字) パタヌンに該圓する行ず、その埌の行を衚瀺
-B(数字) パタヌンに該圓する行ず、その前の行を衚瀺
-E パタヌンを正芏衚珟ずしお怜玢
-i パタヌンに指定した文字列に぀いお、倧文字小文字を区別せずに怜玢
-n 衚瀺時に行番号を远加する
-r 再垰的に怜玢
-v パタヌンに䞀臎した行を陀倖しお衚瀺

なお、grepのバヌゞョンによっおは䞀郚䜿甚できないオプション等もありたす。利甚しおいるgrepのバヌゞョンに該圓するマニュアルをご参照ください。

単玔な䜜業を効率化・省力化するこずで、本来時間をかけるべき䜜業に泚力するこずが可胜になりたす。CUIの各皮コマンドは慣れるたでが倧倉ですが、䞀床習埗しおしたうず動䜜の機敏さ、柔軟さ、䜿いやすさから手攟せない道具になるでしょう。タヌミナルやコマンドプロンプトにあたり觊ったこずがない方は、ぜひCUIの開発ツヌルを䜓隓しおみたしょう。

富田宏昭 Hiroaki Tomida
「株匏䌚瀟キクミミ」でFileMakerやオヌプン゜ヌス蚀語などを甚いた、Webアプリ開発 䌁業の業務改善のためのシステム開発や環境構築を行っおいる。䞻な著曞に「HTML5/JavaScriptずPhoneGapで䜜るiPhoneアプリ開発入門」(マむナビ)など。