汎用ツール利用のススメ
〜コラム〜
真崎 理人 MASAKI, Rihito
有限会社リヒトシステムズ
本文に戻る
コラム1:各汎用ツールのリファレンス(抜粋)と入手先
コラム2:正規表現(Regular Expression)
| COLUMN 1:各汎用ツールのリファレンス(抜粋)と入手先 |
|---|
|
「grep」ファイルの全文検索ツール
grepファミリー(grep, fgrep, egrep)は,パターンマッチングを行なうフィルタです.指定したファイル,または標準入力を検索してパターンと一致する行をすべて出力します.この機能を使用すれば,ある膨大なデータの中から自分の必要なデータを抜き出したり,ある変数がプログラム中のどこにあるかを探したりすることができます.
主な使用法・・・・・・・・・・・・・・・・・・・・・・・・・・・
grep [pattern] [filename ...]
主なオプション・・・・・・・・・・・・・・・・・・・・・・・・・
-nオプション:行番号を表示させる指定
grepは,grepファミリーの中で最も古いもので,他にfgrepとegrepという仲間がいますが,その基本的な動作は変わりません.
「make」ソフトウェア開発プロジェクト向け,関連ファイル管理ツール
makeは,複数のソースファイルから構成されるオブジェクトファイルの管理を支援するためのコマンドです.makeはメイクファイルに指定された各ファイルのタイムスタンプを比較し,必要であればあらかじめ決められたコマンドを実行することができます.主にC言語のプログラム開発に用いられ,ソースファイルとオブジェクトファイルのタイムスタンプを比較してソースファイルが新しければ,オブジェクトファイルのコンパイルを行なうために用いられています.
主な使用法・・・・・・・・・・・・・・・・・・・・・・・・・・・
make -f [makefile]
メイクファイルの構成例
prog.exe: prog1.obj prog2.obj(オブジェクトファイルとそのソースファイル)
主なオプション・・・・・・・・・・・・・・・・・・・・・・・・・
-fオプション:デフォルト以外のメイクファイルを指定
その他・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
makeファミリーには,UNIX版make, Microsoft版nmake, Borland版makeなどがあります.その機能は概ね同一ですが,一部仕様の差異があるので注意が必要です.
「diff」ファイル内容を比較するツール
diffは,指定した2つのファイルを比較し,異なっている部分を表示するコマンドです.
主な使用法・・・・・・・・・・・・・・・・・・・・・・・・・・・
diff [oldfile] [newfile]
主なオプション・・・・・・・・・・・・・・・・・・・・・・・・・
-iオプション:アルファベットの大文字小文字を区別しない指定
その他・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
diffコマンドの出力した差分ファイルとpatchコマンドを利用することにより,古いバージョンのファイルを新しいバージョンのファイルに置き換えることができます.
「awk」高機能なファイル処理言語
awkはデータ操作のみならずさまざまな計算からレポートの作成までこなす高機能なプログラミング言語です.パターン一致(不一致に)対するアクションの記述に広く用いられています.
主な使用法・・・・・・・・・・・・・・・・・・・・・・・・・・・
awk -f [script] [input-files]
その他・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
その文法はC言語に似ており,C言語の入門用言語として学習されることも多い.また,awkの名の由来が作者であるAho氏,Weinberger氏,Kernighan氏の頭文字からなることは有名.
各ファイルの入手先例
「grep」「make」「diff」「awk」
「nmake」「WinDiff」
|
| COLUMN 2:正規表現(Regular Expression)入門 |
|---|
|
正規表現とは,文字や記号を用いて文字の並びのパターンを表す方法です.あるデータの中からあるパターンの文字列を探したい場合には,正規表現はとても便利な方法です. 自分の思い通りの文字の並びのパターンを作成するには,正規表現でのメタキャラクタ(特殊記号)の機能を知っておかなければなりません.
正規表現のメタキャラクタ(特殊記号)
任意の一文字
行頭と行末
文字の範囲 “[]”は,括弧内に文字を並べ,その中のいずれか一文字に一致するというパターンを指定します. 括弧内では“-(ハイフン)”を使用して,文字の範囲を指定できます. たとえば,文字が“V”か“B”であるパターンを表すと,“[VB]”となります. また, [0-9]は,1字の数字 [A-Z]は,1字の英大文字 [a-z]は,1字の英小文字 [a-zA-Z]は,1字の英文字 となります.
含まない指定
繰り返し
“*(アスタリスク)”は,直前の正規表現の0回以上の繰り返しを表わします.
たとえば,次のような文字の羅列を考えてみましょう.
A
B
AC
BC
ACC
BCC
これに対して“[AB]C*”は,すべての行にマッチしますが,“[AB]CC*”なら最初の2行はマッチ
しません.
このテクニックを利用して,1個以上のスペースのパターンを指定すると“□□*”となります.
“+(プラス)”は,直前の正規表現の1回以上の繰り返しを表わします.
上記の1個以上のスペースのパターンを指定すると“□+”となります.
“?(クエスチョンマーク)”は,直前の正規表現の0回か1回の繰り返しを表わします.
たとえば,下記のような文字の羅列すべてにマッチさせたい場合
8086
80168
80286
80386
80486
“80[1234]?86”とパターンを指定することですべてにマッチします.
正規表現のグループ化
組み合わせ
メタキャラクタの働きの打ち消し
|