【Linux】在文件的指定位置插入数据
今天遇到一个似乎很棘手的问题,要在文件的中间,插入几条配置
这里就以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】在文件的指定位置插入数据的更多相关文章
- 【转载】C#中使用List集合的Insert方法在指定位置插入数据
在C#的List集合等数据类型变量中,我们可以使用List集合的Insert方法在指定的索引位置插入一个新数据,例如指定在List集合的第一个位置写入一个新数据或者在List集合的中间某个位置插入个新 ...
- php 数组指定位置插入数据单元
PHP array_splice() 函数 array_splice(array,offset,length,array) 参数 描述 array 必需.规定数组. offset 必需.数值.如果 ...
- Java分享笔记:RandomAccessFile流 & 在文件指定位置插入内容
RandomAccessFile流:随机存取文件流,该类定义了一个记录指针,通过移动指针可以访问文件的任意位置,且对文件既可以读也可以写.使用该类的write方法对文件写入时,实际上是一种覆盖效果,即 ...
- 【转载】C#使用InsertRange方法往ArrayList集合指定位置插入另一个集合
在C#的编程开发中,ArrayList集合是一个常用的非泛型类集合,ArrayList集合可存储多种数据类型的对象.在实际的开发过程中,我们可以使用InsertRange方法在ArrayList集合指 ...
- 利用RandomAccessFile类在指定文件指定位置插入内容
package File; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; ...
- Dream------Java--ant zip 对压缩文件进行指定位置的修改
ant zip 对压缩文件进行指定位置的修改 实现功能: 对2中文件进行修改: 需求: 在XX文件中,从二进制流的200字节位置开始,往后的30位字节数量.插入一个值 由于涉及到公司内部,不方便写太多 ...
- Java 替换word文档文字,指定位置插入图片
先说下 需要的依赖包 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ex ...
- 在Word指定位置插入富文本域值(html文本)
遇到此问题,首先想到的就是各种百度.结果度娘了一会并没有发现有用的有效的解决方法,哎,看来还得靠自己啊. 首先整理了下手头上的资源,一是HtmlAgilityPack,专门解析Html文本用的:二是我 ...
- C++ std::vector指定位置插入
使用vector,必须加上:#include <vector> 1.初始化vector,一般有这几种方式: std::vector<std::wstring> v1; //创建 ...
随机推荐
- STL——容器(Set & multiset)的概念和特点
1. Set 和 multiset 的概念 set 和 multiset 是一个集合容器,其中 set 所包含的元素是唯一的,集合中的元素按一定的顺序排列.set 采用红黑树变体的数据结构实现,红黑树 ...
- rman删除归档日志无法释放
背景 当Oracle 归档日志满了后,将无法正常登入oracle,需要删除一部分归档日志才能正常登入ORACLE.最近遇到一个问题,一套Oracle 11g数据库使用RMAN删除了归档日志,但是仍然无 ...
- 自顶向下redis4.0(5)持久化
redis4.0的持久化 目录 redis4.0的持久化 简介 正文 rdb持久化 save命令 bgsave命令 rdb定期保存数据 进程结束保存数据 aof持久化 数据缓冲区 刷新数据到磁盘 ap ...
- 仵航说 前后端分离,文件上传下载(springBoot+vue+elementUI)仵老大
1.介绍 本文主要是介绍前后端分离的上传下载,后端使用的是SpringBoot,持久层用的是mybatis-plus,前端用的Vue,UI用的elementUI,测试了一下,文本,图片,excel ...
- Erlang那些事儿之正儿八经的前言
说在前面,为啥要码这些,并不是因为喜欢它,恰恰相反,我非常讨厌Erlang(真香警告)这位二郎神(Erlang的谐音),讨厌它的语法,讨厌它不变的变量,讨厌它的一切. 曾经的我,一听到这个语言,我就打 ...
- C#中的深度学习(四):使用Keras.NET识别硬币
在本文中,我们将研究一个卷积神经网络来解决硬币识别问题,并且我们将在Keras.NET中实现一个卷积神经网络. 在这里,我们将介绍卷积神经网络(CNN),并提出一个CNN的架构,我们将训练它来识别硬币 ...
- HCIP -- OSPF 总结
OSPF:Open Shortest path First :开方式最短路径优先 一.基础知识: 1.使用范围:IGP 2.协议算法特点:链路状态型路由协议,SPF算法 3.协议是否传递网络掩码:是 ...
- python三大流程
一.三大流程 1. 顺序:按照顺序依次逐行执行代码的过程.自左向右,自上而下 2. 分支:程序按照不同的条件执行不同的处理代码的过程. 分支分为单分支,双分支,多分支 经常用到的分支结构是if语句 i ...
- 编程方式实现MySQL批量导入sql文件
有时候需要在本地导入一些stage环境的数据到本地mysql,面对1000+的sql文件(包含表结构和数据,放在同一个文件夹下),使用navicat一个一个导入sql文件显然有点太慢了,于是考虑使用s ...
- JAVA十大经典排序算法最强总结(含JAVA代码实现)
0.排序算法说明 0.1 排序的定义 对一序列对象根据某个关键字进行排序. 0.2 术语说明 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面: 不稳定:如果a原本在b的前面,而a=b,排 ...