
Linux grep正则表达式学习笔记
发布日期:2025-04-06 01:18:44
浏览次数:7
分类:精选文章
本文共 1677 字,大约阅读时间需要 5 分钟。
基础参数
grep命令支持多种参数和选项,用于控制匹配行为。以下是常见的命令行参数及其作用:
-a
:将二进制文件以文本形式处理。-c
:显示匹配行的数量。-i
:忽略大小写差异,执行无区分匹配。-n
:在匹配项的开头显示匹配行号。-o
:只显示匹配的字符部分,不显示完整的行。-A
:显示匹配项后面跟随的N行内容。-B
:显示匹配项前面带着的N行内容。-E
:启用扩展正则表达式(PCRE),进行更复杂的模式匹配。--color
:将匹配结果以特定颜色高亮显示。
字符类匹配
grep支持多种预定义字符集合,可以用于快速定位特定字符类型。常见的字符类包括:
[:alnum:]
:匹配字母和数字字符。[:alpha:]
:匹配字母字符(大小写)。[:digit:]
:匹配数字字符。[:lower:]
:匹配小写字母。[:space:]
:匹配空白字符,包括空格和制表符。[:upper:]
:匹配大写字母。[:wn:]
:匹配字母和数字字符,也可以用于匹配合并、停用词列表。
例如,可以通过以下命令匹配包含“v”或“V”的文件:
grep '[vV]ivek' 文件名
如果需要匹配带有数字的“vivek”,可以使用:
grep -w '[vV]ivek[0-9]' 文件名
正则表达式限定符
正则表达式通过限定符(如+
、*
、?
等)控制匹配次数。常见限定符包括:
.
(任意单个字符,不包括换行符)。*
(零次或多次重复)。+
(至少一次重复)。?
(零次或一次重复)。
例如,可以匹配“vivek”重复两次的文本:
egrep "vivek{2}" 文件名
正则序列检测符
grep支持通过序列检测符(如{n,m}
)限定子表达式的出现次数。例如,匹配包含三个“c”字符的文本:
egrep 'c{3}' 文件名
或逻辑与和逻辑
- 或逻辑(|):可以使用
-E
开启扩展正则表达式模式,或者直接在表达式中使用|
符号。例如,匹配“word1”或“word2”:
grep -E 'word1|word2' 文件名
- 或逻辑,对于普通grep命令,使用以下命令组合:
grep 'word1' 文件名 | grep 'word2' 文件名
正则特殊字符
正则表达式中某些字符需要通过转义符(如\
)进行处理,以避免特殊含义。常见字符包括:
^
、$
、?
、*
、+
、{
、}
、|
等。
例如,^
匹配字符串开始位置,而\^
匹配实际的“^”字符。
正则非打印字符
某些字符不属于打印字符(如制表符、换行符等),在正则表达式中可以通过转义符表示。常见非打印字符包括:
\n
:换行符。\r
:回车符。\t
:制表符。\s
:所有空白字符。\S
:所有非空白字符。
零宽断言
零宽断言用于在特定位置添加限定条件,而不匹配字符本身。常见零宽断言包括:
\b
:单词边界,匹配词的开头或结尾。(?<=...)
:正向零宽断言,匹配后面跟随指定内容。(?<!...)
:负向零宽断言,匹配前面不带有指定内容。(?=...)
:正向零宽断言,匹配后面带有指定内容。
例如,匹配以“re”开头的单词:
grep '(?<=re)\w+' 文件名
常用分组
正则表达式中的分组用于保存匹配结果或进行逻辑组合。常见分组类型包括:
( )
:捕获或非捕获分组。(?<name>...)
:命名捕获组。(?...)
:属于非捕获分组。
例如,可以提取“手机号”区域码和 remaining 数字:
grep '\d{3,}\s\d+' 文件名
正则表达式模式说明
grep支持Basic Regular Expression(BREs)、Extended Regular Expression(EREs)和 Perl Compatible Regular Expression(PCREs)。
- BREs:默认模式,部分支持字符类和基本限定符。
- EREs:支持更多高级功能,如多线匹配、扩展限定符。
- PCREs:支持更多高级功能,如自动回溯、动态语言支持。
通过选择不同的模式,可以更灵活地处理复杂文本匹配任务。
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年05月13日 01时47分10秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux Bash 脚本中的 IFS 是什么?
2023-01-31
linux bash: sqlplus: command not found 错误处理
2023-01-31
linux bash中too many arguments问题的解决方法
2023-01-31
Linux BASH多进程并行处理的方法实现
2023-01-31
linux bg和fg命令
2023-01-31
Linux Bridge KVM虚拟化环境部署
2023-01-31
Linux Bridge(网桥)
2023-01-31
linux build编译,rpmbuild 编译
2023-01-31
linux C 中的volatile使用【转】
2023-01-31
linux c 正则
2023-01-31
Linux C/C++ 学习路线(已拿腾讯、百度 offer)
2023-01-31
Linux cat 命令的进化版:Bat 0.25 正式发布,行压缩功能亮点十足!
2023-01-31
linux centos tomcat8配置apr模式
2023-01-31
linux centos 安装 docker-compose 1.27.4
2023-01-31
linux centos6.4 php连接sql server2008
2023-01-31
Linux Centos7 xfsdump文件系统的备份和恢复
2023-01-31
Linux centos7 防火墙设置
2023-01-31
linux centos下 svn 版本控制服务器的搭建
2023-01-31
Linux CFSSL 生成证书
2023-01-31
linux chrom 系统无法读取用户偏好配置无需删除.config配置文件
2023-01-31