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,}"
相关推荐
疯狂敲代码的老刘10 分钟前
JDK 1.6到25 全版本网盘合集 (Windows + Mac + Linux)
java·linux·windows·macos·jdk
爆米花byh14 分钟前
在RockyLinux9环境的Storm2.8.3单机版安装
linux·中间件·storm
纤纡.15 分钟前
Linux 下 MySQL 数据类型与约束:第三章核心表格归纳与实战应用
linux·mysql
陈桴浮海24 分钟前
【Linux&Ansible】学习笔记合集三
linux·运维·云原生·ansible
小Pawn爷25 分钟前
1.Docker基础
运维·docker·容器
chinesegf27 分钟前
清理docker残留镜像images
运维·docker·容器
江湖有缘31 分钟前
基于华为openEuler系统部署Gitblit服务器
运维·服务器·华为
yuanmenghao35 分钟前
Linux 性能实战 | 第 10 篇 CPU 缓存与内存访问延迟
linux·服务器·缓存·性能优化·自动驾驶·unix
EnglishJun41 分钟前
Linux系统编程(二)---学习Linux系统函数
linux·运维·学习
小Pawn爷1 小时前
2.Docker的存储
运维·docker·容器