導入
|(パイプ)は、左のコマンドの出力を、右のコマンドの入力として渡す記号です。「ファイルに書く(>)」のではなく「次のコマンドに流す」イメージです。これが 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
多くのコマンドは、ファイル名を渡す代わりにパイプから流れてきた入力をそのまま処理できます。grep や wc もそうです。次は「東京を含む行だけ」を数えます。
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 の中で「大阪」を含む行が何行あるかを、grep と wc をパイプでつないで数えてください。
ヒント1を見る
絞り込んでから数えます。grep 大阪 data.csv | wc -l
ヒント2を見る
行数だけなら wc -l です。