一、正则表达式
1、正则表达式的定义
-
什么是正则表达式:
正则表达式,又称规则表达式,(英语:Regular Expression)在代码中常简写为 regex、regexp 或 RE ,计算机科学的一个概念。 -
作用:
正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本 -
正则表达式不只有一种,而且 Linux 中不同的程序可能会使用不同的正则表达式,如:
工具:
grep、 sed 、awk、 egrep
正则表达式——通常用于判断语句中,用来检查某一字符串是否满足某一格式 -
正则表达式是由普通字符与元字符组成
普通字符:包括大小写字母、数字、标点符号及一些其他符号
元字符:是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式 -
LINUX 中常用的有两种正则表达式引擎
基础正则表达式:BRE
扩展正则表达式:ERE
2、grep命令
格式:
grep [选项] 查找条件 目标文件
常用选项:
选项 | 含义 |
---|---|
-E | 开启扩展(Extend)的正则表达式 |
-c | 计算找到 ‘搜寻字符串’ 的次数 |
-i | 忽略大小写的不同,所以大小写视为相同 |
-o | 只显示被模式匹配到的字符串 |
- - color=auto | 可以将找到的关键词部分加上颜色的显示 |
-n | 顺便输出行号 |
-v | 反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行!(反向查找,输出与查找条件不相符的行) |
例子文件lizi.txt
1、统计root字符总行数
[root@ky19cl zzbds]# grep -c root /etc/passwd
2
2、不区分大小写查找
[root@ky19cl zzbds]# ls
lizi.txt
[root@ky19cl zzbds]# grep -i 'the' lizi.txt
3、将非空行输入到test.txt文件中
[root@ky19cl zzbds]# grep -v "root" passwd|grep -v "^$" > test.txt
4、过滤ip(ens33)
[root@ky19cl zzbds]# ifconfig ens33 | grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+"|head -1
192.168.159.50