在 GNU Ed 中使用行号搜索

在 GNU Ed 中使用行号搜索

我最近开始学习ed,但是我已经到了需要搜索文本的地步。我的第一次尝试是ed's/命令,它将显示出现的次数,但不包括行号。这在香草中可以实现吗ed

答案1

您可以使用g+ n(全局+数字命令):

$ ed -p 'ed> ' file
ed> ,p
tree
apple
lemon
fruit
not
here
pear
apricot
end
ed> g/a/n
2       apple
7       pear
8       apricot

请务必检查文档以查看所有可用命令:POSIX 版GNU 教育版

答案2

您可以用来=输出编辑缓冲区中一行的行号。要使用某个表达式进行搜索RE并输出第一个命中的行号,请使用

/RE/ =

n命令输出当前行并以其行号为前缀。也可以将其应用于其他一些行或行范围:

/RE/ n

要获取所有匹配行的行号,请将=orng命令结合使用。但请注意,由于命令的默认地址=是编辑缓冲区的最后一行,而不是当前行,因此使用=会输出错误的结果,g除非我们明确给出.地址。所以使用

g/RE/ .=

仅获取所有匹配的行的行号RE

使用

g/RE/ n

输出所有匹配的行RE及其行号(类似于,grep -n 'RE'但格式不同)。

相关内容