使用 $ 时 sed 的奇怪行为(错误?)

使用 $ 时 sed 的奇怪行为(错误?)

我遇到了一个问题,我不确定这是否是一个错误,或者在使用 $ 寻址行时是否应该发生这种情况。基本上,我有以下命令:

sed -e '$s/test/tset/g'

通常,我希望它像这样运行:

blahblah
blahblah
  <-- Cursor is here now

含义:我输入一些内容并按 Enter 一次,结果显示在下一行中,但是,我得到以下内容:

blahblah

blahblah
  <-- Cursor is here now.

所以,基本上 $ 符号似乎以某种方式导致 sed 将光标设置为空行,只有在我再次按 Enter 键后,它才真正显示结果(意味着:我必须按 Enter 键两次)。有什么办法可以防止这种情况发生,或者这可能是一个错误?在我更复杂的模式中,这实际上弄乱了很多东西。

答案1

由于sed知道必须将命令应用于最后一行输入,因此在确定可以读取之前,它无法输出最近处理的行更多的之后的线路。

您不会在sed编辑脚本中看到相同的行为不是使用$地址,因为数据的转换不依赖于当前行是否是输入的最后一行。

相关内容