Menu
Coddy logo textTech

複数のコマンドの連結

CoddyのTerminalジャーニー「基礎」セクションの一部。レッスン 45/82。

2つのコマンドだけを接続することに限定されません。パイプを使えば必要な数だけコマンドを連結でき、それぞれのコマンドが前のコマンドの出力を処理します。

| 記号をさらに追加するだけで、パイプラインを拡張できます。

cat data.txt | sort | head -5

これはファイルを読み取り、すべての行をアルファベット順に並べ替えてから、最初の 5 件の結果だけを表示します。データは各コマンドを順番に通って、左から右へ流れます。

一意でソートされたエントリを見つける実用的な例を紹介します。

cat names.txt | sort | uniq

ファイルの内容はまず並べ替えられます(これにより重複がまとめられます)。次に、uniq が連続する重複行を削除します。ここでは順序が重要です。uniq は隣接する重複のみを削除するため、先に並べ替える必要があります。

さらにステージを追加できます。存在する一意の名前の数を数えるには:

cat names.txt | sort | uniq | wc -l

各パイプは、別の変換ステップを追加します。より長いパイプラインを構築するときは、各コマンドが入力として何を必要とし、出力として何を生成するのかを考えましょう。あるコマンドの出力形式は、次のコマンドの入力として意味を成すものでなければなりません。

challenge icon

チャレンジ

簡単

visitors.txt ファイルには、重複を含む訪問者名の一覧が格納されています。4つのコマンドをパイプラインで使用して、重複しない訪問者が何人いるかを数えてください。

次の処理を行う単一のコマンドを実行してください。

  • cat を使用して visitors.txt を読み取る
  • sort にパイプして名前をアルファベット順に並べる
  • uniq にパイプして重複する項目を削除する
  • wc -l にパイプして重複しない名前の数を数える

ヒント: 複数の | 記号を使って、4つのコマンドをすべてつなげてください。uniq は隣接する重複のみを削除するため、その前に並べ替えを行う必要があることを覚えておいてください。

自分で試してみよう

ターミナル
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Terminalプレイグラウンド