我正在编写一个过滤器(在一个用于终端输出的管道中),有时需要“覆盖”刚刚发生的一行。它的工作原理是逐个字符地将标准输入传递给标准输出,直到\n
达到 a,然后调用特殊行为。我的问题是如何返回到行首。
我首先想到的是使用 a\r
或 ANSI 序列\033[1G
。但是,如果行长到足以在终端上换行(并因此导致它滚动),这些只会将光标移回当前物理行。
我的第二个想法是跟踪行的长度(自上一个以来传递的字符数\n
),然后\b
多次回显。但是,如果该行包含控制字符或转义序列(可能还有 Unicode?),就会出错。
缺少搜索所有特殊序列并使用它来调整我的字符数,有没有一种简单的方法来实现这一点?