sed 字符替换时目标内容包含 特殊字符怎么处理

背景

想写一个自动修改配置的脚本,输入一个 mysql jdbc 的连接路径,然后替换目标配置中的模版内容,明明很简单的一个内容,结果卡在了 & 这个符号上。

& 到底是什么特殊字符呢?结论:它代表要替换的旧的字符串。

& 代表什么

在 sed 中 ,& 有特殊含义,但是它不是正则表达式的特殊字符。
在这里插入图片描述

脚本接收并替换流程

编写一个脚本 mysql_config.sh ,用来对一个数据库配置文件中的 jdbcUrl 部分进行替换,第一个参数是 URL ,替换过程如下:

dbUrl=$2
pathEscaped=$(echo $dbUrl | sed -e 's/\//\\\//g')
pathEscaped=$(echo $pathEscaped | sed -e 's/\&/\\&/g')

originalUrl='jdbc:mysql://IP:port/dbname'
oldEscaped=$(echo $originalUrl | sed -e 's/\//\\\//g')
echo $oldEscaped

sed -i -c "s/$oldEscaped/$pathEscaped/" /myapp/conf/jdbc.properties

脚本注意事项,路径中包含 / 特殊字符,必须转义为 \/ ,第一个转换语句:

sed -e 's/\//\\\//g'
sed -e 's/\&/\\&/g')

old 字符串为 /,特殊字符转义为 \/
new 字符串部分是 \/,目标字符串写出转义之后的值就是 \\\/ ,这样才能得到真正要替换的新路径。
& 字符替换为转义后的普通符号 \& ,最终放到目标串中应该是 \\\&

sed -i -c "s/old/new/" 命令执行的时候,如果包含特殊字符,必须都逐个转义,才能得到正确的结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/549043.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GmSSL-3.1.1编译

1.源码下载: 下载地址:https://github.com/guanzhi/GmSSL/releases选择对应版本下载。 ​ 2.选择要下载的源码包: ​ 2.编译: 2.1 windows编译:打开vs命令行,选择想要编译的版本,x86或x64…

大数据、数据架构、推荐冷启动...小红书的 AI 数据新方案都在这个会

伴随着行业数据持续积累,人工智能正加速渗透各类场景,大数据、数据架构和推荐系统等领域,依然是各行各业目之所聚。4 月 19 至 20 日,「DataFunCon 2024 上海站」来袭!大会以“数聚垂域,智领未来”为主题…

数据结构——栈(C++实现)

数据结构——栈 什么是栈栈的实现顺序栈的实现链栈的实现 今天我们来看一个新的数据结构——栈。 什么是栈 栈是一种基础且重要的数据结构,它在计算机科学和编程中扮演着核心角色。栈的名称源于现实生活中的概念,如一叠书或一摞盘子,新添加…

AI概念普及-LangChain

文章目录 概念产品架构核心特性核心组件使用场景其他资源开发支持结论Langchain详细介绍LangChain的具体实现原理LangChain如何与其他大型语言模型(LLM)集成,有哪些具体的接口或协议?LangChain的性能表现和优化策略有哪些&#xf…

由于找不到msvcr120.dll,无法继续执行代码的详细处理方法,教你快修复msvcr120.dll

DLL文件,全称动态链接库文件,在计算机系统中具有重要作用。其中,msvcr120.dll是一个常见的DLL文件,它关联了许多程序和应用的正常运行。本指南将深入解释 msvcr120.dll文件的功能,并阐述如果缺少该文件会引起什么样的问…

Banana Pi开源社区推出BPI-5202开发板,国产龙芯Loongson 2K1000LA

BPI-5202开发板,国产龙芯Loongson 2K1000LA BPI-5202作为单纯的嵌入式通用控制器软硬件开发平台,采用龙芯2K1000LA芯片设计,基本配置中有2个独立MAC以太网端口、2个RS485端口1个RS232端口2个CAN2.0端口,配置灵活,广泛适…

# ABAP SQL 字符串处理-CONCATCAST

经常我都要在ABAP的sql语句中对字符串进行处理,现在就总结一下可以用到的方法 文章目录 字符串处理拼接字段运行结果 填充字符串运行结果 截取字符串 SUBSTRING运行结果 CAST转换类型程序运行结果 CAST 转换成 DATS类型(日期) 字符串处理 在…

客户案例:金蝶云星空对接纷享销客

