.png)
Как можно отфильтровать выходные данные «самообновляющейся» программы, 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/26313/colored-find-output
заменил find на top и немного повозился с оператором case, например, используя *bigbird*) в качестве case (мое имя пользователя). Скрипт был мной недоволен, но он выдал некоторый цветной вывод (вместе с сообщениями об ошибках, потому что я просто хакнул его и не закодировал должным образом). Похоже, это (по крайней мере, некоторое) доказательство концепции.