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) ||
| [] | 字符集合;匹配方括号中任意一个字符 || [ab]c(匹配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) \<[Jj]ck\>(匹配Jcak或jack) ||
| \> | 词尾定位符 || \<jack\>(就匹配jack) \<[Jj]ck\>(匹配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,}"
相关推荐
charlie11451419115 分钟前
嵌入式Linux驱动开发pinctrl篇(1)——从寄存器到子系统:驱动演进之路
linux·运维·驱动开发
Agent手记22 分钟前
异常考勤智能预警与处理与流程优化方案 | 基于企业级Agent的超自动化实战教程
运维·人工智能·ai·自动化
于小猿Sup34 分钟前
VMware在Ubuntu22.04驱动Livox Mid360s
linux·c++·嵌入式硬件·自动驾驶
cen__y1 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git
不仙5202 小时前
VMware Workstation 26.0.0 在 Ubuntu 24.04 (内核 6.17.0) 上的安装与内核模块编译问题
linux·ubuntu·elasticsearch
AI视觉网奇3 小时前
linux 检索库 判断库是否支持
java·linux·服务器
dapeng-大鹏3 小时前
KVM+LVM 零停机在线扩容 Ubuntu 根分区:从磁盘添加到逻辑卷扩展完整
linux·运维·ubuntu·磁盘空间扩展
乐维_lwops3 小时前
案例解读|运维监控助力某大型卷烟厂构建高效运维监控体系
运维·运维案例
JiaWen技术圈3 小时前
网站用户注册行为验证码方案
运维·安全
仙柒4153 小时前
Docker存储原理
运维·docker·容器