我正在尝试解析rsync命令的进度条输出。我想使用rsync进度条中的百分比数据并将其显示在对话框实用程序上。
rsync进度条数据如下所示:
32768 0% 0.00kB/s 0:00:00
330563584 8% 315.22MB/s 0:00:11
到目前为止,我已经尝试过sed来提取数据:
rsync -a --progress test.tar.gz /media/sdb1 \
| sed -u -E 's/(^|.*[^0-9])([0-9]{1,3})%.*/\2/p'
我能够单独获得最终值100。我无法获得中间值。
答案 0 :(得分:2)
这个答案[1]最终引发了我的主要问题,为什么没有任何方法按照我的预期方式发挥作用。
通过这个,下面的代码片段为您提供了解析所需的所有输出。 “最终”行(例如100%,还有要考虑的xxx文件)以及仅用^ M分隔的中间内容。
/usr/bin/rsync --info=progress2 --no-i-r -avr /foo /boar | \
gawk '1;{fflush()}' RS='\r|\n' | \
while read -r i
do
echo Got: -$i-
done
请注意原始答案中关于行结尾分离的评论。
答案 1 :(得分:0)
我找到了解决这个问题的可能方法。它可以按如下方式完成:
rsync -a --progress test.tar.gz /media/sdb1 |
unbuffer -p grep -o "[0-9]*%" |
tr -d '%