この記事を読むと・・・ |
---|
grepコマンドの基本的な使い方が理解できる |
目次
【grepコマンド】どんな時に使う?
以下のようなことがしたい場合にgrep
コマンドが役立ちます。
- ファイル内の文字列を検索したい
- ファイル内の文字列と一致しない箇所を確認したい
【grepコマンド】基本オプション
書式
grep [オプション] 検索パターン [ファイル名…]
※[ ]は省略可能です
基本的なオプションは以下の表の通りです。
オプション | 説明 |
---|---|
オプションなし | 一致する行をすべて表示する |
-A 数値 | 一致した行とその後の(数値)行も一緒に表示する |
-B 数値 | 一致した行とその前の(数値)行も一緒に表示する |
-C 数値 | 一致した行とその前後(数値)行を表示する |
-c | 一致する行の数を表示する |
-E | 拡張正規表現使用して表示する |
-e | 複数のパターンを指定して表示する |
-i | 大文字小文字を区別せずに表示する |
-n | 一致した行の行番号を表示する |
-r | ディレクトリを再帰的に検索する |
-v | 検索パターンに一致しない行を表示する |
-w | 単語単位で一致を検索する |
【sarコマンド】オプション使用例
オプションなし
(検索した文字列に一致する行をすべて表示する)
# cat test.txt
aaa
AAA
aaaAAA
bbb
BBB
bbbBBB
aaa bbb ccc
111
222
333
111222
111222333
13行目
# grep aaa test.txt
aaa
aaaAAA
aaa bbb ccc
「-A 数値」
(一致した行とその後の(数値)行も一緒に表示する)
# cat test.txt
aaa
AAA
aaaAAA
bbb
BBB
bbbBBB
aaa bbb ccc
111
222
333
111222
111222333
13行目
# grep -A 2 ccc test.txt
aaa bbb ccc
111
222
「-B 数値」
(一致した行とその前の(数値)行も一緒に表示する)
# cat test.txt
aaa
AAA
aaaAAA
bbb
BBB
bbbBBB
aaa bbb ccc
111
222
333
111222
111222333
13行目
# grep -B 2 ccc test.txt
BBB
bbbBBB
aaa bbb ccc
「-C 数値」
(一致した行とその前後(数値)行を表示する)
# cat test.txt
aaa
AAA
aaaAAA
bbb
BBB
bbbBBB
aaa bbb ccc
111
222
333
111222
111222333
13行目
# grep -C 2 ccc test.txt
BBB
bbbBBB
aaa bbb ccc
111
222
「-c」
(一致する行の数を表示する)
# cat test.txt
aaa
AAA
aaaAAA
bbb
BBB
bbbBBB
aaa bbb ccc
111
222
333
111222
111222333
13行目
# grep -c aaa test.txt
3
「-E」
(一致する行を拡張正規表現使用して表示する)
# cat test.txt
aaa
AAA
aaaAAA
bbb
BBB
bbbBBB
aaa bbb ccc
111
222
333
111222
111222333
13行目
# grep -E a+$ test.txt
aaa
「-e」
(一致する行を複数のパターンを指定して表示する)
# cat test.txt
aaa
AAA
aaaAAA
bbb
BBB
bbbBBB
aaa bbb ccc
111
222
333
111222
111222333
13行目
# grep -e aaa -e 111 test.txt
aaa
aaaAAA
aaa bbb ccc
111
111222
111222333
「-i」
(一致する行を大文字小文字を区別せずに表示する)
# cat test.txt
aaa
AAA
aaaAAA
bbb
BBB
bbbBBB
aaa bbb ccc
111
222
333
111222
111222333
13行目
# grep -i aaa test.txt
aaa
AAA
aaaAAA
aaa bbb ccc
「-n」
(一致した行の行番号を表示する)
# cat test.txt
aaa
AAA
aaaAAA
bbb
BBB
bbbBBB
aaa bbb ccc
111
222
333
111222
111222333
13行目
# grep -n 1 test.txt
8:111
11:111222
12:111222333
13:13行目
「-r」
(ディレクトリを再帰的に検索する)
# cat test.txt
aaa
AAA
aaaAAA
bbb
BBB
bbbBBB
aaa bbb ccc
111
222
333
111222
111222333
13行目
# grep -r aaa .
./test.txt:aaa
./test.txt:aaaAAA
./test.txt:aaa bbb ccc
「-v」
(検索パターンに一致しない行を表示する)
# cat test.txt
aaa
AAA
aaaAAA
bbb
BBB
bbbBBB
aaa bbb ccc
111
222
333
111222
111222333
13行目
# grep -v aaa test.txt
AAA
bbb
BBB
bbbBBB
111
222
333
111222
111222333
13行目
「-w」
(単語単位で一致を検索する)
# cat test.txt
aaa
AAA
aaaAAA
bbb
BBB
bbbBBB
aaa bbb ccc
111
222
333
111222
111222333
13行目
# grep -w aaa test.txt
aaa
aaa bbb ccc