grep とのパイプ
CoddyのTerminalジャーニー「基礎」セクションの一部。レッスン 46/82。
grep コマンドは、パイプと組み合わせると特に強力になります。ファイル内を検索する代わりに、任意のコマンドの出力をフィルタリングして、必要なものだけを正確に見つけられます。
ディレクトリの一覧から特定のfileを見つけたいとします。
ls -l | grep "report"これにより、すべてのfileが詳細に一覧表示され、その後「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プレイグラウンド