sed 'N;$!D' a
首先sed读入第一行
1\n
执行N命令(把下一行的内容以追加的方式附加的模式空间)
1\n2\n
$!D表示对最后一行之外的其它行执行D命令(删除模式空间中第一个换行之前的内容,返回到第一条命令,也就是在此从N命令开始执行)
由于现在不是最后一行,所以要执行D命令
2\n
D命令执行以后又回到N命令读入下一行
2\n3\n
D命令
3\n
N命令
3\n4\n
...
N读入最后一行
8\n9\n
因为是最后一行,$!D不执行D,命令结束,打印模式空间的内容:
8
9
首先sed读入第一行
1\n
执行N命令(把下一行的内容以追加的方式附加的模式空间)
1\n2\n
$!D表示对最后一行之外的其它行执行D命令(删除模式空间中第一个换行之前的内容,返回到第一条命令,也就是在此从N命令开始执行)
由于现在不是最后一行,所以要执行D命令
2\n
D命令执行以后又回到N命令读入下一行
2\n3\n
D命令
3\n
N命令
3\n4\n
...
N读入最后一行
8\n9\n
因为是最后一行,$!D不执行D,命令结束,打印模式空间的内容:
8
9