- 论坛徽章:
- 0
|
sed -e :a -e '$q;N;3,$D;ba' 22.txt 解释:当输入第一行时,执行命令N,后现在模式空间内有两行(即 111 222),222 在第二行,不符
合命令3,$D所以不执行,接下来执行ba后重新执行'$q;N;3,$D;ba' 因为现在222不是最后一行,所以不执行$q,而继续执行N,这时模式空间内
有三行(111 222 333)然而新读入的333匹配(3,$D这个命令即333在第三行),所以执行到该命令后删除模式空间内的111,现在模式空间内
有222和333,因为执行的是D,所以返回到脚本的顶端,重新执行脚本,因为333又不满足$q,后执行N,这时模式内成了222,333,444又因为444
在第四行,满足3,$D,所以执行完这个命令后剩下333,444,这时按照刚才的继续重复执行N等等,一直这样,当执行完3,$D这个后模式空间内
成为888 和999了,返回脚本顶端,因为999不在最后一行,所以执行N,这时读入模式空间的内容成为了888 999 101 因为101这时还是在3,$D
这个范围内,所以执行D删除,模式空间剩下了999 101 并且返回脚本的顶端。这时因为101是最后一行,执行$q,后推出脚本并且输出模式空间
的内容 |
|