linux:sed高级命令之n、N

 

sed的语法格式:

sed [option] {sed-command} {input-file}

sed在正常情况下,将处理的行读入模式空间(pattern space),脚本中的“sed-command(sed命令)”就一条接着一条进行处理,知道脚本执行完毕。然后该行呗输出,模式(pattern space)被清空;接着,在重复执行刚才的动作,文件中的新的一行被读入,直到文件处理完毕。

技术分享

但是,由于种种原因,如用户希望在某个条件下,脚本中的某个命令被执行或希望模式空间(pattern space)保留,以便下一次使用,这都有可能使sed在处理文件的时候,不按照正常的流程来进行处理,这时候就需要用sed高级命令来满足需求。

 

先来说说命令n和命令N

命令n:读取下一行到pattern space。由于pattern space中有按照正常流程读取的内容,使用n命令后,pattern space中又有了一行,此时,pattern space中有2行内容,但是先读取的那一行不会被取代、覆盖或删除;当n命令后,还有其他命令p的时候,此时打印出的结果是n命令读取的那一行的内容。

看下图,你就明白了。

新建文件,其内容如下

cat 1.txt

1

2

正常sed流程

技术分享

使用n命令后,

技术分享

N命令:将下一行添加到pattern space中。将当前读入行和用N命令添加的下一行看成“一行”。

新建文件1.txt

cat 1.txt

1

2

正常sed流程

技术分享

使用N命令后

技术分享

参考:

《sed and awk 第二版》

 

http://www.cnblogs.com/fhefh/archive/2011/11/14/2248942.html

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。