650 words
3 minutes
【Unix】grepコマンドの解説
最終更新:2025-02-20
grepコマンドは、Unix系システムにおいてテキストファイルや標準入力から指定したパターンに一致する行を検索・抽出するためのコマンドである。正規表現を用いた高度なパターンマッチングが可能であり、オプションを活用することで、行の前後を合わせた抽出や複数ファイルの検索など、多様な用途に対応している。
grep = Global Regular Expression Print
主なオプション
-i: 大文字と小文字の区別をせずに検索する。-v: マッチしなかった行を表示する。-n: マッチした行番号を表示する。-r/-R: 再帰的にディレクトリ内を検索する。-H: 一致した行を表示する際に、ファイル名も付与する。-h: ファイル名を付与しないで検索結果を表示する。-c: マッチした行数(ヒット数)のみ表示する。-l: マッチしたファイル名のみを表示する。-L: マッチしなかったファイル名を表示する。-w: 単語全体がマッチした行のみを表示する。
バイナリファイルや前後行の表示に関するオプション
-a: バイナリファイルをテキストファイルとして扱う。-A N: マッチした行の後ろにN行分を表示する。-B N: マッチした行の前にN行分を表示する。-C N: マッチした行の前後N行分を表示する。(-A N -B Nや-aNと同等)
ハンズオン
以下では、実際にgrepコマンドを使用するハンズオンを示す。
単純な検索を行う
あるファイル内に含まれる文字列を検索する。grep "検索文字列" sample.txt大文字・小文字を区別せずに検索する
大文字・小文字を問わずにマッチさせる場合は-iオプションを使用する。grep -i "search" sample.txt検索結果として行番号を表示する
マッチした行番号が必要な場合は-nオプションを使用する。grep -n "TODO" sample.txtバイナリファイルをテキストファイルとして扱う
バイナリファイルでもテキストとみなして検索したい場合は-aオプションを使用する。grep -a "pattern" binaryfile.bin再帰的にディレクトリ内を検索する
ディレクトリを指定して再帰的に検索する場合は-rまたは-Rを使用する。grep -r "pattern" /path/to/directoryマッチした行の前後行も表示する
-A N: マッチした行の後ろN行までを表示する。-B N: マッチした行の前N行までを表示する。-C N: マッチした行の前後N行までを表示する。
例として、マッチした行の前後2行を表示する:
grep -C 2 "pattern" sample.txt
【Unix】grepコマンドの解説
https://ss0832.github.io/posts/20250220_grep_command_explanation/