grep: 根据模式搜索文本,并将符合模式的文本行显示出来.
Pattern: 文本字符和正则表达式的元字符组合而成匹配条件

grep [optinons] Pattern [FILE...]
        -i: 忽略
        --color: 模式显示颜色
        -v: 取反,显示没有被模式匹配到的行
        -o: 只显示被模式匹配到的字符串本身

正则表达式:
元字符:
.: 匹配任意单个字符
[]: 指定范围内的任意单个字符
[^]: 指定范围外的任意单个字符
字符集合:[:digit:],[:lower:],[:[:upper:],[:punct:],[:space:],[:alpha:],[:alnum:]
(e.g) grep '[[:digit:]]$' /etc/inittab

匹配次数(默认贪婪模式):
*: 匹配前面任意字符任意次
.*: 匹配任意长度的任意字符
\?: 匹配前面的字符1次或0次
\{m,n\}: 匹配前面的字符至少m次,至多n次

位置锚定:
^: 锚定行首,此字符后面的任意内容必须出现在行首
$: 锚定行尾,此字符前面的任意内容必须出现在行尾
^$: 空白行

\<(或者\b): 其后面的任意字符必须作为单词首部出现
\>(或者\b): 其前面的任意字符必须作为单词尾部出现
单词:r55t是单词,r::t不是单词

分组:
\(\): \(ab\)* ,将ab看成整体,出现一次或多次
     \1: 引用之前出现的第一个左括号与之对应的右括号匹配到的内容
     \2
     \3

找出/boot/grub/grub.conf文件中1-255之间的数字;
\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>

ip地址(非精确)
'(\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){3}(\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>)'

ip地址(精确到A,B,C)
'\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[01][0-9]|22[0-3])\>(\.\<([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-4])\>){2}\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>'

备份地址: 【利用正则表达式匹配IP地址