.点 匹配任意单个字符。如:rat、rut、r t。

^   匹配一行的开始。
$   匹配一行的结尾。
*   匹配0个或多个*前面的字符。
+   匹配1个或多个+前面的字符。
?  匹配0个或1个?之前的字符。
\   转义
[]  匹配括号中的任何一个字符。如:[abd]、[0-9]。
[^] 匹配不在括号中的,表示排除。如:[^abd]。
\<  匹配词的开始
\>  匹配次的结尾。如:\<the\>。
()  分组。将匹配这个表达式的字符保存到一个临时区域(最多保存9个),它们可以用\1到\9来引用。
|   或。例如:(him|her)。
 
基本元字符集
{m}   前面的表达式重复m次。如:"\w{2}" 相当于 "\w\w"。
{m,n} 表达式至少重复m次,做多重复n次。如:"ba{1,3}"匹配"ba"或"baa"或"baaa"。
{m,}  表达式至少重复m次。
\w    任意一个字母或数字或下划线。
\d    任意一个数字。
\s    空格、制表符、换页符、空白符中的任意一个。
\b    匹配一个单词的边界。如: ".\b." 在匹配 "@@@abc" 时匹配到的内容是:"@a"。
 
正则表达式应用实例
在日志中查找特定日期的记录
#grep "^Feb 11" messages
在日志中查找apache关闭的时间
#grep "down$" error_log
计算文件中有多少空行
#grep -c "^$" messages anaconda.log
匹配不同写法的“object oriented”
#grep "\([oO]bject\(\ |\-\)[oO]riented\)" file
 
正则表达式应用实例
#egrep ".ello" hello.txt
#egrep "*ello" hello.txt
#egrep "?ello" hello.txt
#egrep "+ello" hello.txt
#egrep "(.*)ello" hello.txt
#egrep "(.?)ello" hello.txt
#egrep "(.+)ello" hello.txt
 
正则表达式应用实例
不显示以a-z开头的单词
#egrep "^[^a-z]" linux.words在日志中查找named的pid
#egrep "named\[[[:digit:]]+\]" message过滤数字
#egrep "[0-9]{3}" number
#egrep "[0-9]{1,3}" number
#egrep "[0-9]{3,}" number
#egrep "(([0-9]{1,3}\.){3})([0-9]{1,3})" number 
 
 
命令或 . [ ]  ^  $  \( \)  \{ \}  ?  +  |  ( )
环境
vi X  X   X  X    X
awk X  X   X  X                X  X  X  X
sed X  X   X  X    X      X
grep X  X   X  X    X      X
egrep   X  X   X  X    X           X  X  X  X
perl X  X   X  X    X           X  X  X  X