\ お問い合わせはこちら! /

【Linux】grep コマンドを使ってテキスト検索を効率化しよう!

この記事では、Linux でテキスト検索を行うためのgrepコマンドを解説します。

基本的な使い方から正規表現を使った高度な検索方法までをカバーしますので、検索に自信がない方はぜひ手を動かしながらマスターしていきましょう。

基本的な使い方

grepコマンドの基本的な使い方は、以下の通りです。

grep [オプション] "パターン" [ファイル]

最初は[オプション]なしのごく単純なコマンドから説明します。

単一ファイルでの検索

filename.txt内で、文字列"target"を含む行を表示するコードです。

grep "target" filename.txt 

複数ファイルでの検索

file1.txtfile2.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.txtfile2.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

この記事が気に入ったら
フォローしてね!

シェア・記事の保存はこちら!

この記事を書いた人

karo@プログラマのアバター karo@プログラマ プログラマ

「書くことで人の役にたつ」をモットーに活動中。
本職はプログラマで、Python(Django)が得意。最近ではフロント側の技術に触れる機会も増えてきました。
基本情報技術者試験合格。

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)