- 论坛徽章:
- 0
|
本帖最后由 ivorning 于 2014-07-25 17:21 编辑
[root@oracle tmp]# cat e_test.txt
1
2
3
4
5
6
[root@oracle tmp]# sed -e '1,2d' -e '1,2d' e_test.txt
4
5
6
我想我应该已经明白这个执行过程了
1、读入1,进入sed执行,满足第一个e中的1,2,开关开启,删掉1
2、读入2,进入sed执行,满足第一个e中的1,2,开关关掉,删掉2,此时第一个e中的1,2d已经被前两行带走开房了,后面的行都没有机会了
3、读入3,进入sed执行,此时命令中仅剩一个e,命令为1,2d,此时3进入执行,行号3>1,被判定为满足,所以执行删除3,由于3>2,所以开关在这一行就被关闭了,所以第二个e中的1,2d被3自己带走开房了
4、对于后面的456,sed中相当于没有命令了,所以就直接打印出来了
我自己又做了个实验
sed '1,2d;1,2d;1,2d' e_test.txt
结果是只显示5,6 与上面的理解不矛盾,就是多了个4把第三个1,2d带走开放这一步,4当然也因为部分满足1,2d(4>1),被删掉了~~ |
|