今天遇到一个似乎很棘手的问题,要在文件的中间,插入几条配置

这里就以my.cnf这个文件为例

  1 [mysqld]
2 datadir=/var/lib/mysql
3 socket=/var/lib/mysql/mysql.sock
4 # Disabling symbolic-links is recommended to prevent assorted security risks
5 symbolic-links=0
6 # Settings user and group are ignored when systemd is used.
7 # If you need to run mysqld under a different user or group,
8 # customize your systemd unit file for mariadb according to the
9 # instructions in http://fedoraproject.org/wiki/Systemd
10
11 [mysqld_safe]
12 log-error=/var/log/mariadb/mariadb.log
13 pid-file=/var/run/mariadb/mariadb.pid
14
15 #
16 # include all files from the config directory
17 #
18 !includedir /etc/my.cnf.d

想要在第十行插入

init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

于是想到了sed命令,通过-i选项可以修改文件本身

命令如下:

sed -i "10i init_connect=\'SET collation_connection = utf8_unicode_ci\'" /etc/my.cnf
sed -i "11i init_connect=\'SET NAMES utf8\'" /etc/my.cnf
sed -i "12i character-set-server=utf8" /etc/my.cnf
sed -i "13i collation-server=utf8_unicode_ci" /etc/my.cnf
sed -i "14i skip-character-set-client-handshake" /etc/my.cnf

通过sed -i "行数+i+空格+想要插入的语句"  想要插入的文件

即可插入

本来想用cat <<EOF

EOF

但发现这个好像只能插入到文件的最后,无法在中间插入

如果插入的数据比较多的话,就很麻烦了,过阵子有时间再做下批量插入数据比较多的

-----------华丽丽的分割线-----------

如果想在文中插入数据的话,可以使用这个方法

想要插入的文件,内容如下:
# cat -n test.txt
1 id=1,name=zhang1
2 id=2,name=zhang2
3 id=3,name=zhang3
4 id=4,name=zhang4
5 id=5,name=zhang5
6 id=6,name=zhang6
7 id=7,name=zhang7
8 id=8,name=zhang8
9 id=9,name=zhang9
10 id=10,name=zhang10
11 id=11,name=zhang11
12 id=12,name=zhang12
13 id=13,name=zhang13
14 id=14,name=zhang14
15 id=15,name=zhang15
16 id=16,name=zhang16
17 id=17,name=zhang17
18 id=18,name=zhang18
19 id=19,name=zhang19
20 id=20,name=zhang20
21

可以使用命令

sed -i "10i test=1\ntest=2\ntest=3\ntest=4" test.txt   

插入后的文件内容为

# cat -n test.txt
1 id=1,name=zhang1
2 id=2,name=zhang2
3 id=3,name=zhang3
4 id=4,name=zhang4
5 id=5,name=zhang5
6 id=6,name=zhang6
7 id=7,name=zhang7
8 id=8,name=zhang8
9 id=9,name=zhang9
10 test=1
11 test=2
12 test=3
13 test=4
14 id=10,name=zhang10
15 id=11,name=zhang11
16 id=12,name=zhang12
17 id=13,name=zhang13
18 id=14,name=zhang14
19 id=15,name=zhang15
20 id=16,name=zhang16
21 id=17,name=zhang17
22 id=18,name=zhang18
23 id=19,name=zhang19
24 id=20,name=zhang20
25

如果想要插入的内容比较繁琐的话,记得使用正确使用正则来处理文字

