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 を使います。
チャレンジ
簡単access.log ファイルには、Webサーバーのアクセス記録が含まれています。パイプを使って絞り込み、500 エラーステータスコードになったリクエストの数を数えてください。
次の処理を行う単一のコマンドを実行してください。
catを使ってaccess.logを読み込むgrepにパイプで渡し、500を含む行を絞り込むwc -lにパイプで渡し、一致した行を数える
ヒント:
|記号を使って、3つのコマンドを連結します。grep コマンドで出力を絞り込み、wc -lで残った行を数えます。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Terminalプレイグラウンド