在编辑器 sam 中,可以使用以下命令搜索并打印字符串“ed”,但不能搜索并打印“red”:
,x./*\n/ g/ed v/red p
我试图找到一种方法在编辑中做类似的事情。我想搜索字符串“ed”但不获取带有以下内容的行:
r编辑,爱编辑, 加载编辑, ETC。
我熟悉 v 命令,但不确定如何将其与 ag 命令结合使用,或者是否可以在 ed 中使用。
答案1
最好使用包含单词边界标记的正则表达式来完成此操作:
g/\<ed\>/p
请注意,我并不完全熟悉,sam
因此我无法评论您所显示的编辑表达式。上面的表达式将打印每个线含有单词 ed
ed
,即前面和后面不是 a 的字符串单词字符。单词字符是集合中的字符[[:alnum:]_]
。和\<
是\>
零宽度断言,并且将在单词字符和非单词字符之间的边界处匹配。
和\<
是\>
非标准的,但在 GNU 系统和某些 BSD 系统上可用。 macOS 使用[[:<:]]
and[[:>:]]
来代替,而 GNU 系统还可以\b
在单词的开头和结尾使用 and 来匹配。
如果您想以可移植的方式执行此操作,则必须进行匹配[^[:alnum:]_]ed[^[:alnum:]_]
,但还要记住考虑特殊情况,即单词出现在行的开头或结尾,或者ed
一行中仅有两个字符。