このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Linux】指定した文字列を含む行を表示する:grepコマンド

コマンドの概要

 「grep」コマンドは、テキストファイルやコマンドの出力から指定されたパターンに一致する行を検索し、表示するためのツールです。名前は "global regular expression print" の略で、シンプルな文字列検索から複雑な正規表現検索まで対応できます。ログファイルの解析、データの抽出、フィルタリングなど、さまざまな用途で広く利用されています。

コマンドの主なオプション

オプション説明
-cパターンに一致する行の数を表示します。
-e複数のパターンを指定できます。
-f指定したファイルからパターンを読み取ります。
-i大文字と小文字を区別せずに検索します。
-n一致した行の行番号を表示します。
-v一致しない行を表示します。
コマンドの主なオプション

正規表現で用いられる主な記号

記号説明使用例
.任意の1文字にマッチgr.pgrep, grap にマッチ
*直前の文字が0回以上繰り返されるgo*gleggle, gogle, google にマッチ
^行の先頭にマッチ^StartStart で始まる行にマッチ
$行の末尾にマッチend$end で終わる行にマッチ
[ ]中のいずれか1文字にマッチ[aeiou] は任意の母音にマッチ
\メタ文字をエスケープ\. は文字としてのピリオドにマッチ
``OR操作(いずれかにマッチ)
()グループ化(ab)*ab, abab にマッチ
{}繰り返し回数を指定a{3}aaa にマッチ
正規表現で用いられる主な記号

コマンドの使用例と解説

 具体的なファイル「filename.txt」の内容を示し、それに対する「grep」コマンドの使用例と解説を行います。

サンプルファイルの作成:filename.txt

まず、以下の内容を持つサンプルファイル「filename.txt」を作成します。

・「nano filename.txt」コマンドを実行します。

nanoエディタを起動して、「filename.txt」ファイルを作成します。

user01@ubuntu-vm:~$ nano filename.txt

以下の内容を入力します。

apple
banana
Apple
orange
grapefruit
lemon
lime
berry

 入力したら、「Ctrl + S」キーを入力して保存、「Ctrl + X」キーでnanoエディタを終了させます。

1.基本的な使用例

・「grep "apple" filename.txt」コマンドを実行

 ファイル「filename.txt」から "apple" に一致する行を検索し表示します。この場合、小文字の "apple" に一致する行が表示されます。

user01@ubuntu-vm:~$ grep "apple" filename.txt
apple

2.一致する行の数を表示

・「grep -c "apple" filename.txt」コマンドを実行

ファイル「filename.txt」に含まれる "apple" に一致する行の数を表示します。

user01@ubuntu-vm:~$ grep -c "apple" filename.txt
1

3.大文字小文字を無視して検索

・「grep -i "apple" filename.txt」コマンドを実行

 大文字小文字を区別せずに "apple" を検索し、「filename.txt」ファイルから一致する行を表示します。この場合、大文字の "Apple" も一致します。

user01@ubuntu-vm:~$ grep -i "apple" filename.txt
apple
Apple

4.複数のパターンで検索

・「grep -e "apple" -e "banana" filename.txt」コマンドを実行

filename.txt」ファイルから "apple" または "banana" に一致する行を検索し表示します。

user01@ubuntu-vm:~$ grep -e "apple" -e "banana" filename.txt
apple
banana

5.パターンをファイルから読み取る

以下のコマンドを実行します。

  • echo -e "apple\norange" > patterns.txt」コマンド
  • grep -f patterns.txt filename.txt」コマンド

 「patterns.txt」ファイルに記載されたパターン(この場合 "apple" と "orange")に一致する行を「filename.txt」ファイルから検索し表示します。

user01@ubuntu-vm:~$ echo -e "apple\norange" > patterns.txt
user01@ubuntu-vm:~$ grep -f patterns.txt filename.txt
apple
orange

6.一致しない行を表示

・「grep -v "apple" filename.txt」コマンドを実行

filename.txt」ファイルから "apple" に一致しない行を表示します。

user01@ubuntu-vm:~$ grep -v "apple" filename.txt
banana
Apple
orange
grapefruit
lemon
lime
berry

7.行番号を表示

・「grep -n "apple" filename.txt」コマンドを実行

filename.txt」ファイルから "apple" に一致する行の行番号を表示します。

user01@ubuntu-vm:~$ grep -n "apple" filename.txt
1:apple

作成したファイルの削除

この演習のコマンドで作成したファイルを削除します。

・「rm filename.txt patterns.txt」コマンドを実行して、「ls」コマンドで確認します。

user01@ubuntu-vm:~$ rm filename.txt patterns.txt
user01@ubuntu-vm:~$ ls
snap          テンプレート  ドキュメント  ピクチャ      公開
ダウンロード  デスクトップ  ビデオ        ミュージック

まとめ

 「grep」コマンドは、ファイルやコマンドの出力から特定のパターンを抽出するための強力なツールです。主なオプションや正規表現を活用することで、より柔軟で高度な検索が可能になります。多くのLinux環境で標準的に利用されるため、基本的な使い方と応用をしっかりとマスターすることが重要です。