このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Linux】指定した文字列を含む行を表示する:grepコマンド
コマンドの概要
「grep
」コマンドは、テキストファイルやコマンドの出力から指定されたパターンに一致する行を検索し、表示するためのツールです。名前は "global regular expression print" の略で、シンプルな文字列検索から複雑な正規表現検索まで対応できます。ログファイルの解析、データの抽出、フィルタリングなど、さまざまな用途で広く利用されています。
コマンドの主なオプション
オプション | 説明 |
---|---|
-c | パターンに一致する行の数を表示します。 |
-e | 複数のパターンを指定できます。 |
-f | 指定したファイルからパターンを読み取ります。 |
-i | 大文字と小文字を区別せずに検索します。 |
-n | 一致した行の行番号を表示します。 |
-v | 一致しない行を表示します。 |
正規表現で用いられる主な記号
記号 | 説明 | 使用例 |
---|---|---|
. | 任意の1文字にマッチ | gr.p は grep , grap にマッチ |
* | 直前の文字が0回以上繰り返される | go*gle は ggle , gogle , google にマッチ |
^ | 行の先頭にマッチ | ^Start は Start で始まる行にマッチ |
$ | 行の末尾にマッチ | 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環境で標準的に利用されるため、基本的な使い方と応用をしっかりとマスターすることが重要です。