当我执行以下行时,它将以换行符打印单词。如何更改AWK中的现有打印行
awk 'BEGIN { print "line one\nline two\nline three" }'
如何在同一行中刷新信息并刷新现有行?
例如,在执行循环时,它应该打印'one',然后擦除行并打印'two',然后擦除行并打印'three'等。请您协助我吗?
当我执行以下行时,它将以换行符打印单词。如何更改AWK中的现有打印行
awk 'BEGIN { print "line one\nline two\nline three" }'
如何在同一行中刷新信息并刷新现有行?
例如,在执行循环时,它应该打印'one',然后擦除行并打印'two',然后擦除行并打印'three'等。请您协助我吗?
尝试更改换行符\n
以回车\r
(这是否工作取决于您的终端设置)。哦,并打印一大堆尾随空白符以清除前一行,并使用printf
来避免print
始终添加的自动\n
。
$ awk 'BEGIN { printf "line one \r" }'; sleep 2; awk 'BEGIN {printf "line two \r" }'
通过“消灭行”,我假设你指的是carriage return这可以使用\r
转义序列来表示。
例如:
[[email protected]]$ 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");
}
}'