sed 删除了两行而不是一行,为什么?

sed 删除了两行而不是一行,为什么?

我正在尝试从此文本文件 ( ) 中删除行foo.txt

cat
mouse

animals: 2

我想从末尾删除两行:


animals: 2

所以我最终得出这样的结论:

cat
mouse

然而,当使用 时variable="$(sed '$d' foo.txt)",两行似乎都被删除,即使我只指定了一行$d。尽管这给了我想要的结果,但我忍不住想知道为什么会发生这种情况。当尝试不将输出存储在变量中时,我得到了我期望看到的输出:

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

user$ 

奇怪的是,使用$ sed '$d;$d' foo.txt仅删除该animals: 2行,而不删除它之前的换行符。

有人能为我揭开这个神秘面纱吗?谢谢。

根据记录,本例中使用的是 BSD sed。

相关内容