我发出命令来动态显示tar
已处理的文件数量:
tar zcvf some_archive.tar.gz /a/lot/of/files | \
awk 'ORS="\r"{print NR} END{print "\n"}'
通过这种方式,我可以看到越来越多的数字,因为tar
为每个处理的文件输出一行。
但是,光标始终位于第一个数字下方。我希望它在最后一位数之后,所以我有这个:
awk 'ORS=""{print "\r"NR} END{print "\n"}'
可悲的是,AWK停止动态生成任何输出。
那我该怎么做呢?
答案 0 :(得分:1)
不确定原因,但改为printf对我有用(然后你也不需要设置ORS):
for i in {1..20}; do echo x; sleep 1; done | awk '{printf "\r" NR} END {print ""}'
这可能是一个更令人满意的答案,添加一个刷新来强制输出:
for i in {1..20}; do echo x; sleep 1; done | awk -v ORS="" '{print "\r" NR; fflush()} END {print "\n"}'