sedが1行ではなく2行を削除しましたが、なぜですか? [コピー]

sedが1行ではなく2行を削除しましたが、なぜですか? [コピー]

このテキストファイル()から行を削除しようとしていますfoo.txt

cat
mouse

animals: 2

最後から2行を削除したいです。


animals: 2

だから私はついに次の結論に達しました。

cat
mouse

ただし、これを使用すると、variable="$(sed '$d' foo.txt)"1つだけ指定しましたが、両方の行が削除されたように見えます$d。これにより、私が望む結果を得ることができますが、なぜこれが起こるのか疑問に思うことはできません。出力を変数に保存したくない場合は、次のような出力が表示されます。

user$ sed '$d' foo.txt
cat
mouse

user$ 

奇妙なことは、を使用するとその行$ sed '$d;$d' foo.txtだけがanimals: 2削除され、その前の改行文字は削除されないことです。

誰でも私のためにこの謎を解くことができますか?ありがとうございます。

参考までに、この例ではBSD sedを使用しました。

関連情報