Menu
Coddy logo textTech

grep とのパイプ

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

grep コマンドは、パイプと組み合わせることで特に強力になります。ファイル内で検索する代わりに、任意のコマンドの出力から必要なものをフィルタリングして見つけられます。

ディレクトリ一覧から特定のファイルを見つけたい場合を想像してください:

ls -l | grep "report"

これにより、すべてのファイルを詳細にリストし、「report」を含む行のみを表示するようにフィルタリングします。すべてを手動でスキャンせずに、対象の結果が得られます。

grepへのパイプは、テキスト出力を生成する任意のコマンドで動作します。特定のプログラムに関連する実行中のプロセスを見つけるには:

ps aux | grep "python"

また、grep をこれまでに学んだ他のコマンドとチェインすることもできます。特定の単語を含む行の数を数えるには:

cat logfile.txt | grep "error" | wc -l

これはファイルを読んで、「error」を含む行をフィルタリングし、それらをカウントします。以前学んだgrepのフラグは、パイプ内でも同じように動作します — 大文字小文字を区別しないマッチングには-iを使用するか、マッチを除外するには-vを使用します。

challenge icon

チャレンジ

簡単

ファイル access.log にはウェブサーバーのアクセス記録が含まれています。パイプを使用して 500 エラー ステータス コードとなったリクエストの数をフィルタリングしてカウントしてください。

以下のことを行う 1 つのコマンドを実行してください:

  • cat を使用して access.log を読み込みます
  • grep にパイプして 500 を含む行をフィルタリングします
  • wc -l にパイプして一致する行をカウントします

ヒント: 3 つのコマンドを | 記号を使用して連結します。grep コマンドが出力をフィルタリングし、wc -l が残った行をカウントします。

チートシート

grep コマンドは、パイプ (|) を使用して他のコマンドの出力をフィルタリングできます。

ディレクトリ一覧をフィルタリング:

ls -l | grep "report"

実行中のプロセスをフィルタリング:

ps aux | grep "python"

フィルタリングとカウントのために複数のコマンドを連結:

cat logfile.txt | grep "error" | wc -l

grep のすべてのフラグはパイプで動作します。例えば、大文字小文字を区別しないマッチングのための -i や、マッチを除外するための -v などです。

自分で試してみよう

ターミナル
quiz icon腕試し

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

基礎のすべてのレッスン