linux 正则表达式详解

有关正则表达式容易混淆事项

  1. 本文讲的是Linux 系统中的正则表达式,即 Linux 正则表达式,应用正则表达式的命令就是 grep(egrep),sed,awk,注意,其他普通命令正常情况下无法使用正则表达式。
  2. 正则表达式与前文讲解的通配符,特殊字符有本质区别,正则在Linux中是通过三剑客(grep(egrep),sed,awk)命令在文件或数据流中过滤内容的。而通配符是大部分普通命令都支持的,它主要用来检查文件或目录的

环境变量修改

配置后操作时不会出现异常匹配情况

vim /etc/profile
export LC_ALL=C
soucre /etc/profile

linux 正则表达式分类

基本正则表达式(BRE, basic regular expression)

  1. BRE对应的元字符有 ^$.[]*
字符作用
^尖角号,用法为^dalei,表示匹配以dalei 字符串开头的行
$美元符,用法为dalei$,表示匹配以dalei 字符串结尾的行
^$组合符,表示空行,逻辑解释就是以^结尾的行,或者以$开头的行
.点号,表示匹配任意一个且只有一个字符(但是不能匹配空行)
\转义字符,让有特殊含义的字符失去含义,变成普通符号字符,如\.就只表示小数点
*重复匹配前一个字符(连续出现)0次或1次以上。注意:当重复0次的时候,表示啥也没有(空),即匹配所有内容
.*组合符,表示匹配所有
^.*组合符,匹配以任意多个字符开头的内容
.*S组合符,以任意多个字符结尾的内容
[abc]匹配[]集合内任意一个字符a或b或c;[abc] 也可写成[a-c]
[^abc]匹配不包含^后的任意字符a或b或c,这里的^表示对[abc] 的取反,^不能使用!替代
  1. 中括号常用形式有:
  • [a-z] 表示匹配所有单个小写字母
  • [A-Z] 表示匹配所有单个大写字母
  • [a-zA-Z] 表示匹配所有单个大小写字母
  • [0-9]表示匹配所有单个数字
  • [a-zA-Z0-9] 表示匹配所有字母数字

. 扩展正则表达式(ERE, extended regular expression)

  1. ERE在BRE基础上增加了 (){}?+| 等字符。
  2. 扩展正则使用grep有个条件需要加-E参数或者使用egrep
字符作用
+匹配前一个字符 1 次或多次
[:/]+匹配括号内的:或/字符1次或多次
?匹配前一个字符0次或1次
|表示或者,即同时过滤多个字符串
()分组过滤被括起来的东西表示一个整体,另外()的内容可以被后面的\n 引用,n为数字,表示引用第几个括号的内容
\n引用前面()小括号里的内容,例如:(aa)\1,匹配aaaa
a{n,m}匹配前一个字符最少n次,最多m次
a{n,}匹配前一个字符最少n次
a{n}匹配前一个字符正好n次
a{,m}匹配前一个字符最多m次

sed命令 经常使用

egrep “(0)(0)\1\2” dalei.txt
\1可以取第一个括号的内容
\2可以取第二个括号内容。

获取主机IP地址
ifconfig eth0|sed -rn ‘2s#^.inet (.) net.*$#\1#gp’

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值