【Linux】基于sed正则指令修改application.properties属性值

文章目录

    • 背景
    • sed介绍
    • 演示
    • 结果


背景

服务器上搭建了SpringCloud微服务,每个服务中都有application.properties文件,在部署过程中需要修改每个微服务的redis.ip和redis.port。如果手动去修改会很麻烦,所以下面写了一个shell脚本(基于sed 扩展正则表达式)

本案例仅以修改单个application.properties为例,读者后续可以在脚本加上读取各个服务中的application.properties 文件地址,然后批量修改即可。

sed介绍

sed、grep、awk是Linux的文本三剑客,具有强大的功能。sed 全名为 Steam Editor,是一种流式编辑器,它支持正则表达式和扩展正则表达式。
sed指令读取file.txt文件后,按行读取,并将内容存入模式空间(缓存),再输出到终端界面上。

在这里插入图片描述

演示

为了演示,application.properties放了redis的两个参数
在这里插入图片描述

sed -i  " s/匹配的内容/修改内容/g " 文本

sed -i 参数,i是直接编辑原本的文件,匹配模式匹配到指定文件

如果只是修改简单的字符串,不涉及到.*, \等特殊字符,例如使用sed指令修改上面的 redis.port端口,可以直接执行:

[fy36@localhost app]$ sed -E 's/^redis.port=.*/redis.port=1234/g' application.properties
redis.ip=198.14.3.12
redis.port=1234

解析:上面的代码中

  • ^redis.port=.* 其中的^redis.port表示开头必须是redis.port
  • .表示,匹配除了换行符之外的任意字符
  • *表示前面匹配字符可以出现0次或多次
  • 第二个/表示要被替换的字符,也就是将redis.port改为1234
  • /g 代表更改模式,g代表global,全局修改。所有匹配到的模式都将被替换。

注意:上面的指令执行后,并没有更改application.properties文件内容,它只是将修改后的预览效果呈现在了屏幕上。除非使用"-i"选项才会直接修改文件。

直接修改application.properties :

sed -i 's/^redis.port=.*/redis.port=1234/g' 

现在,将上述方法封装成函数

#! /bin/bash
function redisConfig(){
# 配置reids 的ip和端口
REDIS_IP=$1
REDIS_PORT=$2
# input the variable 's value into the file "abc.txt" 下面的指令会将变量值写入到 temp.txt,如果temp.txt不存在就会自动创建
echo "$REDIS_IP" >temp.txt
#"all the '\' are used to transform the character '.'",也就是使用反斜杠\字符,将字符中的`.` 转义成 '.'本意,而不是被sed指令解析为正则表达式。
sed -i 's/\./\\./g' temp.txt
# 读取文件中ip,将值写入到变量value.
REDIS_IP=$(cat < temp.txt)
echo '删除临时文件temp.txt'
# 删除当前目录下生成的临时文件temp
rm ./temp.txt
# 关于变量,需要使用 单引号''包含变量,否则将被识别为字符串
sed -i 's/^redis.ip=.*/redis.ip='$REDIS_IP'/g' application.properties
sed -i 's/^redis.port=.*/redis.port='$REDIS_PORT'/g' application.properties
}
# 调用上述方法,修改
redisConfig 182.141.11.143 '1124'
~                        
  • 方法中将用户传入的变量ip和port存入到temp,是因为后面的 sed -i 指令末尾,需要指定文件名,而无法用变量值去替换。所以将变量存入到了文件中。
  • 还有一点需要注意的是,值是通过变量传入的,如果写成"$REDIS_IP",它只会被识别成普通字符串.

结果

[fy36@localhost app]$ sh setproperties.sh 
删除临时文件temp.txt
[fy36@localhost app]$ cat application.properties
redis.ip=182.141.11.143
redis.port=1124
[fy36@localhost app]$ 

在实际的application.properties中,配置庞大而复杂,如果手动去找指定配置参数并修改会非常麻烦。读者可以根据上述的方法步骤,修改成自己想要的结果。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea的快捷键

