我可以用 awk 覆盖屏幕上的输出吗?

use*_*139 1 bash awk

我想跟踪 awk 命令对许多文件进行操作的进度。目前,我正在使用每个打印语句将文件名打印到屏幕上,但我不想淹没屏幕。我希望一次又一次地写入同一行,而不是每次都打印到新行。这可能吗?

Jot*_*tne 5

您可以ANSI Escape sequences与 一起使用awk。尝试这个:

seq 1 100000 | awk '{print $1 "\033[1A"}'
Run Code Online (Sandbox Code Playgroud)

Esc[ValueA 光标向上:
将光标向上移动指定的行数,而不更改列。如果光标已经位于顶行,则 ANSI.SYS 会忽略该序列。


要解决 Jlliagre 提出的问题,您可以执行以下操作:

seq 100000 -1 1  | awk '{print "\033[2J\033[;H" $1}'
Run Code Online (Sandbox Code Playgroud)

它清除屏幕并将光标的位置设置为0,0