正则表达式是一种字符模式,用于在查找过程中匹配制定的字符。
元字符通常在Linux中分为两类:
Shell元字符,由Linux Shell进行解析;
正则表达式元字符,由vi/grep/sed/awk等文本处理工具进行解析;
正则表达式一般以文本行进行处理,在进行下面实例之前,先为grep命令设置–color参数:
1 | alias grep='grep --color=auto' |
这样每次过滤出来的字符串都会带色彩了。
在开始之前还需要做一件事情,就是创建一个测试用的
1 | $ cat re-file |
文件内容摘录自<<UNIX/SHELL范例精解第四版>>
1 | $ cat linux.txt |
正则表达式元字符
元字符 | 功能 |
---|---|
^ | 以什么开头 |
$ | 以什么结尾 |
. | 匹配一个字符 |
* | 匹配0个或多个 |
[] | 匹配集合中的 |
[x-y] | 匹配集合范围内的 |
[^ ] | 匹配不在集合中的 |
\ | 转义 |
- 特殊的元字符
元字符 | 功能 | 实例 | 怎么匹配 |
---|---|---|---|
< | 以什么开头 | ‘<love’ | 匹配以love开头的所有行 |
> | 以什么结尾 | ‘love>‘ | 匹配love结尾的所有行 |
\(..\) | 标签匹配以后使用的字符 | ‘(love)able \1er’ | 用位置\1\2引导前面做好的标签,最大支持9个 |
x\{m\} or x\{m,\} or x\{m,n\} | 重复字符x,m次,至少m次,至少m且不超过n次 | o\{5,10\} | o字符重复5到10次的行 |
- 扩展的正则表达式
元字符 | 说明 |
---|---|
+ | 重复前一个字符一个或一个以上 |
? | 0个或者一个字符 |
丨 | 表示或,查找多个字符串 |
() | 分组过滤匹配 |
实操
- 匹配以love开头的所有行
1 | $ grep '^love' re-file |
- 匹配love结尾的所有行
1 | $ grep 'love$' re-file |
- 匹配以l开头,中间包含两个字符,结尾是e的所有行
1 | $ grep 'l..e' re-file |
- 匹配0个或多个空行,后面是love的字符
1 | $ grep ' *love' re-file |
- 匹配love或Love
1 | $ grep '[Ll]ove' re-file # 对l不区分大小写 |
- 匹配A-Z的字母,其次是ove
1 | $ grep '[A-Z]ove' re-file |
- 匹配不在A-Z范围内的任何字符行,所有的小写字符
1 | $ grep '[^A-Z]' re-file |
- 匹配love.
1 | $ grep 'love\.' re-file |
- 匹配空格
1 | $ grep '^$' re-file |
- 匹配任意字符
1 | $ grep '.*' re-file |
- 前面o字符重复2到4次
1 | $ grep 'o\{2,4\}' re-file |
- 重复o字符至少2次
1 | $ grep 'o\{2,\}' re-file |
- 重复0字符最多2次
1 | $ grep 'o\{,2\}' re-file |
- 重复前一个字符一个或一个以
1 | $ egrep "go+d" linux.txt |
- 0个或者一个字符
1 | ansheng@Ubuntu:/tmp$ egrep "go?d" linux.txt |
- 或,查找多个字符串
1 | $ egrep "gd|good" linux.txt |
- 分组过滤匹配
1 | $ egrep "g(la|oo)d" linux.txt |
原作者:安生
本文转自:https://blog.ansheng.me/article/examples-of-linux-regular-expressions
文章作者: 小俊
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 小俊丶生活日志!
相关推荐

2025-06-20
ACG-API免费公测中
ACG-API免费公测中- 经过一段时间测试和代码完善,现在打算免费开放公测,公测期间访问站点调用API即可使用 - API站点地址:https://acg-api.97hjh.cn/ - 调用方式1:https://acg-api.97hjh.cn/img - 调用方式2:https://acg-api.97hjh.cn/api - API站点服务说明: 程序 or 服务 说 明 PHP8 主要核心程序 Nginx Web工具 Minio 图库存储 Redis 缓存图库API TDSQL-C 图库API专用数据库 加密算法+签名算法 Hash算法 CDN 小鸡云 - 如果您在访问中遇到什么Bug或者问题,欢迎随时联系我 - Email:eternally@97hjh.cn - QQ:878011062 - 微博:weibo.com/97hjh

2023-06-29
Linux内核参数说明
Linux内核参数说明123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596# 关闭ipv6net.ipv6.conf.all.disable_ipv6 = 1net.ipv6.conf.default.disable_ipv6 = 1# 避免放大攻击net.ipv4.icmp_echo_ignore_broadcasts = 1# 开启恶意icmp错误消息保护net.ipv4.icmp_ignore_bogus_error_responses = 1# 关闭路由转发net.ipv4.ip_forward = 0net.ipv4.conf.all.send_redirects = 0net.ipv4.conf.default.send_redirects = 0#...

2023-06-29
Centos7编译安装OpenResty
今天空闲,看到一篇文章,就突发奇想,想搞一下OpenResty 测试说明 测试配置 8核4G 测试系统 Centos7.7-1908 软件版本 OpenResty-1.13.6.2 1.下载安装 1.1下载源码这里我们下载OpenResty的源码包 1wget https://openresty.org/download/openresty-1.13.6.2.tar.gz 1.2安装依赖不安装依赖在编译的时候会出现很多报错 1yum -y install gcc gcc-c++ pcre pcre-devel lua-devel systemtap-sdt-devel openssl-devel openssl 1.3编译前奏需要注意编译并不能在openresty根目录进行,否则将会失败。 12tar zxvf openresty-1.13.6.2.tar.gzcd...

2023-06-29
LVS+Nginx负载均衡
1.学习目标 掌握什么是负载均衡及负载均衡的作用和意义。 了解lvs负载均衡的三种模式。 了解lvs-DR负载均衡部署方法。 掌握nginx实现负载均衡的方法。 掌握lvs+nginx负载均衡拓扑结构。 2.负载均衡的相关技术 基于DNS的负载均衡 优点:实现简单、实施容易、成本低、适用于大多数TCP/IP应用 缺点:...

2023-06-29
MySQL—MHA高可用
操作系统:CentOS 6.6X 64位架构规划:Mysql服务器:192.168.157.128 从 Node数据节点 Manager管理节点192.168.157.129 主 Node数据节点 192.168.157.130 从 Node数据节点 以下操作分别在128、129、130服务器上操作 1、安装Mariadb 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071#安装相关依赖包yum -y install cmake gcc gcc-c++ make autoconf libtool-ltdl-devel gd-devel freetype-devel libxml2-devel libjpeg-devel libpng-devel openssl-devel curl-devel bison patch unzip libmcrypt-devel...

2023-06-29
Mysql备份脚本-Xtrabackup
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950#!/bin/sh#mysql_backupbegintime=`date +"%Y-%m-%d_%H-%M-%S"`format_time=`date +"%Y-%m-%d_%H-%M-%S"`tar_time=`date +%F --date="-1 day"`currentHour=$(date...