3

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

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

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

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

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

1 ответ1

0

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

Попробуйте 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 (мое имя пользователя). Скрипт меня не удовлетворил, но он дал какой-то раскрашенный вывод (наряду с сообщениями об ошибках, потому что я просто взломал его и не совсем правильно его кодировал). Это, кажется, (по крайней мере, некоторое) доказательство концепции.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .