linux 正则表达式(2)-扩展正则表达式
扩展正则表达式
- + 匹配前一个字符1次或多次。
- [:/]+ 匹配括号内的 : 或 / 字符1次或多次。
- ? 匹配前一个字符0次或1次。
- | 表示或者,即同时过滤多个字符串。
- () 分组过滤被括起来的东西表示一个整体,另外()的内容可以被后面的\n引用,n为数字,表示引用第几个括号的内容。
- \n 引用前面()小括号里的内容,例如:(aa)\1,匹配aaaa。
- a{n,m} 匹配前一个字符最少n次,最多m次。
- a{n,} 匹配前一个字符最少n次。
- a{n} 匹配前一个字符正好n次。
- a{,m} 匹配前一个字符最多m次。
grep 仅支持基础正则表达式,扩展表达式需要用egrep
使用案例
- 查找指定内容
# 查找含有 network 或者 ip 的行。
egrep 'network|ip' 123.log
2. 查找重复出现的内容
# 查找含有 255.255. 内容的行。
ifconfig ens192 | egrep '(255.)\1'
# \1 表示小括号的内容重复出现一般,即255.255.
3.过滤/etc/passwd中至少含有1个0字符串的行。
egrep '0+' /etc/passwd
3. 过滤/etc/passwd中匹配0字符1次到3次的行。
egrep '0{1,3}' /etc/passwd
5. 过滤/etc/shadow中匹配含有连续多个冒号或斜线的行。
egrep '[:\]+' /etc/shadow