3.1 正则表达式基础
*:0个或多个在*字符之前的那个普通字符
.:匹配任意字符
^:匹配行首,或后面字符的非(放在[]中时)
$:匹配行尾
[]:匹配字符集合
\:转义符,屏蔽一个元字符的特殊意义
\<\>:精确匹配符号(\<the\>精确匹配the)
\{n\}:匹配前面字符出现n次
\{n,\}:匹配前面字符至少出现n次
\{n,m\}:匹配前面字符出现n~m次
3.2 正则表达式的扩展
?:匹配0个或1个在其之前的那个普通字符
+:匹配1个或多个在其之前的那个普通字符
():表示一个字符集合或用在expr中
|:表示“或”,匹配一组可选的字符(re(a|e|o)d)匹配read,reed,reod,但更常使用re[aeo]d表示
3.3 通配(与正则表达式符号意义不同)
*:任意位的任意字符
?:一个任意字符
^:取反
[]:匹配字符集合
\{\}:限制匹配字符的个数
3.4、grep命令
3.4.1、grep命令的基本用法
grep:支持正则表达式的一个多用途文本搜索工具
grep [选项] [模式] [文件...]
-c:只输出匹配行的数量
-i:搜索时忽略大小写
-h:查询多文件时不显示文件名
-l:只列出符合匹配的文件名,而不列出具体的匹配行
-n:列出所有的匹配行,并显示行号
-s:不显示不存在或无匹配文本的错误信息
-v:显示不包含匹配文本的所有行
-w:匹配整词
-x:匹配整行
-r:递归搜索,不仅搜索当前工作目录,而且搜索子目录
-q:禁止输出任何结果,以退出状态表示搜索是否成功
-b:打印匹配行距文件头部的偏移量,以字节为单位
-o:与-b选项结合使用,打印匹配的词距文件头部的偏移量,以字节为单位
-E:支持扩展的正则表达式
-F:不支持正则表达式,按照字符串的字面意思进行匹配
3.4.2、grep和正则表达式结合使用的一组例子
grep ^- *.pem:匹配.pem为后缀文件中以-开头的行
grep -c ^$ 00.pem:打印00.pem文件中空白行数量
grep -c ^[^$] 00.pem:打印00.pem文件中非空白行数量
grep ^/..../ 00.pem:匹配00.pem文件中以/开头,后面四个任意字符,再加一个/
grep ^-*B 00.pem:匹配00.pem文件中以0个或多个-开头,后面紧跟B的字符串
grep seu\.edu\.cn 00.pem:匹配seu.edu.cn
grep '\-\{5\} 00.pem:匹配-符号重复5次的文本行
[:upper:]:表示大写字母[A~Z]
[:lower:]:表示小写字母[a~z]
[:digit:]:表示阿拉伯数字[0~9]
[:alnum:]:表示字母和阿拉伯数字
[:space:]:表示空格或Tab键
[:alpha:]:表示字母
[:cntrl:]:表示Ctrl
[:graph:]或[:print:]:表示可打印字符
[:xdigit:]:表示十六进制数字
grep ^[[:upper:]] 00.pm:搜索以大写字母开头的行
grep ^[[:space:]] 00.pm:搜索以空格开头的行
grep "\<the\>" re01:精确匹配the字符,等价与grep -w the re01
grep -E "OU|seu" 00.pem:匹配含OU或seu字符的行