当我执行以下行时,它会以换行符打印单词。
awk 'BEGIN { print "line one\nline two\nline three" }'
如何在刷新现有线的同一行中打印信息?
例如,在执行循环时,它应该打印'一个'然后擦除线并打印'两个'然后擦除线并打印'三个'等等你能帮助我吗?
答案 0 :(得分:3)
尝试将换行符\n
更改为回车符\r
(这是否有效取决于您的终端设置)。哦,打印一堆尾随空格来清除前一行,并使用printf
来避免\n
始终添加的自动print
。
$ awk 'BEGIN { printf "line one \r" }'; sleep 2; awk 'BEGIN {printf "line two \r" }'
答案 1 :(得分:0)
通过“清除行”,我假设您指的是carriage return,可以使用\r
转义序列表示。
例如:
[me@home]$ awk 'BEGIN { print "line one\rline two\rline three" }'
line three
“第一行”和“第二行”消失,因为它们已被消灭并被“第三行”取代。
如果您希望文本在被删除之前显示一段时间,则需要在每次打印之间插入延迟。
awk 'BEGIN{
printf "line one";
system("sleep 1");
printf "\rline two";
system("sleep 1");
printf "\rline three";
}'
或使用循环
echo "one two three" | awk '{
for (i=1; i<=NF; i++) {
printf "\rline %s", $i;
system("sleep 1");
}
}'