目录
1、正则表达式基础
1) 正则表达式定义
正则表达式是一种可供linux根据过滤文本的自定义模版。linux工具(awk\sed)会在读取数据是使用正则表达式对数据进行模式匹配。如果数据匹配模式,它就会处理,如果数据部匹配模式,他就会被启用。
可以在正则表达式中使用不同的特殊字符来定义特定的数据过滤模式。
2)正则表达式类型
正则表达式是由正则表达式引擎来实现的。它是一种底层软件,负责监视正则表达式并用这些模式进行文本匹配。
基础正则表达式引擎(BRE) | grep/sed/awk |
扩展正则表达式引擎(ERE) | egrep/sed -r/awk |
2、基础正则
基础正则 | 含义 | 搭配 |
^ | 以....开头的行 | |
$ | 以.....结尾的行 | |
^$ | 空行 | 搭配^$ |
. | 任意一个字符 | |
* | 前一个字符连续出现(重复)0次或者0次以上 | |
.* | 所有内容 | 搭配.* |
\ | 转义字符 \. | |
[ ] | 一个整体,匹配任意一个字符[ ] | [ ]与+搭配 |
[^ ] | 取反排除 | |
正则贪婪性 | .*或者连续出现 |
1) ^ 以.....开头的行
2)$ 以.....结尾的行
3)^$ 空行
grep -n '^$' 文件名 -n参数表示显示行号
企业应用案例
排除文件中空行 grep -v '^$' 文件名
4). (点)表示任意一个字符,不匹配空行
5)\ 转义字符
6) * 前一个字符连续出现0次或者0次以上
7).* 所有内容(包括空行)
正则表达式的贪婪性, .* 表示所有或*连续出现的时候,表现出尽可能贪婪匹配。
8)[ ] 中括号, 一次匹配一个字符,匹配任何一个字符
[abc] 匹配a或者b或者c
[a-z] 小写
[A-Z] 大写
[0-9] 数字
匹配文件中的大小写字母和数字
grep ' [a-zA-z0-9] 文件名
或者是 grep '[a-Z0-9]' 文件名
或者是 grep -i '[a-z0-9]' 文件名 -i参数不区分大小写
9)[^...] 排除
[^ abc] 排除,排除a或者b或者c的内容
3、扩展正则
符号 | 含义 | 搭配 |
+ | 前一个字符连续出现1次或者1次以上 | [ ]+ |
| | 或者 | |
( ) | 一个整体,sed反向引用 | |
{ } | o{n,m} 前一个字母o,至少连续出现n次,最多连续出现m次 | |
? | 连续出现,前一个字符出现0次或者1次 |
1) + 前一个字符连续出现1次或者多次以上
2) | 或者
对比
符号 | 含义 | 应用场景 |
[ ] | 1次匹配一个字符 | 匹配单个字符[ ] 和+ |
| | 匹配1个或者多个字符 | 匹配单词 |
3)() 被括起来的内容表示一个整体
egrep ' oldb(o|e)y' 文件名
4) { } 连续出现
o{n,m} 前一个字母o,至少连续出现n次,最多连续出现m次
o{n} 前一个字母连续出现n次
o{n,} 前一个字母o,至少连续出现n次
o{,m} 前一个字母o ,最多连续出现m次
5)?连续出现,前一个字符出现0次或者1次
练习题目:
排除文件中的空行或者含有#号的行
grep命令
sed 、awk命令