欢迎登陆真网站,您的到来是我们的荣幸。 登陆 注册 忘记密码? ☆设为首页 △加入收藏
欢迎加入真幸福QQ群
电脑知识: 基础知识 网络技术 操作系统 办公软件 电脑维修 电脑安全 windows7 windows8 windows10 服务器教程 平板电脑 视频播放教程 网络应用 互联网 工具软件 浏览器教程 QQ技巧 输入法教程 影视制作 YY教程 wps教程 word教程 Excel教程 PowerPoint
云南西双版纳特产小花糯玉米真空包装


Java开发时经常使用的相关Linux命令整理
详解Linux系统中安装配置Samba服务器的步骤
Linux下针对路由功能配置iptables的方法详解
WPS演示制作60秒倒计时器效果的方法
鲁大师驱动程序备份与还原图文教程
EDIUS存储位置被移动素材的恢复方法
Win8开启隐藏Administrator账户的方法
excel怎么制作双层饼图
Win7系统System Idle Process占用率高怎么办
word2010怎么自己画箭头?
Linux系统中sed命令在文件某行前后添加内容的用法
【 来源:网络 】【 点击:2 】 【 发布时间:2017_03_03 08:59:59 】

   linux的sed工具是十分强大的,能很容易的实现在某关键词的前一行或后一行增加内容。今天在批量修改tomcat的日志时就用到了该功能。

  一、在某行的前一行或后一行添加内容

  具休操作如下:

  代码如下:

  #匹配行前加

  sed -i '/toxingwang.com/iwww.toxingwang.com' the.conf.file

  #匹配行前后

  sed -i '/toxingwang.com/awww.toxingwang.com' the.conf.file

  而在书写的时候为便与区分,往往会在i和a前面加一个反加一个反斜扛 。代码就变成了:

  代码如下:

  sed -i '/2222222222/a3333333333' test.txt

  sed -i '/2222222222/i3333333333' test.txt

  这就就可以很方便的看出要在某一行前或某一行后加入什么内容 。不过经常我记不住a 、i 那个是前那个是后。我的记法是a = after ,i = in front 。这样就知道 i 是前,a 是后了。不过官方的man文件里不是这样解释的,man文件里是这样解释的:

  代码如下:

  a

  text Append text, which has each embedded newline preceded by a backslash.

  i

  text Insert text, which has each embedded newline preceded by a backslash.

  而且其可以配合find查找的内容处理,如下:

  代码如下:

  find . -name server.xml|xargs sed -i '/directory/i '

  二、在某行(指具体行号)前或后加一行内容

  代码如下:

  sed -i 'N;4addpdf' a.txt

  sed -i 'N;4ieepdf' a.txt

  这里指定的行号是第四行 。

  三、删除指定行的上一行或下一行

  #删除指定文件的上一行

  代码如下:

  sed -i -e :a -e '$!N;s/.*n(.*directory)/1/;ta' -e 'P;D' server.xml

  #删除指定文件的下一行

  sed -i '/pattern="%/{n;d}' server.xml

  这个写起来有点长,一般如果不是shell里的需要,我更喜欢用vim去处理。另外需要注意的是,在vim里如果替换的内容里tab这样的符号是需要在编辑模式下分别按ctrl+v 和crtl+I ,而不是不停的几个空格。

本网站由川南居提供技术支持,fkzxf版权所有 浙ICP备12031891号