Linux/Unix の Pipe、Grep、Sort コマンドと例
⚡ スマートサマリー
LinuxおよびUnixのパイプ、grep、およびsortコマンドは、テキストを連結およびフィルタリングします。パイプは、あるコマンドの出力を次のコマンドに渡し、grepはパターンを検索し、sortは行を並べ替え、フィルタはそれらの間のデータを変換します。

パイプ、grep、およびソートは、 Linux コマンドラインは、小さなコマンドを組み合わせて強力なワークフローを構築できるため、非常に便利です。このページでは、それぞれのコマンドを具体的な例を交えて解説し、フィルターがどのようにそれらを連携させるかを示します。
Linux のパイプとは何ですか?
パイプはLinuxのコマンドの一つで、2つ以上のコマンドを連携させ、一方のコマンドの出力を他方のコマンドの入力として使用できます。つまり、各プロセスの出力がパイプラインのように次のプロセスに直接入力される仕組みです。記号「|」はパイプを表します。
パイプを使うと、2つ以上のコマンドを同時に組み合わせて連続して実行できます。複雑なタスクを瞬時に実行する強力なコマンドを利用できます。
例でこれを理解しましょう。
複数ページにまたがるファイルを表示するために「cat」コマンドを使用すると、プロンプトがすぐにファイルの最後のページに移動してしまい、途中の内容が表示されません。
これを回避するには、「cat」コマンドの出力を「less」コマンドにパイプで渡すと、一度にスクロールできるコンテンツの長さ分だけが表示されます。
cat filename | less
図解があれば分かりやすいでしょう。下の図は、パイプがどのようにしてあるコマンドの出力を次のコマンドに渡すかを示しています。
「pg」コマンドと「more」コマンド
「less」の代わりに、pgコマンドまたはmoreコマンドを使用することもできます。
cat Filename | pg
or
cat Filename | more
すると、ファイルを読みやすいように分割して表示でき、Enterキーを押すだけでスクロールダウンできます。下のスクリーンショットは、moreコマンドでページングされたファイルを示しています。
「grep」コマンド
例えば、テキストファイルの中から郵便番号などの特定の情報を検索したいとします。
自分で手動で内容をざっと見て trac情報を使用します。より良い選択肢は、 grep このコマンドは、文書から必要な情報をスキャンし、指定した形式で結果を表示します。
構文:
grep search_string
実際に動作を見てみましょう。下のスクリーンショットは検索結果を示しています。
ここでは、grepコマンドがファイル「sample」から「Apple」と「Eat」という文字列を検索しています。このコマンドには以下のオプションを使用できます。
| オプション | 演算 |
|---|---|
| -v | 検索文字列に一致しない行をすべて表示します |
| -c | 一致した行の数のみを表示します |
| -n | 一致する行とその番号を表示します |
| -i | 大文字と小文字の両方に一致します |
| -l | ファイル名だけを文字列で表示します |
上記で使用したファイルと同じファイルで、「-i」オプションを試してみましょう。下のスクリーンショットは、大文字小文字を区別しない結果を示しています。
'-i' オプションを使用すると、grep はすべての行から文字列 'a' (大文字小文字を区別しない) をフィルタリングします。
「並べ替え」コマンド
このコマンドは、ファイルの内容をアルファベット順に並べ替えるのに役立ちます。
このコマンドの構文は次のとおりです。
sort Filename
以下にcatで示すファイルの内容を考えてみましょう。
sortコマンドを実行すると、以下に示すように、それらの行がアルファベット順に並べ替えられます。
このコマンドには拡張機能もあり、それらは以下にリストされています。
| オプション | 演算 |
|---|---|
| -r | Reversesソート |
| -n | 数値順に並べ替えます |
| -f | 大文字小文字を区別しないソート |
以下の例は、ファイル「abc」の内容を逆順に並べ替えることを示しています。
フィルタとは何ですか?
Linuxには、awk、grep、sed、spell、wcなど、多くのフィルタコマンドがあります。フィルタは、あるコマンドから入力を受け取り、何らかの処理を行い、出力を生成します。
2つのコマンドをパイプで接続すると、最初のコマンドの「フィルタリングされた」出力が次のコマンドに渡されます。下の図は、フィルタがパイプラインにどのように組み込まれるかを示しています。
例を使ってこれを理解しましょう。以下に示すcatで表示される「sample」というファイルがあります。
文字「a」を含まない行のみを強調表示したいが、結果は逆順で表示したい。そのためには、以下の構文を使用できます。
cat sample | grep -v a | sort -r
結果を見てみましょう。下のスクリーンショットに示されています。







.png)
.png)

