sed -n选项

sed -n选项

我们都知道sed -n选项会屏蔽默认的输出
但事实上-n选项不仅屏蔽默认的输出,也会屏蔽n指令默认的前置输出
root@bwhhkle:~# cat lines.bak 
1
2
3
4
5
6
7
8
root@bwhhkle:~# sed -n 'n;p' lines.bak 
2
4
6
8
如果没有-n选项,则
root@bwhhkle:~# sed 'n;p' lines.bak 
1
2
2
3
4
4
5
6
6
7
8
8
n指令首先输出(因为没有-n选项)默认读取到模式空间里的行1,然后读取下一行即2替换掉当前空间里的行1
接着p指令打印输出当前空间里的行2,指令执行完毕
最后执行默认输出(因为没有-n选项),打印当前空间里的行2;第一轮执行完毕!