■ はじめに
文字列検索 / グレップ(grep)について扱っていく
目次
【1】grepコマンドの種類 1)grep 2)egrep 3)fgrep 【2】grepのオプション 【3】サンプル 例1:簡単な例 例2:設定ファイルのコメント文「#」以外を取り除く 例3:インスールされているか確認する 例4:ファイル内のキーワードを抜き出す 例5:tailでキーワードの出力結果を監視する
【1】grepコマンドの種類
1)grep
* Global Regular Expression Print : 全体から正規表現で抽出するコマンド
2)egrep
* Extended GREP : 拡張グレップコマンド * より強力な拡張正規表現が使える(複数の検索が一度にできる等)
3)fgrep
* Global Regular Expression Print : 全体から正規表現で抽出するコマンド * grepやegrepよりも早いが限定的な正規表現しか使えない
【2】grepのオプション
# | オプション | 説明 |
---|---|---|
1 | -n | 行番号を表示 |
2 | -v | 一致しなかった行を表示 |
3 | -i | 大文字小文字を区別しない(ignore-case, case sensitivie) |
4 | -e | 検索条件 |
5 | -w | 指定文字列が単語として含まれている行を表示(grep -w add * => OK:'add some', 'add_some', NO: 'additional' ) |
6 | -m | 一致した回数を指定する |
-e オプション
* 複数キーワードがある場合に使用
構文
grep -e [キーワード1] -e [キーワード2] ... [ファイル名]
例:「8080」又は「8443」を抜き出す
grep -e 8080 -e 8443 sample.log
参考文献
https://www.atmarkit.co.jp/ait/articles/1604/15/news019.html
-m オプション
* 一致した回数を指定する
構文
grep -m X [キーワード] [ファイル名]
例:1件ヒットしたら完了する
# grep -m 1 hello_world sample.csv
参考文献
https://qiita.com/tsubasaogawa/items/0c491199fad59e20e16d
【3】サンプル
例1:簡単な例
サンプルデータ
00-111-222,Mike,xx1 00-111-223,Mike,xx2 00-111-224,Mike,xx3 00-111-225,Mike,xx4 00-111-226,Mike,xx5 00-111-227,Mike,xx6 00-111-228,Mike,xx7 00-111-229,Mike,xx8 00-111-230,Mike,xx9
コマンド例
$ grep '00-111-229' *.csv data.csv:00-111-229,Mike,xx8 $ fgrep '00-111-229' *.csv data.csv:00-111-229,Mike,xx8
例2:設定ファイルのコメント文「#」以外を取り除く
構文
sudo egrep -e^[^#] 【ファイル】
コマンド例
sudo egrep -e^[^#] /etc/clamd.d/scan.conf
例3:インスールされているか確認する
構文
yum list installed | grep 【パッケージ名】
コマンド例
# MySQLがインストールされているか確認 yum list installed | grep mysql
例4:ファイル内のキーワードを抜き出す
構文
grep 【キーワード】 【ファイル】 | less
コマンド例
# gc.log 内の「Full GC」を抜き出す grep "Full GC" gc.log | less
例5:tailでキーワードの出力結果を監視する
構文
tail -f 【ファイル】 | grep 【キーワード】
コマンド例
# gc.log 内の「Full GC」を抜き出す tail -f gc.log | grep "Full GC"
参考文献
https://www.qoosky.io/techs/7149afb35f
https://ameblo.jp/oregano-blog/entry-11541189136.html
https://eng-entrance.com/linux-command-grep
関連記事
大きいファイルを扱う際のコマンド
https://dk521123.hatenablog.com/entry/2020/06/12/000000