
У меня есть программа, которая выводит следующие результаты:
Pack 1:
TimeStamp : 1001302
Data : [1 21 343 2 34 ]
Found : Yes
Pack 2:
TimeStamp : 1001303
Data : [1 21 344 2 35 ]
Found : Yes
Pack 3:
TimeStamp : 1001304
Data : [1 21 346 2 36 ]
Found : Yes
и так далее... повторяя
Вывод на терминал создается с помощью C++ fprintf
с помощью "\n"
. Мне нужно, чтобы мой терминал показывал фиксированную позицию пакетов (на той же строке каждый раз, когда печатается новый пакет), в то время как данные внутри скобок изменяются.
Я не против одновременного наличия нескольких выходных пакетов на терминале, но мне нужно, чтобы они были зафиксированы на месте и не прыгали вверх и вниз по строкам, чтобы я мог читать их во время работы программы.
Есть ли способ обеспечить это в терминале?
Я попробовал следующие решения:
- замедление печати на терминале:
./out | watch -n 1 cat
Это не решает проблему. Я не хочу, чтобы поток данных на моем экране был медленнее, я не хочу, чтобы они двигались вверх и вниз по строкам на терминале. Это заставляет их двигаться, но медленнее.
- использование grep для сопоставления
flag
и выводаN
строк после:./out | grep -AN flag
Это тоже не решает проблему, я предполагаю, что он добавляет строки из нижней части терминала, а текст выталкивает наверх и делает это по одной строке за раз. И в итоге вы видите на экране какую-то мешанину.
Спасибо!