指定了"反向"范围的sed行号范围

Pra*_*van 2 regex linux sed

使用sed指定行号时,它将执行指定范围内的指定操作.所以,

sed -n '5,10 p' < file
Run Code Online (Sandbox Code Playgroud)

将从文件中打印第5行到第10行.所以我的理解是,它扫描文件以找到与第一个指定参数(5)匹配的行号,并执行指定的操作,直到达到与第二个参数(10)匹配的行号.但是,当我颠倒范围时,即:

sed -n '10,5 p' < file
Run Code Online (Sandbox Code Playgroud)

它只打印文件中的第10行.那么,我对sed操作方式不正确的假设是什么?是什么原因导致第10行被打印,因为指定的"范围"甚至不是实际有效范围?

谢谢!

Pet*_*ers 5

手册页:

可以通过指定用逗号(,)分隔的两个地址来指定地址范围.地址范围匹配从第一个地址匹配的行开始,并继续直到第二个地址匹配(包含).

如果第二个地址是正则表达式,那么检查结束匹配将从匹配第一个地址的行后面的行开始:一个范围总是至少跨越两行(当然,如果输入流结束).

如果第二个地址是小于(或等于)与第一个地址匹配的行的数字,则只匹配一行.

请注意第一段中的"包含"一词,然后在第3段中注明较长的解释.

为什么?不要在这里对我们进行形而上学...... :-)