grep :
grep + [选项]+“条件” +文本文件 
 作用:根据“条件”为标准检索文本把符合条件的行显示出来。 
 “条件”:由文本字符和正则表达式元字符编写。 
常用选项: 
 -color=auto:对找到的文本字符着色后高亮显示,一般在bash中定义grep=’grep –color=auto’,可以用alias命令查看到。 
 -i:忽略字符大小写; 
 -o:仅显示匹配到符合条件的文本自身,不显示行。 
 -v, –invert-match:反向匹配; 
 -E:支持扩展的正则表达式; 
 -q, –quiet, –silient:静默模式,不输出任何信息; 
 -E, –extended-regexp:支持使用扩展正则表达式 
 -F, –fixed-strings:支持使用固定字符串,不支持正则表达式,相当于fgrep; 
 例如:  
 grep -F "bin" /etc/passwd 可以执行成功, 
 grep -F ".*bin" /etc/passwd 无法执行成功。 
 -G, –basic-regexp:支持使用基本正则表达式; 
 -P, –perl-regexp:支持使用pcre正则表达式; 
 -e PATTERN, –regexp=PATTERN:多模式机制;或的关系 
 -f FILE, –file=FILE:FILE为每行包含了一个pattern的文本文件,即grep script;读取文件中的模式 
 -A NUM, –after-context=NUM 将匹配到符合条件的后NUM行也显示出来,NUM指某个数字。 
 -B NUM, –before-context=NUM将匹配到符合条件的前NUM行也显示出来,NUM指某个数字。 
 -C NUM, -NUM, –context=NUM将匹配到符合条件的前后NUM行也显示出来,NUM指某个数字。 
基本正则表达式元字符: 
 1、字符匹配: 
 “.”:匹配任意单个字符; 
 例如:“b..”表示以”b”字符开头的任意的三个字符,像 “baw”,”bbb”等都符合条件,而“bwer”这样的不符合条件。 
 [ ]:匹配范围内的任意单个字符; 
 例如:”[ad]b” 表示“ab”或”db”。 “[a-z]”表示a到z的26个英文字母当中的任意小写字母。 “[A-Z]”表示a到z的26个英文字母当中的任意大写字母。注意:在正则表达式中严格区分大小写,注意与glob通配字符区别。 
 常用的字符集合: 
 [:digit:]任意的数字,[:lower:]任意的小写字母, [:upper:]任意的大写字母, [:alpha:]任意的字母包括大小写, [:alnum:]任意的字母和数字, [:space:]任意的空白字符, [:blank:]任意的空白字符或者制表符, [:punct:]任意的标点符号。(补充:可以man 7 glob 找到) 
 [^]:匹配范围外的任意单个字符; 
 例如:[^a-z]=[^[:lower:]] 除了小写字母外的任意单个字符 
 2、匹配次数: 
 用于指定前面字符出现的次数。默认工作与贪婪模式。 
 “*”:匹配前面的字符出现任意次数(0或1或多次); 
 例如:grep “a*b” 表示b之前的a出现任意次”aaaab”,”b”,”ab”都符合条件。 
 “.*”:任意长度的任意字符。 
 例如:grep “a.*b” 表示”a”和”b”之间可以有任意字符也可以没有字符。 
 \ +: 前面的字符出现至少一次 
 例如:grep “a+b” 表示“b”字符之前的”a”出现的次数>=1。 
 \?:0或1次 grep”a\?b”表示“b”字符之前的”a”出现的次数为1次或0次。 
 \ {m\ }:前面的字符出现m次。 grep”a\ {m\ }b”表示“b”字符之前的”a”出现的次数为m次。 
 \ {m,n\ }:前面的字符出现[m,n]次为闭区间。 grep”a\ {m,n\ }b”表示“b”字符之前的”a”出现的次数为[m,n]次。 
 \ {0,n\ }:前面的字符出现至多n次。grep”a\ {0,n \ }b”表示“b”字符之前的”a”出现的次数为[0,n]次。 
 \ {m,\ }前面的字符出现至少m次。grep”a\ {m,\ }b”表示“b”字符之前的”a”出现的次数为[m,+∞]次。 
 3、位置锚定: 
 用于指定要搜索的文本出现在目标文本的位置。 
 ^:行首锚定。例如 grep “^ab” 表示以ab开头的行 
$ :行尾锚定。例如 grep “ab$” 表示以ab结尾的行 
 “^$”:表示空行。 
 ”^[[:space:]]*$“:表示空白行。 
 单词:由非特殊字符组成的连续的字符串。 
 \<或\b:词首锚定。例如:grep “\ < ab” 表示找以ab开头的单词所在的行,单词内含有ab但是ab不是词首的不匹配。 
 >或\b:词尾锚定。例如:grep “ab>” 表示找以ab结尾的单词所在的行,单词内含有ab但是ab不是词尾的不匹配。 
 \< 单词 >:单词锚定。例如:grep “\ < ab>”表示找有ab单词的行。 
 4、分组引用: 
 \ ( 条件\ ):把括号内的条件找到的结果当作一个整体来处理。括号里的条件找到的结果会自动被当作一个变量表示,正则表达式中以\1,\2,\3……依次表示。例如: 
 \ (条件1\ )\ (条件2\ )依次用\1,\2 变量表示。 
 解释:grep “\ (a..b\ ).*\1c” 表示匹配出 “a..b任意字符a..bc”这里如果前面的a..b找到的字符是acdb那么后面a..bc中的”..”必须是cd。前后要一致。 egrep:
支持使用扩展的正则表达式 
 用法与grep类似 
 扩展正则表达式的元字符: 
 字符匹配: 
 “.”:任意单个字符 
 [ ]:范围内的任意单个字符 
 [^ ]:范围外的任意单个字符 
 匹配次数:与grep比较egrep不需要加转义符”\“ 
 *:任意次; 
 ?:0次或1次; 
 +:1次或多次; 
 {m}:匹配m次; 
 {m,n}:至少m次,至多n次; 
 {0,n}:[0,n]次 
 {m,}:[m,+∞]次 
 位置锚定:与grep相同 
 ^:行首 
 $:行尾 
 \<, \b:词首 
 >, \b:词尾 
 分组及引用:与grep用法相同grep里的 \ ( \ )在egrep里变为()。 
 或者: 的整个左侧|整个右侧 
 a|b:a或者b 
 a|bc:表示a或bc 
 (a|b)c:表示ac或bc