GooseDeveloper Asked: 2021-09-04 15:43:41 +0800 CST2021-09-04 15:43:41 +0800 CST 2021-09-04 15:43:41 +0800 CST 在 GNU Ed 中使用行号搜索 772 我最近开始学习ed,但是我已经到了需要搜索文本的地步。我的第一次尝试是ed'/命令,它将显示出现次数,但不包括行号。这在香草中可以实现ed吗? regular-expression ed 2 个回答 Voted Best Answer Quasímodo 2021-09-04T15:55:34+08:002021-09-04T15:55:34+08:00 您可以使用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 Ed和GNU Ed。 Kusalananda 2021-09-05T22:49:27+08:002021-09-05T22:49:27+08:00 您可以=用来输出编辑缓冲区中一行的行号。要使用某个表达式进行搜索RE并输出第一次命中的行号,请使用 /RE/ = 该n命令输出以其行号为前缀的当前行。也可以将其应用于其他一些行或行范围: /RE/ n 要获取所有匹配行的行号,请结合=或n与g命令。但是请注意,由于=命令的默认地址是编辑缓冲区的最后一行,而不是当前行,因此使用=会输出错误的结果,g除非我们明确地给它.地址。所以使用 g/RE/ .= 仅获取匹配的所有行的行号RE。 利用 g/RE/ n 输出与它们的行号匹配的所有行RE(类似于grep -n 'RE'虽然格式不同)。
您可以使用
g
+n
(全局 + 数字命令):始终查看文档以查看所有可用命令:POSIX Ed和GNU Ed。
您可以
=
用来输出编辑缓冲区中一行的行号。要使用某个表达式进行搜索RE
并输出第一次命中的行号,请使用该
n
命令输出以其行号为前缀的当前行。也可以将其应用于其他一些行或行范围:要获取所有匹配行的行号,请结合
=
或n
与g
命令。但是请注意,由于=
命令的默认地址是编辑缓冲区的最后一行,而不是当前行,因此使用=
会输出错误的结果,g
除非我们明确地给它.
地址。所以使用仅获取匹配的所有行的行号
RE
。利用
输出与它们的行号匹配的所有行
RE
(类似于grep -n 'RE'
虽然格式不同)。