正则表达式
1.什么是正则表达式
发明一套符号,不同的 符号有不同的含义,方便我们在文件中查找/过滤内容
简称正则 regular expression RE
正则表达式分类
1.基础正则 basic BRE
^ , ,., , ., [] , [^]
2.扩展正则 extended ERE
+,| ,(),{} ,?
2.通配符与正则区别
作用 支持的命令
通配符 方便我们进行查找文件 Linux下面大部分命令都可以使用
正则 方便我们在文件中查找/过滤内容 Linux三剑客 开发语言 Python go java
3.使用正则注意事项
1.注意中文符号
2.给grep egrep 加上颜色(centos7系统自带 centos6需要自己添加别名)
3.空格也是符号
cat -A 显示每一行结束的标记。显示隐藏符号,并在每行结尾加$
4.基础正则
\^以...开头的行 例:\^m \^oldboy
\$ 以...结尾的行 例:m \$ oldboy\$
^$ 显示空行,这一行中什么都没有 排除空行:grep -vn '^$'
表示任意一个字符(单个)不会匹配出空行。 grep -o显示grep每一次过滤出什么内容,匹配到什么内容(显示过程)
\ 转义符,去掉符号原有的特殊含义(脱掉马甲,打回原形) 转义字符系列 \n 回车,换行:\t tab,一个字符相当于8个空格的位置
*前一个字符连续出现0次或0次以上 重复=repetition 用法 grep 0* 很少单独使用
[] 中括号 [abc] 相当于一个字符,匹配到a或b或c 中括号内的内容都会被匹配
[^] 不要a或不要b或不要c [^abc] 字符为单位 不要这几个内容
让echo支持转义字符 echo -e ' '
echo 不输出每行结尾的回车 echo -n
特点:贪婪性,能匹配多少就匹配多少,来者不拒
正则表达式表示所有.或者是连续出现的时候会表现出贪婪性
习题
显示以m或n或o开头的行
grep '^[mno]' /oldboy/oldboy.txt
以m或n或点结尾的行
grep '[mn.]$' /oldboy/oldboy.txt
显示以m或n或o开头的并且以m或n或点结尾的行
grep '^[mno].*[mn.]$' /oldboy/oldboy.txt
grep '^[mno] /oldboy/oldboy.txt |grep '[mn.]$'
[^abc] 字符为单位 不要这几个内容
grep -v 以行为单位 包含内容的行都不要
5.扩展正则 使用grep -E或者egrep 也支持基础正则
- 前一个字符连续出现1次或多次 一般与[]一起使用
| 或者 没有管道的作用了,区分开
() 被括起来的内容相当于是一个整体 sed里用来表示后向引用或反向引用
{} 连续出现 例如: b{m,n} b出现了至少m次 最多n次 ; b{m} b出现了m次
? 前一个字符出现0次或1次 不常用
括号表达式 了解 [[:alnum:]]大小写字母和数字
查找:
man grep
info grep 详细
扩展正则支持命令 grep -E或egrep/sed -r /awk
基础正则支持命令 grep/sed/awk