直前の1文字の0回以上の繰り返しに一致。直前の文字は正規表現でも構わない

^ 行の先頭
$ 行の末尾
[ ] かっこ内の任意の1文字に一致。ハイフン(-)で範囲指定もできる
[^ ] かっこ内の任意の1文字に不一致。ハイフン(-)で範囲指定もできる
\+ 直前の文字の1個以上の繰り返しに一致
\? 直前の文字の0または1文字に一致
\{n\} 直前の文字のn個の繰り返しに一致
\{n,\} 直前の文字のn個以上の繰り返しに一致
\{,m\} 直前の文字のm個以下の繰り返しに一致
\{n,m\} 直前の文字のn個以上,m個以下の繰り返しに一致
pattern1\|pattern2 pattern1またはpattern2のいずれかに一致
\(pattern\) patternをグループ化する。マッチした内容は\numで参照できる
\ 正規表現に使われる記号を普通の文字として扱う


grep '\[0-9]' source.txt # '[0-9]'の文字列を検索
grep -E '(\[0-9]){2}' source.txt # '[0-9]'が2回続く文字列を検索
grep '[Ll]inux' source.txt # 「Linux」または「linux」が含む行を検索する
grep '\<[Li]inux\>' source.txt # 独立した「Linux」または「linux」が含む行を検索する、RedhatLinuxとかは含まない
grep '[1-9][0-9][0-9][A-Z][0-9]' source.txt # 先頭に0を含まず123A7のようなパターンに一致
grep '^[0-9]' source.txt # 数字を含まない行を検索する
grep '.....' source.txt # 5文字以上の行だけ探す
grep '\$' source.txt # 先頭がW、末尾がsの文字列を探す
grep '.' source.txt # 空行を除外
grep '^\\{1,3\}' source.txt # EXという文字が1〜3回出る行
grep '\<[A-Z]\{\6,15\}\>' source.txt # 大文字アルファベットが6〜15文字含む行
grep '\<[A-Za-z]\{\6,15\}\>' source.txt # 大文字小文字アルファベットが6〜15文字含む行
grep '\<[^0-9A-Za-z]\{\6,15\}\>' source.txt # 大文字小文字アルファベットと数字以外の文字が6〜15文字含む行
grep '[0-9]\{3\}-[0-9]\{3\}-[0-9]\{4\}' source.txt # 電話番号000-000-0000を含む行

https://qiita.com/hirohiro77/items/771ffb64dddceabf69a3