sed:N コマンドは 1 行を読みません。

sed:N コマンドは 1 行を読みません。

Nsedコマンドが1行も読み取れないのはなぜですか?

# 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 はパターン空間で始まります。その後、指定されたコマンドを実行し続けます。 1つ目Nは、パターン空間に次の行を追加することです。次の行がないため、sed出口が発生しましたPOSIXで指定そして記録通り。

関連情報