正则表达式 Regular Expression RE
发明的一套符号,不同的符号代表不同的含义,方便我们在文件中查找/过滤内容
特点:能匹配多少就匹配多少
在正则表达式表示所有(.*)或者是连续出现的时候会产生贪婪性
分类
基础正则 Basic RE (BRE)
^ $ ^$ . * .* [] [^]
扩展正则 Extended RE (ERE)
+ | () {} ?
正则与通配符区别
通配符
作用:方便我们查找文件
支持的命令:Linux下大部分命令都支持
正则
作用:方便我们进行过滤(查找)文件内容
支持的命令:Linux三剑客 开发语言
注意事项
注意中文符号
给grep egrep加上颜色
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'(C7中系统完成,C6中自己设置)
基础正则
^ 以什么开头的行 grep "^m" /etc/srvices
$以什么结尾的行 grep "m$" /etc/srvices
(空格也是符号,会被过滤出来)
^$ 空行 grep "^$" /etc/srvices
. 表示任意一个字符(单个)不会匹配出空行
\转义字符 去掉符号原有的特殊含义
grep "\.$" /etc/srvices找出以点结尾的行
grep ".$" /etc/srvices找出以任意字符结尾的行
系列\n 回车 \t按tab
tr ‘\n’ ‘\t ’ </etc/srvices将文件中的回车替换成tab键
* 前一个字符连续出现0次或0次以上(重复repetition)
grep 'z*' /etc/srvices
.* 所有任意字符
grep '^.*o' /etc/srvices
找出以任意字符开头到o的行(这行内最后一个o)
[] []中括号内相当于一个字符
[abc]每次匹配1个或a或b或c
[^] 不匹配中括号内^后面的内容
[^abc]每次匹配时不要或a不要或b不要或c
扩展正则 命令 egrep /grep -E
+前一个字符出现1次或多次以上
egrep '[a-Z]+' /etc/srvices
(与[]一起使用搜索数字或字母)
| 或者
egrep 'oldboy|linux' /etc/srvices找到有oldboy或linux的行
() 括起来的内容代表一个整体
用来表示后向引用(反向引用)
{} 连续出现
a{m,n} a这个字符至少出现m次,最多出现n次
a{m} a这个字符正好出现m次
a{m,} a这个字符最少出现m次
a{,n} a这个字符最多出现n次
?前一个字符出现0次或1次
egrep 'go?d' /etc/srvices搜索god和gd
基础正则支持命令grep / sed / awk
扩展正则支持命令grep -E/egred sed -r awk
cat -A 显示出文件中所有隐藏符号每一行的结尾会加上$
grep -o 显示grep每次过滤出了什么内容
echo -e 显示信息,使转义字符生效