grepコマンドの使い方メモです。
目次
基本的な使い方
単純な文字列の検索
grep 'パターン' ファイル名
例:ファイル example.txt 内の「hello」を検索する場合
grep 'hello' example.txt
複数のファイルを検索
grep 'パターン' ファイル名1 ファイル名2 ...
例:複数のファイル内で「hello」を検索する場合
grep 'hello' file1.txt file2.txt
行番号を表示
grep -n 'パターン' ファイル名
例:マッチした行の行番号も表示する
grep -n 'hello' example.txt
大文字小文字を区別しない
grep -i 'パターン' ファイル名
例:大文字小文字を無視して「hello」を検索する
grep -i 'hello' example.txt
再帰的にディレクトリを検索
grep -r 'パターン' ディレクトリ名
例:カレントディレクトリ以下の全てのファイルで「hello」を検索する
grep -r 'hello' .
マッチしない行を表示
grep -v 'パターン' ファイル名
例:「hello」を含まない行を表示する
grep -v 'hello' example.txt
マッチした行の数を表示
grep -c 'パターン' ファイル名
例:「hello」がマッチした行の数を表示する
grep -c 'hello' example.txt
全てのファイル名を表示
grep -l 'パターン' ファイル名
例:「hello」が含まれるファイル名を表示する
grep -l 'hello' *.txt
パターンの前後の行も表示
- 前の行:
-B
- 後の行:
-A
- 前後の行:
-C
例:マッチした行の前後2行も表示する
grep -C 2 'hello' example.txt
正規表現の使用
基本的な正規表現を使用
grep -E '正規表現パターン' ファイル名
例:「数字-文字」のパターンを検索する
grep -E '[0-9]-[a-zA-Z]' example.txt
応用例
ログファイルから特定の時間帯のエントリを検索
grep '2024-07-27 14' logfile.log
特定の拡張子のファイルで検索
grep 'パターン' *.txt
grep と awk の組み合わせ
特定のパターンに一致する行から特定のフィールドを抽出
例:example.txtから「hello」を含む行の2番目のフィールドを抽出する
grep 'hello' example.txt | awk '{print $2}'
grepで抽出した行の合計値を計算
例:example.txtから「value」を含む行の3番目のフィールドの合計を計算する
grep 'value' example.txt | awk '{sum += $3} END {print sum}'
grep と sort の組み合わせ
パターンに一致する行を抽出して並べ替え
例:example.txtから「hello」を含む行を抽出してアルファベット順に並べ替える
grep 'hello' example.txt | sort
数値順に並べ替え
例:example.txtから「value」を含む行を抽出して3番目のフィールドで数値順に並べ替える
grep 'value' example.txt | sort -k3,3n