🐈
【Linux】grepコマンドの使い方
はじめに
Linuxでよく使用するgrep
コマンドの使い方についてご紹介したいと思います。
※久々に基礎的なことをアウトプットします。
grepとは?
指定した文字列を検索する際に使用するコマンドになります。
grepのオプション
オプション | 説明 |
---|---|
-i | 大文字と小文字を区別せず検索する |
-E | 拡張正規表現で検索を行う |
-e | 一致処理に指定した正規表現を使う |
-v | 一致しないものを検索する |
-n | 検索結果に行番号を表示する |
-l | 検索結果にファイル名のみ表示する |
-h | 検索結果にファイル名を表示しない |
-o | 検索結果に一致した文字を表示する |
-C | 検索結果に一致した箇所から前後に指定した行数表示する |
-r | ディレクトリ内も検索対象とする |
-L | 検索した結果、該当しなったファイルを表示する |
grepコマンドの使い方
いくつかのパターンに分けて使い方をご紹介しています。
※僕が業務でよく使用する使い方になります。
①通常通り文字列を検索する。
- ファイル内より指定の文字列を検索する。
コマンド
grep <検索文字列> <ファイル名>
実行例
[ec2-user@ip-10-0-0-47 ~]$ grep aiueo test
aiueo
[ec2-user@ip-10-0-0-47 ~]$
以下でも検索可能
コマンド
cat <ファイル名> | grep <検索文字列>
実行例
[ec2-user@ip-10-0-0-47 ~]$ cat test | grep kakiku
kakikukeko
[ec2-user@ip-10-0-0-47 ~]$
※元ファイルは以下になります。
元ファイル
[ec2-user@ip-10-0-0-47 ~]$ cat test
aiueo
kakikukeko
test
satton
fajijeafoajfj
[ec2-user@ip-10-0-0-47 ~]$
- ディレクトリ内よりファイルを検索
コマンド
ls -l <ディレクトリ名> | grep <検索文字列>
実行例
[ec2-user@ip-10-0-0-47 ~]$ ls -l /home/ec2-user | grep test1
-rw-rw-r-- 1 ec2-user ec2-user 0 9月 3 07:30 test1
[ec2-user@ip-10-0-0-47 ~]$
②不要な文字列を除外する。
※プロセス検索を例に説明していきます。
プロセス一覧から対象のプロセスを検索した場合、2つヒットしてしまう。
プロセス検索
[ec2-user@ip-10-0-0-47 ~]$ ps -ef | grep lv
root 1685 1 0 07:21 ? 00:00:00 /usr/sbin/lvmetad -f
ec2-user 3398 3372 0 07:49 pts/1 00:00:00 grep --color=auto lv
[ec2-user@ip-10-0-0-47 ~]$
grep --color=auto lv
はgrepコマンド実行時のプロセスのため除外したい。
そのような場合は、以下のように入力する。
コマンド
ps -ef | grep lv | grep -v grep
実行例
[ec2-user@ip-10-0-0-47 ~]$ ps -ef | grep lv | grep -v grep
root 1685 1 0 07:21 ? 00:00:00 /usr/sbin/lvmetad -f
[ec2-user@ip-10-0-0-47 ~]$
③検索結果に行番号を表示する。
以下のファイルよりtest
を行番号付きでgrepする。
test
aiueo
kakikukeko
test
satton
fajijeafoajfj
Satton
コマンド
grep -n <検索文字列> <ファイル名>
実行例
[ec2-user@ip-10-0-0-47 ~]$ grep -n test test
3:test
[ec2-user@ip-10-0-0-47 ~]$
④大文字と小文字を区別せずに検索する。
以下のファイルよりSatton
を抽出する。
test
aiueo
kakikukeko
test
satton
fajijeafoajfj
Satton
通常通りgrepした場合、小文字の文字列のみ表示される。
実行例
[ec2-user@ip-10-0-0-47 ~]$ grep satton test
satton
[ec2-user@ip-10-0-0-47 ~]$
-i
のオプションを付与することにより、小文字と大文字が区別されずに表示される。
コマンド
grep -i <検索文字列> <ファイル名>
実行例
[ec2-user@ip-10-0-0-47 ~]$ grep -i satton test
satton
Satton
[ec2-user@ip-10-0-0-47 ~]$
さいごに
今回はLinuxのgrepコマンドの使い方についてご紹介しました。
気になる方がいれば、実際に使用してみては如何でしょうか。
Discussion