皆さんこんにちは。前回の記事ではパイプラインについて解説しました。詳しい内容は下記を参照してください。
ここまで、catのように、Linuxでは標準入力を入力として受け取り、標準出力に出力するコマンドが多数あります。
このようなコマンドをまとめて、「フィルタ」と呼びます。
フィルタの例 – headコマンド
フィルタの例として、headを紹介します。このコマンドはファイルの先頭から指定した行数だけを標準出力するコマンドです。特に行数を指定しない場合は、最初の10行を表示します。

headコマンドは、入力ファイルを指定しない場合は標準入力が入力として使用されます。そのため、headコマンドはフィルタの一種です。headコマンドをhistoryコマンドと組み合わせることで、次のようにコマンド履歴を先頭の10行だけ表示可能です。

代表的なコマンド
コマンド | 役割 |
cat |
入力をそのまま表示
|
head |
先頭の部分を表示
|
tail |
末尾の部分を表示
|
grep |
指定した検索パターンに一致する行だけを表示
|
sort |
順番に並び替える
|
uniq |
重複した表を取り除く
|
tac | 逆順に出力 |
wc |
行数やバイト数を出力する
|
Linuxには上記の様にたくさんのコマンドが用意されています。このうち、よく使われるフィルタについて紹介します。特にgrepとsortなどは、以降紹介します。
コマンドの組み合わせ
フィルタは単独でも役立ちますが、パイプラインで他のコマンドと組み合わせることで真価を発揮します。フィルタを利用してどのようにコマンドを組み合わせていくかを具体例を挙げて紹介します。
/binディレクトリの中のファイルをサイズの大きい順に並べる
という問題を考えます。ファイルサイズを調べるコマンドはいくつかありますが、ここでは、duコマンドを使います。
du [option] [file/directory]
duコマンドは-bオプション使用すると、因数で指定されたファイルのサイズをバイト単位で表示します。次の例では、因数に/bin/*と指定することで、/binのディレクトリの中の全てのファイルを対象としています。

こうやって並べてみても、ただファイルが乱雑していて見にくいですね。そこで、サイズ順に並び替えてみましょう。
sortコマンドはオプション指定-nすることで、数値順でソートできます。
こちらの記事にはsortオプションについてたくさん載っているので、良かったミラてください

続いて、これを大きい順にしましょう。sort -rで逆順にできますが、練習のために入力の順序を逆にして出力するtacコマンドを使用しましょう。

これでファイルサイズを大きい順に表示できました。これを5つだけ表示したいのであれば、head -n 5で最初の5行を表示可能です。パイプでつないでみましょう。

このように、組み合わせることで複雑な処理を可能としているのがパイプラインです。「指定されたディレクトリ内にあるファイルのファイルサイズを調べて、上位5つを表示する」という専用のコマンドを作るよりも、順番を並び替えるなどをシンプルに組み合わせたほうが便利で、様々なケースを柔軟に対応可能です。
このようなパイプライン処理と、様々なフィルタが用意されていることが、Linuxがテキスト処理に強いと言われている理由の一つです。
スポンサードサーチ
まとめ
今回の記事ではフィルタについてまとめました。次はこれらを応用してテキストを処理していきますので、しっかり理解しましょう。
コメントを残す