正文:某国内食品贸易类客户,目前内部使用了多套系统。金蝶云星空ERP,纷享销客,钉钉,旺店通等系统。金蝶云星空作企业的业务财务一体化管理,与专业CRM平台纷享销客的战略合作,在产品管理、客户关…

Java智慧工地可视化管理云平台源码 施工进度、施工质量

目录 1、基础数据管理 2、考勤管理 3、安全隐患管理 4、视频监控 5、塔吊监控 6、升降机监控 7、管理分析报表 8、移动端数据推送 9、数据接收管理 慧工地全套源码(PC端,移动端,大屏端) 智慧工地系统利用APP监管施工现场…

SQL注入利用学习 - 延时盲注

延时盲注原理 无法利用页面显示结果判断SQL注入是否执行成功,此时可以利用 SQL语句执行的延时 判断SQL是 否执行成功。 只要可以执行延时,那么就可以利用该注入技术。 sql时间类型的盲注本质是利用插入的SQL语句执行造成时间延迟,插入的SQ…

软件测试中完整的Web请求流程

在软件开发的过程中,测试是一个至关重要的环节。而在现代互联网应用中,Web请求是很常见的一个测试需求。本文将介绍Web请求的完整测试流程,帮助读者更好地理解软件测试的关键步骤。 一、测试准备阶段 在进行Web请求测试之前,测试…

IK分词器安装、配置、分词自定义、Rest使用、SpringBoot使用

文章目录 1. 概述2. 安装配置3. 自定义拆分文本4. 调用4.1 拆分规则4.2 Rest 调用4.3 SpringBoot 调用 1. 概述 IK分词器是ElasticSearch(es)的一个最最最有名插件,能够把一段中文或者别的语句划分成一个个的关键字,进而在搜索的时候对数据库中或者索引库…

姓名升序,若相同则按照年龄升序——集合的几种排序方式(有问必答版)

见者有缘,缘来好运。诚邀各位围观我的博客【CS_GUIDER】: 我的云服务器到期了,所以这里放两个部署在码云和 GitHub 的链接: https://wlei224.gitee.io (Gitee托管,速度极快) https://wl2o2o.git…

go work模块与go mod包管理是的注意事项

如下图所示目录结构 cmd中是服务的包,显然auth,dbtables,pkg都是为cmd服务的。 首先需要需要将auth,dbtables,pkg定义到go.work中,如下: 在这样在各个单独的go mod管理的模块就可以互相调用了。一般情况下这些都是IDE自动进行的,…

Go微服务: 服务限流原理, 负载均衡与API网关

微服务里面的限流 (uber/limit)概述 go 微服务保稳三剑客: 熔断,限流,负载均衡限流的作用 限制流量,在服务端生效 注意:熔断是客户端生效 保护后端服务 餐厅吃饭排队的问题,提供凳子,让等候,这就…

Leetcode 221. 最大正方形

心路历程: 这道题是一个动态规划题,但是其实递推关系很难想到,如下图所示: MDP建模: 状态:以i,j为右下角的正方形 动作候选集:这道题的动作候选集其实是是否选择其左上角邻接的三个位置&#x…

安达发|体育产业体育装备生产车间APS排产软件

在体育产业中,体育装备的生产是保障运动员成绩和安全的关键一环。随着市场需求的多样化和个性化,传统的生产排程方法已经难以满足现代体育装备生产的复杂性和灵活性。因此,应用高级排产软件(APS)进行生产计划和控制成为…

Docker仅需3步搭建免费私有化的AI搜索引擎-FreeAskInternet

简介 FreeAskInternet 是一个完全免费、私有且本地运行的搜索引擎,并使用 LLM 生成答案,无需 GPU。用户可以提出问题,系统会进行多引擎搜索,并将搜索结果合并到ChatGPT3.5 LLM中,并根据搜索结果生成答案。 什么是 Fr…

2024年A特种设备相关管理(电梯)证考试题库及A特种设备相关管理(电梯)试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年A特种设备相关管理(电梯)证考试题库及A特种设备相关管理(电梯)试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲…

深入理解神经网络学习率(定义、影响因素、常见调参方法、关键代码实现)

目录 什么是学习率? 有哪些影响因素? 常用调整方法? 博主介绍:✌专注于前后端、机器学习、人工智能应用领域开发的优质创作者、秉着互联网精神开源贡献精神,答疑解惑、坚持优质作品共享。本人是掘金/腾讯云/阿里云等平…