ed 尽可能简洁地打印接下来的 n 行

ed 尽可能简洁地打印接下来的 n 行

我试图ed更好地理解 DSL,因为它的版本出现在其他工具中(例如sedvim)。

使用ed它可以打印接下来的 4 行,使用.,+4nwhere.,+4是从当前行开始并向下延伸 4 行的显式范围。

然而,围绕当前行打印几行以获取上下文似乎很重要,值得一些语法糖。

是否有相对于当前行的行范围缩写ed

例如,下面的文字记录.,+4n看起来相当长。

$ touch ~/foo
$ ed '-p* ' ~/foo
0
* 0a
1
2
3
4
5
6
7
8
9
10
11
.
* 5
5
* .,+4n
5   5
6   6
7   7
8   8
9   9

答案1

-4,+4n将打印前四行、当前行和后四行(编号)。

写同样的东西的另一种方式是稍微短一些-4z8n。这将应用该z命令,其不同之处p在于它首先移动到指定的行(此处-4),然后显示该行和(此处)8更多行。使n行编号。真正的区别在于,如果你给出命令zn 再次(现在没有数字),它将显示下一个八行(或者您在初始z命令后输入的任何数字)。

这两个命令都会更改所谓的“当前行”,并且您必须使用 手动向后移动-4,或者在移动之前设置一个标记(使用eg ka),然后移回该标记(使用eg 'a)。不幸的是,编辑ed器不接受一次性给出多个命令......

请注意,该z命令不是标准eded命令,但 GNU和edBSD 系统都支持。

使用 时ex,该命令.z.5将显示当前缓冲区的五行,当前行位于中间。在这里,您也可以将光标向下移动到最后显示的行。

相关内容