【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
如果想要插入的内容比较繁琐的话,记得使用正确使用正则来处理文字
只有学习才能跟上时代的脚步

浙公网安备 33010602011771号