sed 的高级用法,一般将其分为3类:
一.多行模式空间(N,D,P)
二.保持空间和模式空间的交换用法(H h;G g; x)
三.脚本对控制流的改变( : b t 标签)
在此,再提醒下自己 sed是个文本的流编辑器,我更喜欢称其为行编辑器。顾名思义它的处理最小单位是行,即一次只先往模式空间输入一行,打印结束后再输入第二行。当然也有可能一次性输入多行的情况,我想这就是称其为流编辑器的原因(行多了不就称为流了嘛,呵呵,个人愚解)。那么我们现在就进入sed高级命令的第一篇:
N:通过输入新行,并将其附加到模式空间现有的行之后来创建多行空间,新行和原有的行以\n分隔。sed将其看做一行处理。(可见和n的区别,小n输出模式空间的内容后再输入新行)
D:删除模式空间多行模式的第一个\n之前的内容,之后反复删除模式空间的其余行,并不输入新行。
d:会清空模式空间的内容,并输入新行。
P:输出多行模式空间的第一部分,直到第一个嵌入的换行符。
p:打印匹配的所有输出
PS无论P 或者 p 都可以当输出被抑制的时候,强制打印匹配行,且P经常放在N,D之前组成一个循环对数据流进行控制,但一次只输出一行,然后返回到脚本的顶端将所有命令应用于第二行。如果没有这个循环,那么当执行到脚本的最后一个命令时,模式空间的这两行将被输出。
阅读(3510) | 评论(0) | 转发(0) |