字符匹配:
1
2
3
4
.: 匹配任意单个字符;
[]: 匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
[:digit:] [:lower:] [:upper:] [:alpha:] [:alnum:] [:punct:] [:space:]匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数,默认工作在贪婪模式:尽可能长的匹配
1
2
3
4
5
6
7
8
9
10
* :匹配前面的字符任意次,包括0次
.* :任意长度的任意字符
\? :匹配其前面的字符0或1次
\+ :匹配其前面的字符至少1次,但不需要紧随在第一次后面
\{m\} :匹配前面的字符m次
\{m,n\} :匹配前面的字符至少m次,至多n次
\{,n\} :匹配前面的字符至多n次
<=n次
\{m,\} :匹配前面的字符至少m次
>=m次位置锚定:定位出现的位置
1
2
3
4
5
6
7
8
9
^ :行首锚定,用于模式的最左侧
$ :行尾锚定,用于模式的最右侧
^PATTERN$: 用于模式匹配整行
^$: 空行
^[[:space:]]*$ :空白行或包含tab字符的行
\< 或 \b :词首锚定,用于单词模式的左侧
\> 或 \b :词尾锚定;用于单词模式的右侧
注意:在grep中,字母和数字的组合也被视为单词
\<PATTERN\>:锚定以PATTERN表达式做为单词的行分组及引用
1
2
3
4
5
6
7
8
\(\):将1个或多个字符捆绑在一起作为一个整体进行处理
\(xy\)*ab:xy作为一个整体出现0此或多次
注意:分组括号中的模式匹配到的内容会被正则表达式引擎记录与内部变量中,这些变量为:
\1:模式从左侧起,第一个左括号以及与其匹配的右括号之间的内容
\2:模式从左侧起,第二个左括号以及与其匹配的右括号之间的内容
\3:
……
后向引用:引用前面的分组括号中的模式所匹配的字符,且引用中的数据和分组模式匹配到的数据是一样练习:
1、显示/etc/passwd 文件中不以/bin/bash 结尾的行
# grep -v "/bin/bash$" /etc/passwd2 、显示用户rpc 默认的shell 程序
# grep "^rpc\>" /etc/passwd | cut -d: -f73 、找出/etc/passwd 中的两位或三位数
# grep -E "\<[0-9]{2,3}\>" /etc/passwd4 、找出"netstat -tan" 命令的结果中以'LISTEN' 后跟0 、1或多个空白字符结尾的行
# netstat -tan | grep "\<LISTEN[[:space:]]*$"egrep及扩展的正则表达式
egrep = grep -E
egrep [OPTIONS] PATTERN [FILE...]
选项:-i,-o,-v,q,-A,-B,-C
-G:支持基本的正则表达式扩展正则表达式元字符:
字符匹配:
1
2
3
4
.: 匹配任意单个字符;
[]: 匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
[:digit:] [:lower:] [:upper:] [:alpha:] [:alnum:] [:punct:] [:space:]匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数,默认工作在贪婪模式,尽可能长的匹配
1
2
3
4
5
6
7
8
9
10
* :匹配前面的字符任意次,包括0次
.* :任意长度的任意字符
? :匹配其前面的字符0或1次
+ :匹配其前面的字符至少1次
{m} :匹配前面的字符m次
{m,n} :匹配前面的字符至少m次,至多n次
{,n} :匹配前面的字符至多n次
<=n次
{m,} :匹配前面的字符至少m次
>=m次位置锚定:定位出现的位置
1
2
3
4
5
6
7
8
9
10
^ :行首锚定
$ :行尾锚定
^PATTERN$: 用于模式匹配整行
^$: 空行
^[[:space:]]*$ :空白行或包含tab字符的行
\< 或 \b :词首锚定
\> 或 \b :词尾锚定
注意:在grep中,字母和数字的组合也被视为单词
\<PATTERN\>:锚定以PATTERN表达式做为单词的行分组及引用
1
2
3
4
5
6
():括号内模式会被记录于正则表达式引擎中:
后向引用:\1,\2,\3......
或者
a|b:a或者b
eg:C|cat:表示C或者cat
(C|c)at :表示Cat或者cat练习:
1 、显示当前系统上,root,gao和user1用户的相关信息
# grep -E "\<(root|gao|uer1)\>" /etc/passwd2 、统计以root 身份登录的每个远程主机IP
# who | grep -E "^root\>" | wc -l3 、使用egrep 取出/etc/rc.d/init.d/functions
# echo "/etc/rc.d/init.d/functions" | grep -oE "[^/]+/?$"
grep用法
最新推荐文章于 2024-05-17 23:55:41 发布
本文深入解析正则表达式的各种元素,包括字符匹配、匹配次数、位置锚定、分组及引用等,并通过实际案例演示如何运用这些规则在Linux环境中进行精确的数据搜索与处理。
部署运行你感兴趣的模型镜像
您可能感兴趣的与本文相关的镜像
ACE-Step
音乐合成
ACE-Step
ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言
489

被折叠的 条评论
为什么被折叠?



