sed正则表达式元字符 和使用示例 sed变量替换示例

news/2024/12/27 12:21:21/

在使用 sed进行查找替换是我们也是可以使用正则表达式>正则表达式的, 不过sed默认只能使用基础正则表达式>正则表达式, ? 和 <> 和()分组等这些扩展正则表达式>正则表达式在sed里面默认是不能用的。

sed支持的正则元字符如下:

元字符    作用
*    前一个字符匹配0次或任意多次.
.    匹配除了换行符外任意一个字符.
^    匹配行首. 例如:^hello 会匹配以 hello 开头的行.
$    匹配行尾. 例如:hello& 会匹配以 hello 结尾的行.
[]    匹配中括号中指定的任意一个字符,制匹配一个字符. 例如:[aoeiu] 匹配任意一个元音字母,[0-9] 匹配任意一位数字,[a-z][0-9]匹配小写字和一位数字构成的两位字符.
[^]    匹配除中括号的字符以外的任意一个字符. 例如:[^0-9] 匹配任意一位非数字字符,[^a-z] 表示任意一位非小写字母.
\    转义符. 用于取消特殊符号的含义.
\{n\}    表示其前面的字符恰好出现 n 次. 例如:[0-9]\{4\} 匹配 4 位数字,[1][3-8][0-9]\{9\} 匹配手机号码.
\{n,\}    表示其前面的字符出现不小于 n 次. 例如:[0-9]\{2,\}表示两位及以上的数字.
\{n,m\}    表示其前面的字符至少出现 n 次,最多出现 m 次. 例如:[a-z]\{6,8\} 匹配6到8位的小写字母.

sed正则匹配使用示例

  •  查找替换字符串整行

使用sed将文件 Dockerfile中以ENV PHP_VERSION 开头的内容替换为 ENV PHP_VERSION ${PHP_VERSION}

替换 ENV PHP_SHA256="xxxxx" 为自定义的变量PHP_SHA256

下面的  ^表示匹配字符串的开始,  $ 表示匹配字符串行的结尾。

# 定义一个变量
PHP_VERSION=8.4.2# 使用sed将文件 Dockerfile中以ENV PHP_VERSION 开头的内容替换为 ENV PHP_VERSION ${PHP_VERSION}
sed -i 's/^ENV PHP_VERSION */ENV PHP_VERSION '${PHP_VERSION}'/g' DockerfilePHP_SHA256="xxxxxxxxx"sed -i 's/ENV PHP_SHA256=*$/ENV PHP_SHA256="'${PHP_SHA256}'"/g' Dockerfile
  • 查找替换字符

替换文件Dockerfile中的版本字符串, 下面的 [0-9.]* 可以匹配类似  php-8.4.2. 的内容, 这里和在其他地方使用正则不太一样,这里的 * 表示前面的 0-9. 多次或者1次,注意这个地方不能使用分组,也不能使用 + 

sed -i -e 's/distributions\/php-[0-9.]*/distributions\/php-'${PHP_VERSION}'./g' Dockerfile

Dockerfile内容示例

ENV PHP_VERSION 8.4.2
ENV PHP_URL="https://www.php.net/distributions/php-8.4.2.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.2.tar.xz.asc"
ENV PHP_SHA256="92636453210f7f2174d6ee6df17a5811368f556a6c2c2cbcf019321e36456e01"

http://www.ppmy.cn/news/1558520.html

相关文章

Blender高效优化工作流程快捷小功能插件 Haggis Tools V1.1.5

Haggis Tools V1.1.5 是一款专为Blender设计的插件&#xff0c;旨在优化工作流程、减少单调和重复的任务&#xff0c;从而为艺术家节省时间。这款插件适用于多个版本的Blender&#xff0c;能够有效提升工作效率。 Blender插件特点&#xff1a; 工作流程优化&#xff1a;专门设…

天池工业蒸汽量预测教程

一、引言 在现代工业生产中&#xff0c;蒸汽作为一种重要的能源载体&#xff0c;广泛应用于化工、制药、纺织、食品加工等众多领域。准确预测工业蒸汽量对于优化生产流程、提高能源利用效率、降低成本以及保障生产的稳定性具有至关重要的意义。天池举办的工业蒸汽量预测赛事&a…

穿山甲等广告联盟依据哪些维度给APP、小程序结算广告变现收益

媒体在开展广告变现商业化时&#xff0c;最关心的是变现收益问题&#xff0c;所运营的不同体量的APP、小程序能产生多少广告变现收益。#广告联盟# 广告变现的价格、收益不是一成不变的&#xff0c;广告转化是影响广告收益的重要因素之一。广告平台针对整个变现链路上的各环节&…

WebSocket | 背景 概念 原理 使用 优缺点及适用场景

1 背景 在 WebSocket 出现之前&#xff0c;为了实现推送技术&#xff0c;所用的技术都是轮询&#xff0c;轮询是指浏览器每隔一段时间向服务器发出 HTTP 请求&#xff0c;服务器再返回最新的数据给客户端 常见的轮询方式分为轮询与长轮询&#xff0c;它们的区别如下图所示&…

餐厅下单助手系统(Java+MySQL)

项目概览 餐厅下单助手系统是一个采用 Java 实现的小型食品订单管理系统&#xff0c;并且以 SwingUI 打造视觉界面&#xff0c;数据库提供。本系统分为商家和顾客两类体验&#xff0c;有效地给予简洁性能。可用做课程设计&#xff0c;参考学习。 技术栈 Java: 核心开发语言S…

【Vue3+ts入门小试牛刀】

Vue 3是一个流行的JavaScript框架&#xff0c;它提供了创建交互式用户界面的工具。Vite是一个现代化的构建工具&#xff0c;用于快速构建Vue应用。TypeScript是一种类型安全的JavaScript的超集&#xff0c;它可以帮助我们在开发过程中减少错误。 下面是一个使用Vue 3、Vite和T…

【西安电子科技大学考研】25官方复试专业课参考书目汇总

初试已经顺利考完啦、成绩已经公布&#xff0c;现在已经有很多同学来问学长学姐&#xff0c;复试参考书有哪些&#xff0c;复试应该做好哪些准备。故此学长学姐给大家整理好了西安电子科技大学各个学院的复试参考书目录&#xff0c;有需要的同学可以参考一下哈。大家可以结合本…

深入浅出 MyBatis | CRUD 操作、配置解析

3、CRUD 3.1 namespace namespace 中的包名要和 Dao/Mapper 接口的包名一致&#xff01; 比如将 UserDao 改名为 UserMapper 运行发现抱错&#xff0c;这是因为 UserMapper.xml 中没有同步更改 namespace 成功运行 给出 UserMapper 中的所有接口&#xff0c;接下来一一对…