基本上我有这个:
while true; do printf "%sr" $(date +"%H:%M:%S"); sleep 1; done | sed s/"(^[^$]*$)"/"[test] 1"/g
本例的目标是使用回车符在同一行上打印日期,然后通过sed过滤输出,将[test]添加到该行,就像使用
一样。 `printf "[test] %sr" $(date)`
但是sed没有输出。我试过stdbuf
和unbuffer
,他们没有工作,或者我没有正确使用它们。我想让这工作使用ffmpeg
,但更重要的是任何类型的输出,使用回车
你可以这样做:
while true; do printf "%sn" $(date +"%H:%M:%S"); sleep 1; done|awk '{printf("[test]%sr",$0)}'
当您使用printf "%sr"
时,您在一行中打印字符串,这意味着行永远不会结束,但是sed
只会在一行结束时工作(意味着这行完成)。我想这就是为什么你的代码不能工作。
你最好让最后一个命令打印成一行。