sed在指定行插入新行

前些天备份使用mysqldump备份出的数据文件(insert形式),里面的内容没有use db_name这个语句,所以如果在脚本中执行,那么会提示no database selected,所以就想在里面添加一个use db_name的语句。但是因为数据文件太大,如果直接vim打开恐怕不行。所以想到sed,然后上网找了一下sed在指定行插入的命令,然而需要注意的是,这些命令虽然可以直接定位到行,但最终如果要文件内容被更新掉还是要花费一定的时间的,但是这样会比直接vim打开文件然后插入一行效率更高。
下面贴出具体的命令:
1.在指定行前插入一行
sed '2 ittt' -i a.txt # 在第2行前插入ttt,并且将结果更新到a.txt(如果不想将插入真正更新到文件,去掉后面的-i选项就可以)


2.在指定行后插入一行
sed '2 attt' -i a.txt #在第2行后插入ttt,并且将结果更新到a.txt(如果不想更新原文件,去掉-i)


3.在指定的多行前面插入
sed 'n,m ittt' -i a.txt #看得懂了吧


4.在指定的多行后面插入
sed 'n,m attt' -i a.txt #看得懂了吧

sed提供了功能太强大了,以后还需要好好学习它,好记性不如烂笔头哈~~


update 1:

又学习了一下sed常用命令,这篇举的例子不错http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/sed.htm#id2810348

发现sed真的是太灵活了,另外上面举的例子,-i表示更新到原文件,写在前面后后面都是一样的效果。 上面都是在指定行插入新行,在匹配的行前面(后面)插入新行的写法:sed '/test/i\ add a new line' -i a.txt(同理,sed '/test/a\ a new line' -i a.txt则是插入到匹配的行后面)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值