说明蓝色=命令名称

      浅绿=命令参数

      浅蓝=选项

      紫色=目录

      系统环境:CentOS  5.8  x86_64

内容如下:

sed语句:sed  '/./{H;$!d};x;/aa/d'  1

结果如图

解析:

第一行不是空,被/./匹配,放入保留空间,执行d,在读取下一行进入循环,知道读取的下一行不被/./匹配,不执行d,循环结束。此时保留空间内的内容为:

null\naa\nbb\ncc\n

继续读取下一行进行第二个循环,和第一次一样不再详细解释。

第三次循环关键在 $!d 最后一行没有执行 d 表示循环结束,执行了一侧完整的循环。若没有 $!d 则最后执行 d 然后下一行为空,无法读取,循环没有顺利完成,所以最后的一次循环不会被真正的保留到保留空间中,最后的结果如图: