Grep命令中正则表达式(regular Expressions,RE)的用法

当你在使用grep命令的时候肯定会用到正则表达式,那么怎么在grep命令中使用正则表达式呢?

正则表达式元字符

grep命令支持很多正则表达式的元字符,以使用户能够更精准的定义要查找的模式。例如,可以通过制定的选项来关闭大小写敏感,要求显示行号等。

元字符功能示例匹配对象
^行首定位符‘^user'匹配所有以user开头的行
$行尾定位符’user$'匹配所以以user结尾的行
匹配一个字符‘u.r'匹配包含一个u,后跟一个字符,再跟一个r的行
*匹配两个或多个前导字符’u*ser'匹配包含零个或多个u后,跟ser模式的行
[]匹配一组字符中的人一个‘[uU]ser'匹配包含user或者User的行
[^]匹配不在指定字符组里的字符’[^A-S]ser‘匹配一个不在A到S之间的字符,并且该字符后紧跟着ser的行
\<词首定位符’\<user‘匹配包含以user开头的词的行
\>词尾定位符’user\>‘匹配包含以user结尾的词的行
\<..\>标记匹配到的字符’\<user\>'匹配包含<user>的行
{M}{M,}{M,N}

匹配重复出现的次数M次匹配出现的次数至少M次

匹配出现的次数至少M次,但不超过N次

'u\{4\}u\{5\}

u\{5,8\}'

匹配连续出现4个u的行匹配连续出现最少5个u的行

匹配连续出现最少5个,最多8个u的行

 

grep 正则表达式示例:

在/etc/passwd 里查找包含“user1“字符串的行

[root@devops ~]# grep user1 /etc/passwd
user1:x:502:503::/home/user1:/bin/bash

如果想忽略大小写的区做搜索可以使用-i选项

#grep  user1 /etc/passwd

你可以使用"."元字符为一个单个的字符做匹配,例如我们可以使用下面的命令去匹配一个以”u"开头,以“r”结尾,中间是任意一个字符的行

[root@devops ~]# grep '\<u.r\>' /etc/passwd
game:x:12:100:games:/usr/games:/sbin/nologin

如何在grep正则表达式中准确的匹配所有包含两个字符的行?

[root@devops ~]# grep '^..$' /

转载于:https://my.oschina.net/u/1756504/blog/224911

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值