Answers:
通常,每个sed命令都使用相同的源数据,并且看不到彼此的更改。当使用shell来管道时,这不是问题。如果您不想使用shell来管道输出,那么您必须使用保持缓冲区。
这应该做你想要的事情:
sed '/SCF Done/h;g;$!d' <filename>
这将每个匹配放入保持缓冲区(h
)。然后,在读取整个文件后,它读取保持缓冲区(the g
)并仅打印最后一行(the $!d
)。
我认为这可以进一步优化,如果你能弄清楚如何让它真正替换每个马赫上的整个缓冲区,但我把它固定为你的练习。这也可以让你摆脱这;$!d
部分。