メインコンテンツにスキップ
モジュール 3 · レッスン 2 / 2コース内の 7/11~15 min
モジュールのレッスン (2/2)

パイプラインとフィルター (grep と |)

Linux コマンド ラインの最も強力な機能の 1 つは、異なるコマンドを接続して、あるコマンドの出力が次のコマンドの入力になる機能です。この手法は パイプライン を使用して実現され、通常はテキスト フィルタリング コマンド grep と組み合わせられます。


テキストのフィルタリング: grep

grep (グローバル正規表現印刷) コマンドは、1 つ以上のファイル内で特定のテキスト文字列を検索し、一致する行を出力します。

Bash
grep "string" [file_name]

grep の便利なオプション

  • grep -i "error" server.log: 大文字と小文字を区別しない検索を実行します(大文字と小文字の違いを無視し、「エラー」、「エラー」、または「エラー」を検索します)。
  • grep -n "connection" server.log: 一致する行とともに 行番号を表示します。
  • grep -v "INFO" server.log: 検索を反転し、指定されたキーワードを含まない行のみを表示します。

コマンドの連鎖: パイプライン |

パイプライン オペレーターは、垂直バー | で表されます。左側のコマンドの標準出力を右側のコマンドの標準入力に直接送信します。

Bash
[command1] | [command2]

たとえば、ログ ファイルが大きく、ファイル全体を印刷せずに特定の単語を検索したい場合は、cat と grep を組み合わせることができます。

Bash
cat logs/server.log | grep ERROR

これは、cat を使用して server.log ファイル全体を読み取りますが、それを画面に出力する代わりに、ストリームを grep にパイプし、「ERROR」という単語を含む行のみをフィルターして表示します。


使用例とよくあるエラー

大文字のみが含まれるファイル (例: 「POST」) で小文字の単語 (例: 「post」) を検索した場合、grep は何も返しません。

Bash
grep "post" logs/access.log
# Output: (no results, search is case-sensitive by default)

大文字と小文字に関係なく行を検索するには、-i フラグを使用します。

Bash
grep -i "post" logs/access.log
# Output:
# 127.0.0.1 - - [22/May/2026:10:10:00 +0000] "POST /login HTTP/1.1" 401 234

指定されたファイルが存在しない場合、grep はエラーを返します。

Bash
grep "ERROR" nonexistent_file.log
# Output:
# grep: nonexistent_file.log: No such file or directory

自分で試してみてください

演習 1: ログ ファイル内のエラーを検索する

運動#linux.m3.l2.e1
試行回数: 0読み込み中…

ファイル「logs/server.log」をフィルタリングして、単語「ERROR」(大文字と小文字を区別)を含む行のみを抽出して表示します。

エディターを読み込み中…
ヒントを表示

grep コマンドの後に、検索する単語とファイル パスを指定して使用します。

3 回の試行後に解決策が利用可能になります

演習 2: パイプラインとフィルター

運動#linux.m3.l2.e2
試行回数: 0読み込み中…

cat コマンドを使用してファイル「logs/server.log」を読み取り、その出力を grep コマンドにパイプ (|) して、「WARNING」という単語を含む行のみをフィルタリングして出力します。

エディターを読み込み中…
ヒントを表示

cat logs/server.log をパイプ '|' を使用して grep WARNING に接続します。キャラクター。

3 回の試行後に解決策が利用可能になります

演習 3: 大文字と小文字を区別しない検索

運動#linux.m3.l2.e3
試行回数: 0読み込み中…

適切な grep フラグを使用して、「logs/access.log」ファイル内で「post」という単語 (大文字または小文字) を含むすべての行を検索します。

エディターを読み込み中…
ヒントを表示

大文字と小文字の区別を無視するには、-i オプションを指定して grep を使用します。

3 回の試行後に解決策が利用可能になります