1.调整字体的大小 文件夹的循序:setting-Editor-Font 界面: 2.删除当前行 文件夹的循序:setting-Keymap-DeleteLine 界面: 3.导入该行需要的类 文件夹的循序:setting-Editor-General-Auto import 界面: 4.格式化代码 文件夹的循序:setting-keymap-Reformat 界面: 5.快速…

大模型微调方法:冻结方法 Freeze、P-Tuning 系列、LoRA、QLoRA

大模型微调方法 冻结方法 FreezeP-Tuning 系列Prefix-TuningPrompt TuningP-Tuning v1P-Tuning v2 LoRAQLoRA 冻结方法 Freeze 方法意思是&#xff0c;只用少部分参数训练&#xff0c;把模型的大部分参数冻结。 只要设置微调层的参数&#xff1a; # 遍历模型的所有参数和名称…

程序员的养生之道:延寿健康的十大秘诀(下)

程序员的养生之道&#xff1a;延寿健康的十大秘诀&#xff08;上&#xff09;-CSDN博客 目录 6. 心理调节&#xff0c;减轻压力 6.1 程序员常见的心理问题 6.2 压力管理的重要性 6.3 放松技巧与应对策略 6.4 积极心态与心理健康 7. 正确坐姿&#xff0c;保护颈椎腰椎 …

VLAN协议与单臂路由

文章目录 VLAN协议与单臂路由一、VLAN的概念及优势1、分割广播域2、VLAN的优势3、VLAN数据帧 二、VLAN的种类1、静态VLAN2、动态VLAN3、VLAN划分方式 三、静态VLAN的配置1、VLAN的范围2、静态VLAN的配置2.1 配置静态VLAN的步骤2.2 vlan三种端口类型举例&#xff1a;配置静态VLA…

VR全景直播来临,沉浸式代入吸引百万人目光

如今&#xff0c;VR技术正在不断改变着直播行业的面貌&#xff0c;为观众提供沉浸式的观看体验。在5G技术的快速发展背景下&#xff0c;VR全景直播作为5G应用的场景&#xff0c;被广泛应用在体育赛事、新闻会议、演唱会、教育医疗等场景&#xff0c;通过VR技术进行全景直播&…

c语言结构体调用格式与对齐

1.声明形式&#xff1a; struct 结构体名字 { 结构体成员 }结构体变量名&#xff1b; 2.赋值方法 3.结构体对齐&#xff1a; 1.起始偏移量&#xff1a;默认结构体第一个元素对齐0起始偏移量&#xff0c;第一个元素占一个字节&#xff0c;此时偏移量为1. 2.标准数&#xff…

基于stm32 FP-AUD-SMARTMIC1 音频系统开发

基于stm32 FP-AUD-SMARTMIC1 音频系统开发 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,+群赠送语音信号处理降噪算法,蓝牙耳机音频,DSP音频项目核心开发资料, FP-AUD-SMARTMIC1 是一个用于 STM32F4Discovery …

《使用ThinkPHP6开发项目》 - 创建控制器

《使用ThinkPHP6开发项目》 - 安装ThinkPHP框架-CSDN博客 《使用ThinkPHP6开发项目》 - 设置项目环境变量-CSDN博客 《使用ThinkPHP6开发项目》 - 项目使用多应用开发-CSDN博客 《使用ThinkPHP6开发项目》 - 创建应用-CSDN博客 使用ThinkPHP6创建控制器&#xff0c;开始项…

css 纯样式实现绘出进度条

效果&#xff1a; css代码&#xff1a; .bar{height: 14px;width: 100%;font-size: 10px;margin-top: 5px;background-color: #f5f5f5;}.bar::before{display: block;counter-reset: progress var(--precent); content: ;width: calc(1% * var(--precent));color: #fff;height:…

【C++进阶篇】二叉搜索数

