我打开了 ed 并插入了以下文本:
This text
Is a
Test
但是,当我尝试使用以下命令标记第 1-3 行时:
1,3ki
并打印它们
'ip
它只打印最后一次出现。有没有办法可以标记所有三行(即1,3
)?非常感激。
答案1
一个标签只能标记一行。如果为命令提供一系列行k
,则只会标记最后输入的地址,因为该k
命令仅采用单个地址。
这是来自规格ed
在 POSIX 标准中(我的重点):
如果向需要零地址的命令提供多于所需数量的地址,则应出错。否则,如果向命令提供的地址数量多于所需数量,首先指定的地址应被评估,然后被丢弃,直到剩余有效地址的最大数量,对于指定的命令。
该k
命令与标准中的命令类似(.)kx
,这意味着它最多需要一个地址(默认为当前行)。
根据您想要实现的效果,您可以使用两个标签,一个用于第 1 行,另一个用于第 3 行,或者您可以将单个标签与相对于该标签的地址与命令一起使用p
。
因此,要么使用两个标签,
1ka
3kb
'a,'b p
或在致电时使用单一标签和相对寻址p
,
1ka
'a,'a+2 p
或者
3kb
'b-2,'b p
或者类似的东西
3kb
'b; -2,. p
或者
1ka
'a; .,+2 p