Powrót kursora terminala do początku linii z włączonym zawijaniem

Piszę filtr (w rurze przeznaczonej na wyjście terminalu), który czasami musi „nadpisać” linię, która właśnie wystąpiła. Działa poprzez przekazywanie stdin na stdout postać po znaku aż do\n zostanie osiągnięty, a następnie wywołanie specjalnego zachowania. Mój problem dotyczy sposobu powrotu na początek linii.

Pierwszą rzeczą, o której myślałem, było użycie a\r lub sekwencja ANSI\033[1G. Jeśli jednak linia była wystarczająco długa, aby zawinąć ją w terminal (a tym samym spowodować jej przewinięcie), przesuną kursor tylko do bieżącegofizyczny linia.

Moim drugim pomysłem było śledzenie długości linii (liczba znaków minionych od poprzedniego\n), a następnie echo\b tyle razy. Jednak dzieje się to nie tak, jeśli linia zawiera znaki sterujące lub sekwencje specjalne (i prawdopodobnie Unicode?).

Czy nie ma prostego sposobu na osiągnięcie tego, nie szukając wszystkich specjalnych sekwencji i dostosowując liczbę moich postaci?