码迷,mamicode.com
首页 > 其他好文 > 详细

七.sed多行模式和循环

时间:2017-10-14 18:29:08      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:developer   模式   ram   使用   之间   清空   而不是   作用   数据   

sed默认每次执行一行数据,除非使用H,G或者N等命令创建多行模式,每行之间用换行符分开。

 

1.读取下一行数据并附加到模式空间 N

命令N从输入文件中读取下一行并追加到模式空间,而不是替换模式空间。

小写命令n打印当前模式空间的内容,并清空模式空间,从输入文件中读取下一行到模式空间,然后继续执行后面的命令。

大写命令N不会打印模式空间的内容,也不会清除模式空间,从输入文件中读取下一行到模式空间,然后继续执行后面的命令。。

例如:

$ sed -e ‘{N;s/\n/:/}‘ empnametitle.txt
John Doe:CEO
Jason Smith:IT Manager
Raj Reddy:Sysadmin
Anadn Ram:Developer
Jane Miller:Sales Manager

 

2.打印多行模式中的第一行 P

小写命令p打印模式空间的内容,大写P也打印模式空间内容,直到遇到换行符\n

例如:

$ sed -n -e ‘N‘ -e ‘/Manager/P‘ empnametitle.txt
Jason Smith
Jane Miller

 

3.删除多行模式中的第一行 D

小写命令d会删除模式空间内容,然后读取下一条记录到模式空间,并忽略后面的命令,从头开始下一次循环

大写命令D既不会读取下一条记录,也不会完全清空模式孔家,除非模式空间只有一行。它只会:

(1)删除模式空间的部分内容,直到遇到换行符\n

(2)忽略后续命令,在当前模式空间中从头开始执行命令

 

4.循环和分支 

命令b和:label标签

使用标签和分支命令b, 可以改变sed的执行流程:

(1):label定义一个标签

(2)b label执行该标签后面的命令,sed会跳转到该标签,然后执行后面的命令

(3)命令b后面可以不跟任何标签,这种情况下,它会直接跳到sed脚本的结尾

 

5.使用命令t进行循环

命令t的作用是, 如果前面的命令执行成功,那么久跳转到t指定的标签处,继续往下执行后续命令。否则,仍然继续正常的执行流程

 

七.sed多行模式和循环

标签:developer   模式   ram   使用   之间   清空   而不是   作用   数据   

原文地址:http://www.cnblogs.com/NewMan13/p/7667901.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!