SHELL脚本学习(十一)正则表达式

一、锚点字符
1.1 锚点行首

脱字符(^)指出行首位置

shell 复制代码
$ cat < file1
test line1
test line2
test line3
line4 test

#打印所有包括文本 test的行
$ sed -n '/test/p' file1
test line1
test line2
test line3
line4 test

#打印所有以test为首的行
$ sed -n '/^test/p' file1
test line1
test line2
test line3
1.2 锚点行尾

美元符号($)指出行尾位置

shell 复制代码
$ cat < file1
test line1
test line2
test line3
line4 test

#打印所有以test结尾的行
$ sed -n '/test$/p' file1
line4 test
二、点字符

点字符(.)能够匹配除换行符之外的所有字符。

shell 复制代码
$ cat<file
cat
hat
 at
a t

$ sed -n '/.at/p' file
cat
hat
 at

空格也是一个字符

三、字符组

方括号 [] 用于定义字符组,字符组内的任一字符匹配,即为匹配。

shell 复制代码
$ cat<file
cat
hat
 at
a t
ubuntu@VM-8-14-ubuntu:~$ sed -n '/[ch]at/p' file
cat
hat
四、排除型字符组

在字符组前加上脱字符即为排除型字符组。排除型字符组的语义正好和字符组相反,不匹配字符组内的任一字符。

shell 复制代码
$ cat<file
cat
hat
 at
a t

$ sed -n '/[^ch]at/p' file
 at
五、区间

可以单连字符(-)表示区间。即 起始字符-结束字符。

shell 复制代码
$ sed -n '/[A-Z][Aa][Tt]/p' file
HAT
CAT

$ sed -n '/[a-z][Aa][Tt]/p' file
cat
hat

A-Z 表示 当前字符 要匹配单个 大写字母

a-z 表示 当前字符 要匹配单个 小写字母

六、特殊字符

除了定义自己的字符组,BRE(basic regular expression 基础正则表达式)还提供了一些特殊字符组。
BRE特殊字符组

字符组 描述
[[ :alpha:]] 匹配任意字符字符,a-z A-Z
[[:alnum:]] 匹配任意字母数字,z-a A-Z 0-9
[[:blank:]] 匹配空格或制表符
[[:digit:]] 匹配0-9中的数字
[[:lower:]] 匹配小写字母 a-z
[[:print:]] 匹配任意可打印字符
[[:punct:]] 匹配标点符号
[[:space:]] 匹配任意空白符。空格、制表符、换行符、回车等。。。
[[:upper:]] 匹配任意大写字母 A-Z

特殊字符组的使用方式和普通字符组一样。

shell 复制代码
$ cat <file
cat
hat
 at
a t
HAT
CAT

$ sed -n '/[[:upper:]][Aa][Tt]/p' file
HAT
CAT

$ sed -n '/[[:lower:]][Aa][Tt]/p' file
cat
hat
七、星号 *

在字符后面加 星号*,表示该字符必须匹配0次或多次。

shell 复制代码
$ echo "hello" | sed -n '/hel*o/p'
hello
$ echo "heo" | sed -n '/hel*o/p'
heo
$ echo "heto" | sed -n '/hel*o/p'
$ 
相关推荐
China_Yanhy6 小时前
入职 Web3 运维日记 · 第 8 日:黑暗森林 —— 对抗 MEV 机器人的“三明治攻击”
运维·机器人·web3
艾莉丝努力练剑6 小时前
hixl vs NCCL:昇腾生态通信库的独特优势分析
运维·c++·人工智能·cann
酉鬼女又兒6 小时前
每天一个Linux命令_printf
linux·运维·服务器
翼龙云_cloud6 小时前
国际云代理商:2026年国际云注册风控升级实战指南 8 大平台无卡解决方案对比
服务器·阿里云·云计算
●VON6 小时前
CANN推理引擎:从云端到边缘的极致加速与部署实战
学习·react native
虾说羊6 小时前
docker容器化部署项目流程
运维·docker·容器
Trouvaille ~6 小时前
TCP Socket编程实战(三):线程池优化与TCP编程最佳实践
linux·运维·服务器·网络·c++·网络协议·tcp/ip
笔画人生6 小时前
深度解析 CANN 项目:以 `ops-transformer` 为例探索高性能 AI 算子库
学习·开源
大大大反派6 小时前
CANN 生态中的自动化部署引擎:深入 `mindx-sdk` 项目构建端到端 AI 应用
运维·人工智能·自动化
June`6 小时前
高并发网络框架:Reactor模式深度解析
linux·服务器·c++