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,}"
相关推荐
天才奇男子15 小时前
HAProxy高级功能全解析
linux·运维·服务器·微服务·云原生
小李独爱秋15 小时前
“bootmgr is compressed”错误:根源、笔记本与台式机差异化解决方案深度指南
运维·stm32·单片机·嵌入式硬件·文件系统·电脑故障
学嵌入式的小杨同学15 小时前
【Linux 封神之路】信号编程全解析:从信号基础到 MP3 播放器实战(含核心 API 与避坑指南)
java·linux·c语言·开发语言·vscode·vim·ux
酥暮沐16 小时前
iscsi部署网络存储
linux·网络·存储·iscsi
❀͜͡傀儡师16 小时前
centos 7部署dns服务器
linux·服务器·centos·dns
Dying.Light16 小时前
Linux部署问题
linux·运维·服务器
S190116 小时前
Linux的常用指令
linux·运维·服务器
萤丰信息16 小时前
AI 筑基・生态共荣:智慧园区的价值重构与未来新途
大数据·运维·人工智能·科技·智慧城市·智慧园区
小义_17 小时前
【RH134知识点问答题】第7章 管理基本存储
linux·运维·服务器
运维小欣17 小时前
Agentic AI 与 Agentic Ops 驱动,智能运维迈向新高度
运维·人工智能