地址范围和 sed 命令

地址范围和 sed 命令

有人可以解释一下为什么会出现以下行吗:

echo -e "ab\ncd" | sed "3,4 p"

产量:

ab  
cd

是不是因为第3行和第4行超出了输入范围?

我希望输出为空,因为输入只有两行,而命令被告知要检查第 3 行到第 4 行。

答案1

您似乎假设 sedp命令只会打印指定范围内的行。默认情况下情况并非如此。

除非您添加-n参数sed,否则输入模式将被打印,并且实际上匹配的行将被重复。

考虑:

echo -e "a\nb\nc\nd" | sed "3,4 p"

会给你:

a
b
c
c
d
d

因为您的示例中没有第 3-4 行,所以您会在输出中得到前两行。


仅打印指定范围内的行:

echo -e "a\nb\nc\nd" | sed -n "3,4 p"
c
d

相关内容