sed:N 命令不读取单行

sed:N 命令不读取单行

为什么 sed 的N命令不读取单行?

# single line without \n
$ echo -en 'abc' | sed -n 'N;p'
$
# I expected 'abc'

# single line with \n
$ echo -en 'abc\n' | sed -n 'N;p'
$
# I expected 'abc'

# two lines
$ echo -en 'abc\n_' | sed -n 'N;p'
abc
_$ 
# works as expected

答案1

没有尾随换行符的行不是一行。一些sed实现会丢弃它,一些实现会接受它,其中一些可能会添加丢失的换行符。

在:

echo -en 'abc\n' | sed -n 'N;p'

abcsed从其模式空间开始。然后继续运行指定的命令。第一个N是将下一行追加到模式空间。没有下一行,因此会导致sed退出由 POSIX 指定并如记录的那样。

相关内容