本文へスキップ
BecomeCoder

Linuxコマンドコース · 第3章 パイプとフィルタ · レッスン13

パイプ(|)― 出力を次のコマンドへ渡す

ブラウザで完結

導入

|(パイプ)は、左のコマンドの出力を、右のコマンドの入力として渡す記号です。「ファイルに書く(>)」のではなく「次のコマンドに流す」イメージです。これが Linux の一番おいしい部分です。

小さな道具を | でつなぎ、データを少しずつ加工して目的の形にしていく——これがパイプの考え方です。

flowchart LR
    A["cat data.csv<br/>(全部出す)"] -->|出力| B["grep 東京<br/>(東京の行だけ)"]
    B -->|出力| C["wc -l<br/>(行数を数える)"]
    C --> D["結果: 4"]

説明

たとえば cat でファイル全体を出し、それを head に流すと「先頭だけ」を取り出せます。

cat data.csv | head -n 3

多くのコマンドは、ファイル名を渡す代わりにパイプから流れてきた入力をそのまま処理できます。grepwc もそうです。次は「東京を含む行だけ」を数えます。

grep 東京 data.csv | wc -l

パイプは何段でもつなげられます。左から右へ、データが加工されて流れていくと考えてください。

cat data.csv | grep 東京 | head -n 1

ls の結果を grep で絞る、といった使い方も定番です。

ls | grep csv

やってみよう

cat data.csv | head -n 3 を実行して、cat(全体)→ head(先頭だけ)と流れているのを感じましょう。次に grep 東京 data.csv | wc -l で「東京を含む行数」が数えられることを確かめてください。

演習

data.csv の中で「大阪」を含む行が何行あるかを、grepwc をパイプでつないで数えてください。

ヒント1を見る

絞り込んでから数えます。grep 大阪 data.csv | wc -l

ヒント2を見る

行数だけなら wc -l です。

実際に動かしてみよう

下の端末にコマンドを打って Enter を押すと、その場で結果が返ります。本文で出てきたコマンドを実際に試しながら進めましょう(ファイルを消しても「最初からやり直す」で元に戻ります)。

Linux シェル(シミュレート)

ブラウザ内でコマンドを試せる仮想シェルを読み込みます(本物のLinuxカーネルではなく学習用の再現です)。
スクロールして表示された時点でも自動で読み込まれます。