grep 基本集 -----------------------------------------------------------------------------
  ^   $   .    *   []   [^]   \(..\)   \<   \>   x{m,n}   x\{m,\}   x\{m,n\}   
    \w = [A-Za-z0-9]
  \W   \w的反置形式
  \b   单词锁定符,如: '\bgrep\b'只匹配grep。
 
egrep 扩展集------------------------------------------------------------------------------
  + 1或多个  ? 0个或1个   |   () love(able|rs)   x\{m\},x\{m,\},x\{m,n\}
 
POSIX字符类-----------------------------------------------------------------------------
POSIX增加了特殊的字符类, 要把它们放到[]号内才能成为正则表达式,
 如 [A- Za-z0-9] 等于 [[:alnum:]],在linux下的grep除fgrep外,都支持。
  [:alnum:]   文字数字字符
  [:alpha:]   文字字符
  [:digit:]   数字字符
  [:graph:]   非空字符(非空格、控制字符)
  [:lower:]   小写字符
  [:cntrl:]   控制字符
  [:print:]   非空字符(包括空格)
  [:punct:]   标点符号
  [:space:]   所有空白字符(新行,空格,制表符)
  [:upper:]   大写字符
  [:xdigit:]   十六进制数字(0-9,a-f,A-F)
 
命令选项-------------------------------------------------------------------------------
  -?    同时显示匹配行上下的n行.
  -f File,--file=File   从文件中提取匹配模板。
  -v,--revert-match   只显示不匹配的行。
     -c, --count  输出匹配的行数
  -i,--ignore-case   忽略大小写
  -n,--line-number   输出时打印行号。
  -q,--quiet   无输出,只有命令返回值:搜索成功0,不成功1,文件不存在2
  -l,--files-with-matches   输出内容中含有匹配行的文件列表。
  -L,--files-without-match   -l打印不匹配的文件清单。
  -b,--byte-offset   打印匹配行前面打印该行所在的块号码。
  -h,--no-filename   当搜索多个文件时,不显示匹配文件名前缀。
  -s,--silent   不显示关于不存在或者无法读取文件的错误信息。
  -w,--word-regexp   如果被\<和\>引用,就把表达式做为一个单词搜索。
  grep -E 等同egrep