このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linuxコマンドの基本:フィルタとは

フィルタとは

 Linuxには、標準入力からデータを受け取り、何らかの処理を行ってその結果を標準出力に返すコマンドが多数存在します。これらのコマンドは、入力データを特定の方法でフィルタリングする役割を持つため、総称してフィルタと呼ばれます。

 フィルタは、パイプラインと組み合わせて使用することで、複数のコマンドを連携させて高度なデータ処理を行うことができます。データの抽出、整形、並べ替えなど、さまざまな操作が可能となり、Linuxの強力なテキスト処理機能を支えています。

フィルタの例 :headコマンド

 フィルタの一例として、headコマンドを紹介します。このコマンドは、ファイルの先頭から指定した行数分だけを標準出力に出力するコマンドです。特に行数を指定しない場合は、最初の10行を表示します。

例:ファイルの先頭10行を表示

user01@ubuntu:~$ head /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
# You can also override PATH, but by default, newer versions inherit it from the environment
#PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

 headコマンドは、入力ファイルを指定しない場合は標準入力を使用します。そのため、フィルタとしてパイプラインと組み合わせることができます。

例:コマンド履歴の先頭10行を表示

user01@ubuntu:~$ history | head
  905  ls --help 
  906  clear
  907  cat --help 
  908  ls --help 
  909  clear
  910  cat --help 
  911  ls --help 
  912  cp --help 
  913  mv --help
  914  tar --help

このように、フィルタを使用してデータの一部を抽出することが可能です。

代表的なフィルタコマンド

 Linuxには、フィルタとして使用できる多くのコマンドが用意されています。以下に、よく使われる代表的なフィルタコマンドを挙げます。

コマンド役割
cat入力をそのまま出力する。
headファイルの先頭部分を表示する。
tailファイルの末尾部分を表示する。
grep指定したパターンに一致する行だけを表示する。
sort入力を並べ替える。
uniq重複した行を削除またはカウントする。
tac入力を逆順に出力する。
wc行数、単語数、バイト数を出力する。
cut入力から特定のフィールドや文字列を抽出する。
tr文字の変換や削除を行う。
sedストリームエディタ。テキストの置換や編集を行う。
awkテキストのパターン処理やデータ操作を行うプログラミング言語。
nl行番号を付けて出力する。
rev各行の文字を逆順にして出力する。
fold長い行を指定した幅で折り返して出力する。
paste複数のファイルを横に結合して出力する。
columnテキストを列形式で整形して出力する。
代表的なフィルタコマンド

 これらのコマンドは、それぞれ特定のデータ操作に特化しており、パイプラインと組み合わせることで強力なデータ処理を実現します。詳細な使用方法については、各コマンドのmanページを参照してください。

まとめ

  • フィルタとは、標準入力からデータを受け取り、何らかの処理を行って標準出力に結果を返すコマンドの総称です。
  • フィルタを活用することで、データの抽出、整形、並べ替えなど、さまざまなテキスト処理が可能になります。
  • パイプラインと組み合わせることで、複数のフィルタを連携させて高度なデータ処理を効率的に行うことができます。
  • Linuxには多数のフィルタコマンドが用意されており、それぞれが特定の役割を持っています。これらを理解し活用することで、システム管理やスクリプト作成の際に大きな力となります。