【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; //创建 ...
随机推荐
- CC-BY-NC-SA (创作共用许可协议)
创作共用许可协议 (英语:Creative Commons license,简称CC许可) 是一种公共版权许可协议,其允许分发受版权保护的作品. 一个创作共用许可,用于一个作者想给他人分享.使用.甚至 ...
- STL—— 容器(vector)begin() 与 rbegin() , end() 与 rend()
1. Vector 迭代器首地址与尾地址 begin() 和 end() 在代码中可以将迭代器用作参数的位置可以使用 begin() 和 end() 获取地址,如下代码: 1 #include &l ...
- Java基础数据类型详解
在Java中的数据类型一共有8种,大致分为整型(4个)浮点型(2个)布尔(1)字符(1个) 分类 类型 默认值 占用字节 范围 整型 byte 0 1 = 8 bit -2^7 - 2^7 short ...
- react第十二单元(react路由-使用react-router-dom-认识相关的组件以及组件属性)
第十二单元(react路由-使用react-router-dom-认识相关的组件以及组件属性) #课程目标 理解路由的原理及应运 理解react-router-dom以及内置的一些组件 合理应用内置组 ...
- 网络知识扫盲——DNS
参考文章链接 : https://baijiahao.baidu.com/s?id=1668393227924896391&wfr=spider&for=pc 一.DNS 是什么? ...
- Python 学习笔记(下)
Python 学习笔记(下) 这份笔记是我在系统地学习python时记录的,它不能算是一份完整的参考,但里面大都是我觉得比较重要的地方. 目录 Python 学习笔记(下) 函数设计与使用 形参与实参 ...
- Docker来搭建分布式文件系统FastDfs
对于文件存储来说,一般情况下简单的处理就是在Django配置文件中配置存储目录,按照规则对文件进行上传或者下载. 实际上,当文件较少的时候,Django是可以应付的过来的.但当文件以海量形式出现的时候 ...
- Python循环列表的方法
python循环列表的几种方法: 第一,依次打印列表中的各项值. 1 #!usr/bin/env python3 2 #!-*- Coding:utf-8 -*- 3 4 ''' 5 多种循环列表的方 ...
- webform中DropdownList绑定多个字段
说明 ListItem中有Attributes属性,手动创建一个自定义属性,赋值需要绑定的字段的值. 这样的话,前台js也可以获取到,能够显示到前台html,进行控制. 代码 foreach(Data ...
- 编程方式实现MySQL批量导入sql文件
有时候需要在本地导入一些stage环境的数据到本地mysql,面对1000+的sql文件(包含表结构和数据,放在同一个文件夹下),使用navicat一个一个导入sql文件显然有点太慢了,于是考虑使用s ...