基本上我有这个:
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输出什么都没有。我已经尝试了stdbuf
和unbuffer
但他们没有工作,或者我没有正确使用它们。我希望使用ffmpeg
来实现这一点,但更重要的是使用回车的任何类型的输出。
答案 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
只有在行结束时才会起作用(表示此行已完成)。我认为这就是你的代码无效的原因。
您最好将最后一个命令打印成一行。