フィルタ (ソフトウェア)

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

フィルタ: filter)は、データストリームを処理するコンピュータプログラムである。

概要[編集]

UNIXなどのオペレーティングシステムでは、各種フィルタプログラムが備わっている。Windowsでもシェルに組み込みの簡単なフィルタがあり、それらはMS-DOSに存在したフィルタコマンド群の改良版である。

DOSの例[編集]

UNIXなどと同様、フィルタは一般に標準入力からデータを取り出し、標準出力に主な結果を書き出す。何らかのデバイスやファイルからデータを取り出すには、入力オペレータ ("<") を使う。同様に、出力を何らかのファイルやデバイスに行うには、出力オペレータ (">") を使う。既存のファイルに出力を追加する形で行うには、アペンドオペレータ (">>") を使う。

フィルタはパイプの要素として使われる。パイプオペレータ ("|") を使ってコマンドを繋ぐことで、左側のコマンドの標準出力が右側のコマンドの標準入力に接続される。初期のDOSでの処理では、findsortというフィルタプログラムが使われることが多かった。

例:

  • find "キーワード" < 入力ファイル名 > 出力ファイル名
  • sort "キーワード" < 入力ファイル名 > 出力ファイル名
  • find /v "キーワード" < 入力ファイル名 | sort > 出力ファイル名

このようなフィルタがバッチファイル(*.bat、*.cmd など)で使われる。

Windowsの例[編集]

Windowsでは、さらに様々なフィルタがある。一部はフリーウェアシェアウェアであり、商用プログラムも存在する。これらの多くはUNIXのフィルタの機能を真似たものである。一部のフィルタプログラムはグラフィカルユーザインタフェース (GUI) を持ち、特定のデータ処理データマイニングのためにカスタマイズされたフィルタをユーザーが設計できるようになっている。

UNIXの例[編集]

古典的なフィルタとしてgrepがある。これは指定された文字列を含むテキスト行を単純な形式で出力するコマンドである。次のような使用例がある:

 cut -d : -f 1 /etc/passwd | grep foo

この例では、cutコマンドで passwdファイルの第一フィールド(ユーザー名)を取り出し、それをgrepコマンドに渡す。grepコマンドはユーザー名に "foo" という文字列が含まれるものだけを出力する。つまり、全体として"foo"という文字列がユーザー名に含まれる全ユーザー名をリストアップしていることになる。

sedで同じことをする例を次に示す。

 sed -e 's/\([^:]*\):.*/\1/' /etc/passwd | grep foo

AWKで同じことをする例を次に示す。

 awk -F: '{print $1}' /etc/passwd | grep foo

Perlで同じことをする例を次に示す。

 perl -ne '@F = split(/:/); print shift(@F), "\n";' /etc/passwd | grep foo

UNIXの主なフィルタプログラム[編集]

UNIXの主なフィルタプログラムを以下に列挙する。なお、PerlやAWKsedは高機能フィルタとしても使えるプログラミング言語である。