フィルタ (ソフトウェア) – Wikipedia
フィルタ(英: filter)は、データストリームを処理するコンピュータプログラムである。
UNIXなどのオペレーティングシステムでは、各種フィルタプログラムが備わっている。Windowsでもシェルに組み込みの簡単なフィルタがあり、それらはMS-DOSに存在したフィルタコマンド群の改良版である。
DOSの例[編集]
UNIXなどと同様、フィルタは一般に標準入力からデータを取り出し、標準出力に主な結果を書き出す。何らかのデバイスやファイルからデータを取り出すには、入力オペレータ (““) を使う。既存のファイルに出力を追加する形で行うには、アペンドオペレータ (“>>”) を使う。
フィルタはパイプの要素として使われる。パイプオペレータ (“|”) を使ってコマンドを繋ぐことで、左側のコマンドの標準出力が右側のコマンドの標準入力に接続される。初期のDOSでの処理では、findとsortというフィルタプログラムが使われることが多かった。
例:
- 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やAWKやsedは高機能フィルタとしても使えるプログラミング言語である。
Recent Comments