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