有人可以解释一下为什么会出现以下行吗:
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