linux批量追加内容,利用sed的追加功能批量在文件中追加内容
应用场景:
最近由于开发同事需求,需要在各个区服的游戏配置文件中追加一个BI相关的redis配置信息。
如在app.conf.php中有如下字段
'redis_list' => array(
'normal' => array(
'host' => '192.168.5.7',
'port' => 6382,
'db' => 1
),
现在需要在redis_list数组内增加一个bi_redis的配置,如下
'redis_list' => array(
'bi_redis' => array(
'host' => '192.168.5.23',
'port' => 6403,
'db' => 1
),
'normal' => array(
'host' => '192.168.5.7',
'port' => 6382,
'db' => 2
),
),
线上大概有100个区服左右,也就是说需要在100个配置文件中去添加红色那段内容。全部手动添加肯定不行的,我首先想到的就是利用sed的 -i 参数更改文件,然后是利用sed的a参数追加内容,再结合ssh进行批量修改。
1.查看添加内容,但是不真正更改文件内容
sed -n "/redis_list/a\ 'bi_redis' => array( \n\t'host' => '192.168.5.23',\n\t 'port' => 6403,\n\t'db' => 1\n\t)," app.conf.php
2.更改文件内容,添加内容
sed -i "/redis_list/a\ 'bi_redis' => array( \n\t'host' => '192.168.5.23',\n\t 'port' => 6403,\n\t'db' => 1\n\t)," app.conf.php
3.结合ssh更改其他主机上的app.conf.php
相关脚本:
ssh $user@$host "sed -i /redis_list/a\"'bi_redis' => array( \n\t 'host' => '192.168.5.23',\n\t 'port' => 6403,\n\t 'db' => 1\n\t),\" $rootdir/config/app.conf.php"
4.将/data/zhanguo_app/目录下所有的app.conf.php文件中添加如上内容并检查语法
find /data/zhanguo_app/ -name app.conf.php -exec sed -i "/redis_list/a\ 'bi_redis' => array( \n\t'host' => '127.0.0.1',\n\t 'port' => 6380,\n\t'db' => 1\n\t)," {} \; -exec php -l {} \;
经验分享一下:
像这种需要批量修改文件的案例,首先要考虑的是能够通过脚本或工具进行修改,能不手动修改就不要手动修改。然后根据实际应用场景,想想思路,比如这里需要批量对app.conf.php文件添加内容,首先想到利用sed的-i 参数进行修改,然后通过sed的a参数进行追加内容。需要对多台服务器进行修改可以通过ssh或其他工具执行。这里sed结合使用shell变量和ssh,遇到的最大的问题就是单引号(')和双引号(")的正确处理,要不然没法达到需求。
linux批量追加内容,利用sed的追加功能批量在文件中追加内容相关推荐
- linux下sed正则表达式匹配批量替换文件中的内容
sed命令介绍 sed是一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为『模式空间』(pattern space) ...
- linux中替换文件中的内容,linux下批量替换文件中的内容linux操作系统 -电脑资料...
对于单个文件,使用sed命令很容易做到, grep命令可以查找单个文件或文件夹下文件中的内容,使用参数"r"或"-R"可以递归查找指定文件夹下的所有文件:参数& ...
- shell 批量修改多个文件中的内容
文章目录 前言 场景 ==备注== 最新脚本 操作如下 思路: 第一个版本: 第二版本: 参考文献 小结 前言 现在会议很多都是双盲评,然而又需要上传材料/实验结果,这时候需要把材料中和自己名字相关的 ...
- Java 向文件中追加数据
java向文件中追加数据内容. 使用filewrite()方法向文件中追加数据 完整代码 import java.io.*;public class Main {public static void ...
- Linux C语言实现清除文件中的内容
有时候我们的程序把一个文件中的内容清空,然后重新写,比如我最近写的一个性能检测小工具,我需要把检测到的内容写入到一个日志文件,然后将这些日志发送出去,然后我再把新的日志写进来,这时候就遇到一个问题,如 ...
- linux创建和编辑文件,linux基础-第九单元 利用vi编辑器创建和编辑正文文件
vi编辑器简介 什么是vi vi编辑器的操作模式 vi编辑器的3种基本模式 在vi编辑器中光标的移动 移动光标位置的键与光标移动间的关系 进入插入模式 从命令行模式进入插入模式的命令 在命令行模式下删 ...
- python 追加写文件_如何往文件中追加文本
在用python从网站中爬取内容并保存到本地的txt文件中时,发现每次写入都是把txt文件中原来存在的内容覆盖掉了,那么如何才能在原来的基础上继续往里面添加内容呢? 1.原来的打开文件的方式是:fil ...
- linux命令---查找文件中的内容
linux命令---查找文件中的内容 [yang@localhost ~]$ cat 1.txt |egrep '123456789|second'-------匹配123456789或者second ...
- [转载] 【Python】向json文件中追加新的对象
参考链接: python json 13: 解析json文件中的多个json对象 [Python]向json文件中追加新的对象 def get_json(path, write_path): file ...
- 将XML文件中的内容批量修改
批量修改VOC数据集中xml标签文件的标签名称 第一版:每次都只单一xml文件中的内容进行修改,较为麻烦 import os import xml.etree.ElementTree as ET#程序 ...
最新文章
- bzoj异或之[查询异或和的第k小]
- usb传输标准和接口标准
- python3 ftplib_ftplib — FTP protocol client
- freeradius 3.0 mysql_secfree
- HTML简单注册页面
- Android 将整形颜色值转换成String类型
- Django登录界面
- pytorch-数据增强的trick
- AngularJS指令范围中的#39;@#39;和#39;=#39;有什么区别?
- matlab std函数_MATLAB金融工具箱:11:根据基准优化投资组合
- android英文用的是什么字体
- android8.1录屏,超级录屏安卓版-超级录屏appv1.1.8 - 起点软件园
- 你真的了解串口 (Serial)吗?
- 实现一个简单的Java类:长方形与梯形的面积计算
- 移动端测试=== 两个概念 内存泄漏 和 内存溢出 【转】
- 商用三维虚拟数字人如何制作
- [RK3588-Android12] Uboot-Logo引起的 HDMI第一次开机无声音问题
- Vxworks7运行在树莓派 3B/3B+
- 使用DIV、CSS技术设计的个人博客网页(web期末考试)
- CSS3发光字体几种效果