【Linux】在文件的指定位置插入数据的更多相关文章

  1. 【转载】C#中使用List集合的Insert方法在指定位置插入数据

    在C#的List集合等数据类型变量中,我们可以使用List集合的Insert方法在指定的索引位置插入一个新数据,例如指定在List集合的第一个位置写入一个新数据或者在List集合的中间某个位置插入个新 ...

  2. php 数组指定位置插入数据单元

      PHP array_splice() 函数 array_splice(array,offset,length,array) 参数 描述 array 必需.规定数组. offset 必需.数值.如果 ...

  3. Java分享笔记:RandomAccessFile流 & 在文件指定位置插入内容

    RandomAccessFile流:随机存取文件流,该类定义了一个记录指针,通过移动指针可以访问文件的任意位置,且对文件既可以读也可以写.使用该类的write方法对文件写入时,实际上是一种覆盖效果,即 ...

  4. 【转载】C#使用InsertRange方法往ArrayList集合指定位置插入另一个集合

    在C#的编程开发中,ArrayList集合是一个常用的非泛型类集合,ArrayList集合可存储多种数据类型的对象.在实际的开发过程中,我们可以使用InsertRange方法在ArrayList集合指 ...

  5. 利用RandomAccessFile类在指定文件指定位置插入内容

    package File; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; ...

  6. Dream------Java--ant zip 对压缩文件进行指定位置的修改

    ant zip 对压缩文件进行指定位置的修改 实现功能: 对2中文件进行修改: 需求: 在XX文件中,从二进制流的200字节位置开始,往后的30位字节数量.插入一个值 由于涉及到公司内部,不方便写太多 ...

  7. Java 替换word文档文字,指定位置插入图片

    先说下 需要的依赖包 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ex ...

  8. 在Word指定位置插入富文本域值(html文本)

    遇到此问题,首先想到的就是各种百度.结果度娘了一会并没有发现有用的有效的解决方法,哎,看来还得靠自己啊. 首先整理了下手头上的资源,一是HtmlAgilityPack,专门解析Html文本用的:二是我 ...

  9. C++ std::vector指定位置插入

    使用vector,必须加上:#include <vector> 1.初始化vector,一般有这几种方式: std::vector<std::wstring> v1; //创建 ...

随机推荐

  1. Hadoop框架:Yarn基本结构和运行原理

    本文源码:GitHub·点这里 || GitEE·点这里 一.Yarn基本结构 Hadoop三大核心组件:分布式文件系统HDFS.分布式计算框架MapReduce,分布式集群资源调度框架Yarn.Ya ...

  2. sqli-labs less11-12(post型union注入)

    less-11 post型union注入 过程: 输入admin admin 判断username password的闭合方式 对username查字段个数 ' union select 1,2# ' ...

  3. js下 Day08、DOM案例

    一.摇一摇 效果图:

  4. 冰河,能不能讲讲如何实现MySQL数据存储的无限扩容?

    写在前面 随着互联网的高速发展,企业中沉淀的数据也越来越多,这就对数据存储层的扩展性要求越来越高.当今互联网企业中,大部分企业使用的是MySQL来存储关系型数据.如何实现MySQL数据存储层的高度可扩 ...

  5. Linux OOM Killer造成数据库访问异常排查

    服务器上的服务器访问异常,查看/va/log/messages发现如下: Sep 22 16:08:21 safeserver kernel: java invoked oom-killer: gfp ...

  6. 4. 上新了Spring,全新一代类型转换机制

    目录 ✍前言 版本约定 ✍正文 PropertyEditor设计缺陷 新一代类型转换 Converter 代码示例 不足 ConverterFactory 代码示例 不足 GenericConvert ...

  7. 1.k8s概述、安装、名词解释、资源清单

    一.k8s概述 1.简介 Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernete ...

  8. CyclicBarrier回环屏障深度解析

    1. 前沿 从上一节的CountDownLatch的学习,我们发现其只能使用一次,当state递减为0后,就没有用了,需要重新新建一个计数器.那么我们有没有可以复用的计数器呢?当然,JUC包给我们提供 ...

  9. ArrayList的删除姿势你都知道了吗

    引言 前几天有个读者由于看了<ArrayList哪种遍历效率最好,你真的弄明白了吗?>问了个问题普通for循环ArrayList为什么不能删除连续重复的两个元素?其实这个描述是不正确的.正 ...

  10. 手把手教你用SonarQube+Jenkins搭建--前端项目--代码质量管理平台 (Window系统)

    前言 网上教程大多介绍的是Linux系统下SonarQube+Jenkins如何使用,这是因为这两款软件一般都是部署在服务器上,而大多数服务器,采用的都是Linux系统.大多数服务器用Linux的原因 ...