应用场景:

最近由于开发同事需求,需要在各个区服的游戏配置文件中追加一个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的追加功能批量在文件中追加内容相关推荐

  1. linux下sed正则表达式匹配批量替换文件中的内容

    sed命令介绍 sed是一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为『模式空间』(pattern space) ...

  2. linux中替换文件中的内容,linux下批量替换文件中的内容linux操作系统 -电脑资料...

    对于单个文件,使用sed命令很容易做到, grep命令可以查找单个文件或文件夹下文件中的内容,使用参数"r"或"-R"可以递归查找指定文件夹下的所有文件:参数& ...

  3. shell 批量修改多个文件中的内容

    文章目录 前言 场景 ==备注== 最新脚本 操作如下 思路: 第一个版本: 第二版本: 参考文献 小结 前言 现在会议很多都是双盲评,然而又需要上传材料/实验结果,这时候需要把材料中和自己名字相关的 ...

  4. Java 向文件中追加数据

    java向文件中追加数据内容. 使用filewrite()方法向文件中追加数据 完整代码 import java.io.*;public class Main {public static void ...

  5. Linux C语言实现清除文件中的内容

    有时候我们的程序把一个文件中的内容清空,然后重新写,比如我最近写的一个性能检测小工具,我需要把检测到的内容写入到一个日志文件,然后将这些日志发送出去,然后我再把新的日志写进来,这时候就遇到一个问题,如 ...

  6. linux创建和编辑文件,linux基础-第九单元 利用vi编辑器创建和编辑正文文件

    vi编辑器简介 什么是vi vi编辑器的操作模式 vi编辑器的3种基本模式 在vi编辑器中光标的移动 移动光标位置的键与光标移动间的关系 进入插入模式 从命令行模式进入插入模式的命令 在命令行模式下删 ...

  7. python 追加写文件_如何往文件中追加文本

    在用python从网站中爬取内容并保存到本地的txt文件中时,发现每次写入都是把txt文件中原来存在的内容覆盖掉了,那么如何才能在原来的基础上继续往里面添加内容呢? 1.原来的打开文件的方式是:fil ...

  8. linux命令---查找文件中的内容

    linux命令---查找文件中的内容 [yang@localhost ~]$ cat 1.txt |egrep '123456789|second'-------匹配123456789或者second ...

  9. [转载] 【Python】向json文件中追加新的对象

    参考链接: python json 13: 解析json文件中的多个json对象 [Python]向json文件中追加新的对象 def get_json(path, write_path): file ...

  10. 将XML文件中的内容批量修改

    批量修改VOC数据集中xml标签文件的标签名称 第一版:每次都只单一xml文件中的内容进行修改,较为麻烦 import os import xml.etree.ElementTree as ET#程序 ...

最新文章

  1. bzoj异或之[查询异或和的第k小]
  2. usb传输标准和接口标准
  3. python3 ftplib_ftplib — FTP protocol client
  4. freeradius 3.0 mysql_secfree
  5. HTML简单注册页面
  6. Android 将整形颜色值转换成String类型
  7. Django登录界面
  8. pytorch-数据增强的trick
  9. AngularJS指令范围中的#39;@#39;和#39;=#39;有什么区别?
  10. matlab std函数_MATLAB金融工具箱:11:根据基准优化投资组合
  11. android英文用的是什么字体
  12. android8.1录屏,超级录屏安卓版-超级录屏appv1.1.8 - 起点软件园
  13. 你真的了解串口 (Serial)吗?
  14. 实现一个简单的Java类:长方形与梯形的面积计算
  15. 移动端测试=== 两个概念 内存泄漏 和 内存溢出 【转】
  16. 商用三维虚拟数字人如何制作
  17. [RK3588-Android12] Uboot-Logo引起的 HDMI第一次开机无声音问题
  18. Vxworks7运行在树莓派 3B/3B+
  19. 使用DIV、CSS技术设计的个人博客网页(web期末考试)
  20. CSS3发光字体几种效果

热门文章

  1. 青岛大学计算机分专业吗,青岛大学热门专业有哪些?附青岛大学最低分专业名单...
  2. SAP BDC的应用
  3. 蒙牛发言人香港发言措辞欠妥
  4. 循环队列front==rear
  5. K'ed by TNT team是什么意思?
  6. Jira BigPicture结合KanBan跟踪项目执行实践分享
  7. 初识ArrayList集合【小白学Java-学习笔记02】
  8. 2021/10/9正睿7测Day.6
  9. 阿里系产品Xposed Hook检测机制原理分析
  10. 第二十三天 小丁再战链表