目录 前言&#xff1a; 以后我们要学map&#xff0c;set&#xff0c;AVL&#xff0c;红黑数所以必须要有二叉搜索数做铺垫 1、二叉搜索树概念 2.二叉搜索树操作 1.二叉搜索树的查找 a、从根开始比较&#xff0c;查找&#xff0c;比根大则往右边走查找&#xff0c;比根小则…

SpringBoot 实现动态切换数据源

最近在做业务需求时&#xff0c;需要从不同的数据库中获取数据然后写入到当前数据库中&#xff0c;因此涉及到切换数据源问题。本来想着使用Mybatis-plus中提供的动态数据源SpringBoot的starter&#xff1a;dynamic-datasource-spring-boot-starter来实现。 结果引入后发现由于…

IO零拷贝

在介绍零拷贝之前我们先看看传统的 Java 网络 IO 编程是怎样的。 下面代码展示了一个典型的 Java 网络程序。 File file new File("index.jsp");RandomAccessFile rdf new RandomAccessFile(file, "rw");byte[] arr new byte[(int) file.length()];rdf…

Tcl语言语法精炼总结

一、置换符号 1.变量置换 $ TCl解释器会将认为$后面为变量名&#xff0c;将变量名置换成它的值 2.命令置换 [] []内是一个独立的TCL语句 3.反斜杠置换 \ 换行符、空格、[、$等被TCL解释器当作特殊符号处理。加上反斜杠后变成普通字符 \t TAB \n 换行符 4.双引号 “” “…

鸿蒙开发之页面与组件生命周期

一、页面间的跳转 创建文件的时候记得选择创建page文件&#xff0c;这样就可以在main->resources->profile->main_pages.json中自动形成页面对应的路由了。如果创建的时候你选择了ArkTS文件&#xff0c;那么需要手动修改main_pages.json文件中&#xff0c;添加相应的…

关于大模型ChatGLM3-6B在CPU下运行

最近在调研市场上语言大模型&#xff0c;为公司的产品上虚拟人的推出做准备。各厂提供语言模型都很丰富&#xff0c;使用上也很方便&#xff0c;有API接口可以调用。但唯一的不足&#xff0c;对于提供给百万用户使用的产品&#xff0c;相比价格都比较贵。所以对ChatGLM3-6B的使…

基于pandoraNext使用chatgpt4

1.登陆GitHub 获取pandoraNext项目GitHub - pandora-next/deploy: Pandora Cloud Pandora Server Shared Chat BackendAPI Proxy Chat2API Signup Free PandoraNext. New GPTs(Gizmo) UI, All in one! 在release中选择相应版本操作系统的安装包进行下载 2.获取license_…

最新鸿蒙HarmonyOS4.0开发登陆的界面1

下载deveco-studio 说明一下&#xff0c;本人只是学习中&#xff0c;现在只是拿着vue及uniapp的经验在一点一点的折腾&#xff0c;不过现在看来&#xff0c;鸿蒙入门并不是很难。也许是自己没有深入下去。 https://developer.harmonyos.com/cn/develop/deveco-studio#download…

docker使用详解

介绍 Docker是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流行的Linux或Windows操作系统的机器上&#xff0c;也可以实现虚拟化。 Docker基于轻量级虚拟化技术&#xff0c;整个项目基于Go语言开…

Mybatis源码解析6:Mapper执行流程2-三个Handler

Mybatis源码解析6&#xff1a;Mapper执行流程2-三个Handler 1.项目结构2. 源码分析2.1 StatementHandler分析 BaseStatementHandler#prepare2.2 ParameterHandler分析 DefaultParameterHandler#setParameters2.3 ResultSetHandler分析 1.项目结构 2. 源码分析 之前已经对 Sim…

Scrapy爬虫学习

Scrapy爬虫学习一 1 scrapy框架1.1 scrapy 是什么1.2 安装scrapy 2 scrapy的使用2.1创建scrapy项目2.2 创建爬虫文件2.3爬虫文件的介绍2.4 运行爬虫文件 3 爬取当当网前十页数据3.1 dang.py&#xff1a;爬虫的主文件3.2 items.py 定义数据结构3.3 pipelines.py 管道3.4 执行命令…