我遇到了一个问题,我不确定这是否是一个错误,或者在使用 $ 寻址行时是否应该发生这种情况。基本上,我有以下命令:
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
编辑脚本中看到相同的行为不是使用$
地址,因为数据的转换不依赖于当前行是否是输入的最后一行。