コマンド Shell

[シェルスクリプト] grepコマンドについて整理してみた

どうも、シローです。

今回は、コマンドで文字列を扱う際によく使われるgrepコマンドについてまとめようと思います。

grepコマンドとは

grepコマンドは標準入力から渡された文字列に特定の文字列が含まれるか検索することができます。

grepコマンドの書式

grepコマンドの使用例

こちらのファイルから検索パターンにマッチした文字列を出力します。

grep_sample.txt

実行

検索パターンには正規表現が使用できる

文字列の検索パターンには正規表現が使用できます。

文字にマッチするメタ文字

基本正規表現 拡張正規表現 意味
. . 任意の1文字
[ ] [ ] []の中に含まれるいずれかの1文字
[^ ] [ ] []の中に含まれないいずれかの1文字

位置にマッチするメタ文字

基本正規表現 拡張正規表現 意味
^ ^ 行頭
$ $ 行末

繰り返しを指定するメタ文字

基本正規表現 拡張正規表現 意味
* * 直前の文字の0回以上の繰り返し
なし + 直前の文字の1回以上の繰り返し
なし ? 直前の文字の0回または1回の繰り返し
\{m,n\} {m,n} 直前の文字のm回以上n回以下の繰り返し
\{m\} {m} 直前の文字のちょうどm回の繰り返し
\{m,\} {m,} 直前の文字のm回以上の繰り返し

grep_sample2.txt

その他のメタ文字

基本正規表現 拡張正規表現
\ \ 直後のメタ文字の意味を打ち消す
\( \) ( ) グループ化する
なし | 複数の正規表現をOR条件で連結する

grep_sample3.txt

grepコマンドのオプション

grepコマンドには検索条件を指定するオプション出力内容を指定するオプションがあります。

検索パターンを指定するオプション

 

オプション 内容
-E 拡張正規表現を使用する
-F 正規表現を使用しない
-i 大文字と小文字を区別しない
-e 検索パターン 検索パターンを指定する
-v 検索結果を反転させる

よく使うのは、E,e,vあたりでしょうか。

出力内容を指定するオプション

オプション 内容
-n 行番号を出力に含める
-H マッチしたファイルのファイル名を出力に含める
-h マッチしたファイルのファイル名を出力に含めない
-l マッチしたファイルのファイル名だけを出力に含める
-L マッチしていないファイルのファイル名だけを出力に含める
-o 行全体ではなく検索パターンにマッチした箇所だけを出力する
-q マッチした結果を出力しない

 

まとめ

  • grepは文字列を検索するコマンド
  • 検索文字パターンには正規表現を使用できる
  • オプションには検索パターンを指定するものと出力内容を指定するものがある
    • 拡張正規表現を使用する時には-Eオプションを使用
  • この記事を書いた人

シロー

Webシステムの開発のお仕事をさせて頂いております。 フリーランスの日常、Web開発に関する情報を発信しています。 趣味はゲーム、映画鑑賞、個人サービスを作ることです。

-コマンド, Shell

© 2021 Shiro's secret base