Sed回车实时返回

时间:2014-08-14 20:57:56

标签: sed carriage-return

基本上我有这个:

 while true; do printf "%s\r" $(date +"%H:%M:%S"); sleep 1; done | sed s/"\(^[^$]*$\)"/"[test] \1"/g  

此示例的目标是使用回车符在同一行上打印日期,然后通过sed过滤输出以将[test]添加到该行,就像我正在使用

一样
 `printf "[test] %s\r" $(date)`  

但是sed输出什么都没有。我已经尝试了stdbufunbuffer但他们没有工作,或者我没有正确使用它们。我希望使用ffmpeg来实现这一点,但更重要的是使用回车的任何类型的输出。

1 个答案:

答案 0 :(得分:0)

您可以使用此解决方法:

while true; do printf "%s\n" $(date +"%H:%M:%S"); sleep 1; done|awk '{printf("[test]%s\r",$0)}'

当您使用printf "%s\r"时,您将在一行中打印字符串,这意味着该行将永远不会结束,但sed只有在行结束时才会起作用(表示此行已完成)。我认为这就是你的代码无效的原因。

您最好将最后一个命令打印成一行。