Фильтр интерактивного вывода (вверху)

Фильтр интерактивного вывода (вверху)

Как можно отфильтровать выходные данные «самообновляющейся» программы, topсохранив при этом ее функциональность?

Например, я хочу выделить свое имя пользователя в topвыводе . Моя идея заключается в том, чтобы использовать что-то вроде этого:

top | grep --color -E "user|$"

Это работает, поскольку имя пользователя действительно подсвечивается, однако курсор находится не там, где он должен быть в верхней части программы, и последняя строка отсутствует.

У меня были похожие результаты с другими интерактивными программами оболочки, такими как wget (попытка выделить полосу прогресса с помощью escape-последовательностей) и rsync. Как правильно фильтровать вывод из интерактивной программы?

решение1

Не знаю, сработает ли это (никогда этим не пользовался).

Попробуйте grc.

http://korpus.juls.savba.sk/~garabik/software/grc.html

Я видел это в этом посте, где они заставили это работать с tail -f. Там также упоминается ряд других возможных вещей, которые можно попробовать.

https://unix.stackexchange.com/questions/8414/how-to-have-tail-f-show-colored-output?newsletter=1&nlcode=17737|321c

НТН

Нашел немного похожий пример кода на https://unix.stackexchange.com/questions/26313/colored-find-output

заменил find на top и немного повозился с оператором case, например, используя *bigbird*) в качестве case (мое имя пользователя). Скрипт был мной недоволен, но он выдал некоторый цветной вывод (вместе с сообщениями об ошибках, потому что я просто хакнул его и не закодировал должным образом). Похоже, это (по крайней мере, некоторое) доказательство концепции.

Связанный контент