別にgrepじゃなくてもいいけども。
最近カテゴリが適当すぎると思うけど気にしない。
- . : 任意の一文字
- * : 直前の正規表現の0回以上の繰り返し
- '.*' - 任意の文字列
- ^ : 行頭
- $ : 行末
- '^$'ってやると空行(改行のみの行)がマッチ
- [ ] : [ ]内の文字のどれか
- '[a-z]'みたいに範囲指定もできる
- [^ ] : [ ]内の^以降の文字以外
- '[^a-z]'とすると英小文字以外に
この辺りまではまぁ覚えてるので大丈夫。
- ? : 直前の正規表現が0回か1回
- + : 直前の正規表現の1回以上の繰り返し
- {n} : 直前の正規表現のn回繰り返し
- {n,m} : 直前の正規表現のn回以上m回以下の繰り返し
- {n,} n回以上
- {,m} m回以下
- \< : 単語の先頭
- \> : 単語の末尾
- \w : 数字とアルファベット(1文字?)
- \W : 数字とアルファベット以外 = 記号と空白?
- | : 正規表現のor
この辺りも覚えておかなくては。{n}とかは拡張正規表現だったような。grep -E か egrepを使う。
エスケープ
特殊文字をそのまま検索したい時とかは\を前につける。
$ grep '\[0-9]' hoge.txt # '[0-9]'の文字列を検索 $ grep -E '(\[0-9]){2}' hoge.txt # '[0-9]'が2回続く文字列を検索