Chinaunix首页 | 论坛 | 博客
  • 博客访问: 383076
  • 博文数量: 80
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1767
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-24 16:18
个人简介

为啥不能追求自己的爱好一辈子呢

文章分类

全部博文(80)

文章存档

2017年(1)

2015年(2)

2014年(18)

2013年(59)

分类: LINUX

2013-11-08 11:17:06

综述:

    今天有个任务就是在两个匹配行之间插入一行,例如文件格式为
      hello
      welcome to shanghai
   在这两个之间插入一行liming。

方案

    查了一下sed的用法貌似可以试一下,看到命令n可以读入下一行到pattern space,就可一匹配完前一行,继续匹配下一行了。
    

点击(此处)折叠或打开

  1. sed ‘/hello/{n;s/welcome to shanghai/liming\n&/g}
在这种情况下n变成N也是可以的。N表示读入两行到匹配空间,然后在匹配。
   

点击(此处)折叠或打开

  1. sed ‘/hello/{N;s/welcome to shanghai/liming\n&/g}

    首先是匹配hello,然后n,读入下一行,在下一行匹配welcome to shanghai ,之后用liming\n,变相的插入一行,&表示继续输出之前的匹配文字。
n表示对下一行执行匹配,而N
只是表示读取下一行到匹配区域,后边的命令,是对每一行进行匹配。



完美解决

阅读(3545) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~