sed中的行范围在文件中多次匹配

sed中的行范围在文件中多次匹配,sed,Sed,假设我有一个文件我的\u文件: start startx start3 hi start4 end done stop endagain 现在我尝试sed-n'/start/,/end/p'

假设我有一个文件
我的\u文件

start
startx
start3
hi
start4
end
done
stop
endagain

现在我尝试
sed-n'/start/,/end/p'
sed
将如何解释这一范围的行,因为
start
发生了4次?

当针对示例输入运行命令时,将显示包含
start
的第一行通过包含
end
的最近的下一行(包括)将匹配

sed
不支持重叠范围:

  • 一旦某个范围上的开始模式与某一行匹配,则将从下一行[1]开始查找该范围的结尾,并且在找到该范围的结尾之前,不会发生开始模式的匹配
  • 匹配结束模式或遇到输入结束时,范围结束
寻找下一个范围,然后在前一个范围结束后的行上开始

请注意,我在这里松散地使用了术语“行”:虽然它是对行进行操作的默认情况,但在
sed
术语中,它应该被称为模式空间,它可以是行以外的内容,具体取决于脚本中的命令如何操作读取的行

[1] 请注意,相比之下,
awk
开始在同一行(记录)上查找结束模式