Linux-正则表达式

Linux正则表达式

正则表达式(RegularExpression)在Linux系统中广泛应用于文本处理工具如grep,sed,awk等。Linux主要支持两种正则表达式风格:基本正则表达式(BRE)和扩展正则表达式(ERE)。

1.基本正则表达式

使用grep时用 -E,如grep -E "NATASHA|root" /etc/passwd

1.1元字符

|-----------------|----------------------|--------|---|---|
| 元字符 | 解释 || 示例 ||
| . | 匹配任意单个字符(除换行符) || j..k(匹配j两个字符k) ||
| ^ | 匹配行首 || ^s(匹配以s开头) ||
| | 匹配行尾 || a(匹配以a结尾) ||
| * | 前导符出现0次或多次 || go*(匹配g,go,goo,gooo等) ||
| + | 前导符出现1次或多次 || go*(匹配go,goo,gooo等) ||
| ? | 前导符出现0次或一次 || go*(匹配g,go) ||
| \[\] | 字符集合;匹配方括号中任意一个字符 || abc(匹配ac或bc) ||
| - | 匹配指定范围内的一个字符 || 0-3(匹配0,1,2,3中一个) ||
| \^ | 否定字符集合;匹配不在组内的字符 || \^0-3(不匹配0,1,2,3中一个) ||
| \ | 转义字符;无意义变有意义,有意义变无意义 || \.(将.无意义) ||
| \d 数字字符0-9 | \w 等同于a-zA-Z0-9 | \s 空格 | \b 单词边界 ||
| \< | 词首定位符 || \<jack\>(就匹配jack) \<Jjck\>(匹配Jcak或jack) ||
| \> | 词尾定位符 || \<jack\>(就匹配jack) \<Jjck\>(匹配Jcak或jack) ||
| \(\) | 匹配后的标签 || IP=10.8.11.32(替换32为33) :%s/\(10.\)\(8.\)\(11.\)\(32\)/\1\2\3\33/ ||
| | | 或 || "a|b"a或b ||
| x{m} | 字符x重复m次 || o{5}o重复5次 ||
| x{m,} | 字符x重复至少m次 || o{5}o重复至少5次 ||
| x{m,n} | 字符x重复m到n次 || o{5,7}o重复5到7次 ||
[正则-元字符]

|--------------------|------------|----------|
| 工具/命令 | 默认正则类型 | 启用ERR的选项 |
| grep | BRE(基本元字符) | -E |
| sed | BRE(基本元字符) | -r |
| awk | ERE(拓展元字符) | 默认 |
| bash \[ =\~ ] | ERE(拓展元字符) | 默认 |
[Linux工具中的正则表达式差异]

1.1.1元字符.

复制代码
echo -e "cat\ncuorp\napple\nmany\nmum\ngire" | grep -E "c.t"
-e:作用在于使\n换行符起效果
-E:作用在于使正则起效果

1.1.2元字符^

复制代码
echo -e "cat\ncuorp\napple\nmany\nmum\ngire" | grep -E "^a"

1.1.3元字符$

复制代码
echo -e "cat\ncuorp\napple\nmany\nmum\ngire" | grep -E "e$"

1.1.4元字符*与+与?

复制代码
echo -e "cat\ncuorp\napple\nappppple\nale\nmany\nmum\ngire" | grep -E "ap*le"
复制代码
echo -e "Aio\ncat\ncuorp\nBin\napple\nZip\nappppple\nale\nmany\nmum\ngire" | grep -E "ap+"
复制代码
echo -e "Aio\ncat\ncuorp\nBin\napple\nZip\nappppple\nale\nmany\nmum\ngire" | grep -E "ap?le"

1.1.5元字符\[\]

复制代码
echo -e "cat\ncuorp\napple\nappppple\nale\nmany\nmum\ngire" | grep -E "[iou]"

1.1.6元字符-

复制代码
echo -e "Aio\ncat\ncuorp\nBin\napple\nZip\nappppple\nale\nmany\nmum\ngire" | grep -E "[A-Z]"

1.1.7元字符\^

复制代码
echo -e "Aio\ncat\ncuorp\nBin\napple\nZip\nappppple\nale\nmany\nmum\ngire" | grep -E "[^a-p]"

1.1.8元字符\

复制代码
echo -e "example.com\nhello world\ntest.txt\nabc123" | grep -E "\.

1.1.9元字符\<\>

复制代码
echo -e "Aio\ncat\ncuorp\nBin\napple\nZip\nappppple\nale\nmany\nmum\ngire" | grep -E "\<apple\>"

1.1.10元字符 \(\)

复制代码
:%s/\(192.\)\(168.\)\(189.\)\(133\)/\1\2\3134/  

1.1.11元字符x{m}与x{m,}与x{m,n}

复制代码
echo -e "Aio\ncat\ncuorp\nBin\napple\nZip\nappppple\nale\nmany\nmum\ngire" | grep -E "p{3}"

echo -e "Aio\ncat\ncuorp\nBin\napple\nZip\nappppple\nale\nmany\nmum\ngire" | grep -E "p{2,5}"

echo -e "Aio\ncat\ncuorp\nBin\napple\nZip\nappppple\nale\nmany\nmum\ngire" | grep -E "p{1,}"
相关推荐
ShiXZ2131 分钟前
Docker Compose 安装与配置指南
运维·docker·容器
sulikey6 分钟前
个人Linux操作系统学习笔记11 - 环境变量
linux·笔记·学习
Kina_C13 分钟前
NFS与Autofs快速讲解-从原理到实战配置
linux·nfs·autofs
麦聪聊数据16 分钟前
企业数据市场建设(四):流程闭环与价值运营,让数据市场真正转起来
运维·数据库
皮卡狮16 分钟前
文件系统:磁盘硬件寻址和系统软件寻址
linux
是潮汕的灿灿展吖41 分钟前
Centos离线部署nfs操作
linux·运维·centos
Kina_C43 分钟前
Apache HTTP Server 安装、配置与高级功能详解
linux·http·apache
治愈系贝壳1 小时前
ARM --- day 6 时钟
linux·arm开发·学习
FII工业富联科技服务1 小时前
从灯塔工厂到AI Factory新模式:AI正在重构制造业的四大核心能力
大数据·运维·人工智能·重构·ar·制造
小五传输1 小时前
自主可控建设指南:Serv-u替代方案,实现平滑迁移业务不中断
大数据·运维·安全