正则表达式里需要用到的符号
在这里插入图片描述
以上这些是正则表达式的符号以及含义
正则表达式需要用到的命令:
命令1:grep
命令2:egrep
以行为单位 逐行处理
默认输出与表达式相匹配的文本行
用法: egrep [选项] ‘正则表达式’ 文件
前置命令 | egrep [选项] ‘正则表达式’
grep 命令如果要用到扩展正则的时候 需要加-E选项 或者用egrep命令
egrep的 命令选项
-i 忽略字母大小写
-v 条件取反
-c 统计行数
-q 静默,无任何输出
-n 显示结果所匹配的行号
–color 标红显示匹配字符串
1.-q选项 quiet 静默
[root@desktop0 opt]# grep '^127.0.0.1' /etc/hosts && echo "YES" || echo "NO"
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
YES //如果加-q选项则直接输出yes 或no 简化脚本输出
[root@desktop0 opt]# grep -q '^127.0.0.1' /etc/hosts && echo "YES" || echo "NO"
YES
2.基本元字符----^(开头) 和 $(结尾)
//输出以r开头的行
# grep '^r' /etc/passwd
root:x:0:0:root:/root:/bin/bash
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
//输出以bash结尾的行
[root@desktop0 opt]# grep 'bash$' /etc/passwd
root:x:0:0:root:/root:/bin/bash
student:x:1000:1000:Student User:/home/student:/bin/bash
3.基本元字符 . 匹配任意单个字符 *匹配任意字符
grep '.' user //匹配有字符的行
grep '.*' user //匹配任意行
grep 'a' user //匹配带a的行
4.输出空行
egrep -v '.' user
egrep '^$' user
5.基本元字符-- + ? * 目标出现的次数
输出包含a的行 a最少出现一次
egrep 'a+' user
输出包含 nolog,nologin的行 in最多出现一次
egrep 'nolog(in)?' user
输出nologin的行 末尾的n可以出现多次 末尾只有一个字符重复出现时 可以不用()
egrep 'nologin*' user
输出开头是r 结尾是nologin的行 中间可以使任意值
egrep '^r.*nologin$' /etc/passwd
6.元字符{} 限定出现的次数范围
输出带ab ab 连续出现三次
[root@svr5 ~]# egrep '(ab){3}' brace.txt
输出包含ab 且ab连续出现2次到4次的行
egrep '(ab){2,4}' brace.txt
输出包含ab ab最少连续出现三次的行
[root@svr5 ~]# egrep '(ab){3,}' brace.txt
7.元字符[] — 匹配范围内的单个字符
输出前面是ab 第三位是c或者是d的行
[root@svr5 ~]# egrep 'ab[cd]' brace.tx
输出包含大写字母的行
[root@svr5 ~]# egrep '[A-Z]' brace.txt
8.匹配单词边界
输出包含单词init的行 单词init 前后不能有别的字符
[root@svr5 ~]# egrep '\binit\b' /etc/rc.local
[root@svr5 ~]# egrep '\<init\>' /etc/rc.local
输出以单词ll > 匹配单词的右边界
[root@svr5 ~]# egrep 'll\>' /etc/rc.local