複数のコマンドの連結
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各パイプは、別の変換ステップを追加します。より長いパイプラインを構築するときは、各コマンドが入力として何を必要とし、出力として何を生成するのかを考えましょう。あるコマンドの出力形式は、次のコマンドの入力として意味を成すものでなければなりません。
チャレンジ
簡単visitors.txt ファイルには、重複を含む訪問者名の一覧が格納されています。4つのコマンドをパイプラインで使用して、重複しない訪問者が何人いるかを数えてください。
次の処理を行う単一のコマンドを実行してください。
catを使用してvisitors.txtを読み取るsortにパイプして名前をアルファベット順に並べるuniqにパイプして重複する項目を削除するwc -lにパイプして重複しない名前の数を数える
ヒント: 複数の
|記号を使って、4つのコマンドをすべてつなげてください。uniqは隣接する重複のみを削除するため、その前に並べ替えを行う必要があることを覚えておいてください。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Terminalプレイグラウンド