创建滚动窗口(rolling window)

创建滚动窗口(rolling window)

Content #

如何用美元符号来显示数据流末尾的若干行呢?答案是创建滚动窗口(rolling window)。

滚动窗口通过N命令将行合并,是一种检查模式空间中文本行块的常用方法。N命令会将下一行文本附加到模式空间中已有文本行之后。一旦模式空间中有了一个包含10行的文本块,就可以使用美元符号来检查是否已经处于数据流的尾部。如果不是,就继续向模式空间增加行,同时删除已有的行(记住,D命令会删除模式空间的第一行)。

通过循环N命令和D命令,你向模式空间的文本行块增加新行的同时也删除了旧行。分支命令非常适合这个循环。要结束循环,只需识别出最后一行并用退出(q)命令退出即可。

最终的sed编辑器脚本如下所示: $ cat data7.txt Line1 Line2 Line3 Line4 Line5 Line6 Line7 Line1 Line2 Line3 Line4 Line5 Line6 Line7 Line8 Line9 Line10 Line11 Line12 Line13 Line14 Line15 $ $ sed ‘{ > :start > $q ; N ; 11,$D > b start > }’ data7.txt Line6 Line7 Line8 Line9 Line10 Line11 Line12 Line13 Line14 Line15 $ 该脚本首先检查当前行是否为数据流中的最后一行。如果是,则退出命令会停止循环,N命令会将下一行附加到模式空间中的当前行之后。如果当前行在第10行之后,则11,$D命令会删除模式空间中的第1行。这就在模式空间中创造了滑动窗口的效果。因此,这个sed程序脚本只会显示data7.txt文件最后10行。

From #

Linux命令行与shell脚本编程大全