Предполагая, что вы используете совместимый эмулятор vt100 ...
Эта команда будет хвост файл, труба его в grep
, прочитать его строки в то время, а затем отобразить его в обратном направлении, на верхней строке экран:
TOSL=$(tput sc;tput cup 0 0;tput rev;tput el)
FROMSL=$(tput sgr0; tput rc)
tail -f file | grep --line-buffered pattern | while read line
do
echo -n "$TOSL${line}$FROMSL"
done
Предполагается, что на вашем выходе появляется строка за раз. Если вы хотите больше одной строки, вы можете прочитать больше, чем строку, но вам нужно решить, как вы хотите буферировать вывод. Вы также можете использовать команду term term csr для настройки всей отдельной области прокрутки вместо одной строки.
Вот прокрутка версия области с областью состояния в десять линии в верхней части:
TOSL=$(tput sc; tput csr 0 10; tput cup 10 0;tput rev;tput el)
FROMSL=$(tput sgr0; tput rc;tput csr 10 50;tput rc)
tail -f file | grep --line-buffered pattern | while read line
do
echo -n "$TOSL${line}
$FROMSL"
done
Обратите внимание, что это не исключено, что ваш дисплей будет поврежден от времени до времени, как это может быть, что выход из основной оболочки и фоновая задача будут замешаны.
Не совсем то же самое, но [смотреть] (http: //linux.die.net/man/1/watch) приходит в голову как инструмент, который выводит вывод в верхней части экрана. – legoscia
Попробуйте запустить его через 'sed' и добавьте' \ r' в конец каждой строки. –
@MarkSetchell Вам нужно будет очистить экран/линии, или вы получите стандартную сортировку артефактов. Но это интересная идея. –