IFS

12. ストリーム・ファイル内の文字列を検索するには - grepコマンド

IFS に格納されたストリーム・ファイルの中から、特定の文字列を検索したい場合がある。
例えば、以下のような場合である。

  • HTML ファイル中から、特定の JavaScript 関数を参照している箇所を全て抽出したい。
  • CSV ファイル中から、特定の得意先名が記述されたレコードを全て抜き出したい。

QShell コマンドの grep を用いることで、上記のような、特定の文字列を検索する処理を行うことが出来る。

■ grepコマンドの構文

構文
grep パターン ファイル名 ...

grep コマンドは、上記の構文に従って、「ファイル名」で指定されたファイル中から、
「パターン」で指定された文字列を検索し、画面に表示する。「ファイル名」を複数指定すると、
複数のファイル中から文字列を検索することが出来る。

■ 使用例

1. HTMLファイル DSPDTA01.HTM中から、関数 chkInputValidity を参照している行を
    全て抜き出す。

grep chkInputValidity DSPDTA01.HTM

2. カレント・ディレクトリーにあるすべてのHTMLファイル中から、関数 chkInputValidityを
    参照している行を全て抜き出す。

grep chkInputValidity *.HTM

ここでは、シェルのワイルドカード展開を使って、カレント・ディレクトリーの全ファイルを指定している。

さて、上記の例 2 では、カレント・ディレクトリーに存在する全ファイルの内容を検索する方法をご案内した。
しかしこの方法では、サブ・ディレクトリー中にあるファイルは検索対象とはならない。

サブ・ディレクトリーをたどってファイルを検索していくには、 grep コマンドに加えて、 find コマンドの力も
必要となる。 find コマンドについては、次回の記事で説明する。