この記事では、Linux でテキスト検索を行うためのgrep
コマンドを解説します。
基本的な使い方から正規表現を使った高度な検索方法までをカバーしますので、検索に自信がない方はぜひ手を動かしながらマスターしていきましょう。
基本的な使い方
grepコマンドの基本的な使い方は、以下の通りです。
grep [オプション] "パターン" [ファイル]
最初は[オプション]
なしのごく単純なコマンドから説明します。
単一ファイルでの検索
filename.txt
内で、文字列"target"
を含む行を表示するコードです。
grep "target" filename.txt
複数ファイルでの検索
file1.txt
とfile2.txt
の二つのファイルから、文字列"target"
を含む行を表示します。
grep "target" file1.txt file2.txt
主要なオプション
前述の通り、grep
コマンドではオプションをつけることができました。
grep [オプション] "パターン" [ファイル]
オプションには-
のあとに特定の文字列を追加します。
それでは、一つずつ確認していきましょう。
-i
オプション: 大文字・小文字を区別せずに検索
大文字・小文字を区別せずにfilename.txt
内で、文字列target
を含む行を検索します。
grep -i "target" filename.txt
-r
オプション: ディレクトリを再帰的に検索
指定したディレクトリ内のすべてのファイルを再帰的に検索します。
grep -r "target" /path/to/directory
-v
オプション: パターンに一致しない行を表示
filename.txt
内でtarget
に一致しない行を表示します。
grep -v "target" filename.txt
-c
オプション: 一致する行の数を表示
filename.txt
内でtarget
に一致する行の数を表示します。
grep -c "target" filename.txt filename.txt
-l
オプション: 検索パターンに一致する行を含むファイル名を表示
*.txt
の中で検索パターン
に一致する行を含むファイル名を表示します。
grep -l "検索パターン" *.txt
-n
: 一致する行番号を表示
filename.txt
内で検索パターン
に一致する行番号を表示します。
grep -n "検索パターン" filename.txt
-H
: 一致する行とファイル名を表示
file1.txt
とfile2.txt
のそれぞれで検索パターン
に一致する行を表示し、ファイル名も表示します。
grep -H "検索パターン" file1.txt file2.txt
-A[行数]
: 一致する行とその後の3行を表示
filename.txt
内で検索パターン
に一致する行とその後の3行を表示します。
grep -A 3 "検索パターン" filename.txt
-B [行数]
: 一致する行とその前の3行を表示
filename.txt
内で検索パターン
に一致する行とその前の指定した行数を表示します。
grep -B 3 "検索パターン" filename.txt
-C [行数]
: 一致する行と前後3行を表示
filename.txt
内で検索パターン
に一致する行とその前後の指定した行数を表示します。
grep -C 3 "検索パターン" filename.txt filename.txt
正規表現の使用
基本的な正規表現の使い方
基本的に、grep
コマンドのあとに正規表現パターンを入力する形で対応します。
grep "正規表現パターン" filename.txt
拡張正規表現の使い方
grep -E "拡張正規表現パターン" filename.txt
# または以下でも同じです
egrep "拡張正規表現パターン" filename.txt
応用編
grep
コマンドは多様なオプションを駆使することで、非常に柔軟かつ強力なテキスト検索ツールとなります。これらのオプションを活用して、さまざまな検索ニーズに対応できるようにしましょう。
特定の文字列を含む行を削除する方法
filename.txt
から除外したいパターン
を含む行を除外し、結果をnewfile.txt
に保存します。
grep -v "除外したいパターン" filename.txt > newfile.txt
特定の拡張子を持つファイルを再帰的に検索する方法
指定したディレクトリ内のすべての.log
ファイルを再帰的に検索します。
grep -r --include="*.log" "検索パターン" /path/to/directory
コメント