![地址范围和 sed 命令](https://linux22.com/image/1515517/%E5%9C%B0%E5%9D%80%E8%8C%83%E5%9B%B4%E5%92%8C%20sed%20%E5%91%BD%E4%BB%A4.png)
有人可以解释一下为什么会出现以下行吗:
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