我想使用 grep 解析 cdrecord/wodim 的输出。cdrecord -v
输出像这样的行
Track 01: 49 of 75 MB written (fifo 100%) [buf 100%] 10.2x.
问题是 cdrecord 使用回车符 ( CR
, \r
) 以便在同一行中显示进度。
我尝试附加tr '\r' '\n'
到 cdrecord 调用,该调用通常有效,但输出不会逐行显示。相反,会解析并显示大块文本:
cdrecord -v ... | tr '\r' '\n' | grep -i written
这是由于 cdrecord、tr 或 grep 造成的吗?有没有办法强制刷新以便逐行获取输出?
任何帮助表示赞赏。
答案1
的输出tr
被缓冲。您可以使用stdbuf -o0
withtr
使其 STDOUT 无缓冲:
cdrecord -v ... | stdbuf -o0 tr '\r' '\n' | grep -i written