正则表达式
正则表达式 由     元字符 、普通字符  、元字符 和普通字符  组成

语法格式
grep   [选项]    '正则表达式'     文件列表
命令  |   grep   [选项]    '正则表达式'

-------------------------------------------------------
ps  aux  |  grep   sshd
grep   root  /etc/passwd

选项?
--color  标红显示匹配字串
-q 静默,无任何输出,一般用于检测
-c    统计匹配的行数
-n    显示出匹配结果所在的行号
-v  条件取反
-i   忽略字母大小写
-E  使匹配条件转义(或者用egrep)

元字符  有哪些?
^  匹配行首
$   匹配行尾
.    任意单个字符(不包括换号符号 \n)
----------------------------------------------------------------------
定义前边的正则表达式出现的次数

\+  前边的正则表达式出现1次到多次
\? 前边的正则表达式出现0次到1次
*   前边的正则表达式出现0次到多次
----------------------------------------------------------------------

\(\)     把正则表达式做为整体匹配

----------------------------------------------------------------------
\{\} 限定前边正则表达式出现的次数

{N}前边正则表达式必须出现N次
{N,}前边正则表达式至少出现N次
{N,M}前边正则表达式至少出现N次 最多出现M次
----------------------------------------------------------------------
[ ]  范围内匹配,范围内任意一个字符  (次数是一次)
[a-z]    匹配所有小写字母
[A-Z]    匹配所有大写字母

[a-Z]
[a-zA-Z]    匹配所有大小写字母

[279]
[0-9]   匹配所有数字

[a-Z0-9]  匹配所有大小写字母和数字


^[    ]    以范围内的开头
^[a-z]
^[0-9]
^[169]
^[afw]

[   ]$   以范围内的结束

^[a-c][0-9]$

[^    ]    范围内取反

^[^a-Z0-9]    匹配以符号开头的行

------------------------------------------------------------
\|   或

  grep  --color  '^root\|^daemon'  /etc/passwd   列出以root或者以daemon开头的行
 grep  --color  '^[rd]'  /etc/passwd   列出以r或者以d开头的行
----------------------------------------------------------------------

\<  单词的开头
\>  单词的结束
   head -5 /etc/httpd/conf/httpd.conf  | grep  --color  '\<c'  列出以带c开头的单词的行
   head -5 /etc/httpd/conf/httpd.conf  | grep  --color  's\>'    列出以带s结尾的单词的行

\b   单词边界

   grep --color   '\btom' d.txt  单词左边包含tom的行 
    grep --color   'tom\b' d.txt  单词右边包含tom的行   

   grep --color   '\btom\b' d.txt   单词只包含tom的行 边界无其他字符

---------------------------------------------------------------------

XX:XX:XX:XX:XX:XX

 

grep  -E  --color  '([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}'  mac.txt


0 1 2 3 4 5 6 7 8 9 a b c d e f  A B C DEF
                                
grep  --color  '\([0-9A-Fa-f]\{2\}:\)\{5\}[0-9A-Fa-f]\{2\}'  mac.txt
      ---------------------------------------------------------------------

ip的正则表达式(括号的大小写很严格,点需要转义)

grep -E '^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){2}([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])$'