Как использовать terminfo для установки цветов для man и less?

$ awk 'BEGIN { print "Min", "Max" } {a=$1; b=$2; getline; print ($1<a?$1:a), ($2>b?$2:b)}' data.in
Min Max
5500 5800
5600 5900
5900 6100
5800 6100
5800 6100
5700 6200

Код awk сохраняет текущие значения в первом и втором столбцах в переменные a и b соответственно. Затем он явно считывает следующую строку и выводит минимум a и новое значение в первом столбце вместе с максимумом b и новое значение во втором столбце.

($1 < a ? $1 : a) использует тернарный оператор ?: для сравнения и выбора значения в зависимости от результата этого сравнения.

Если вы хотите вывести вывод с разделителями табуляцией:

$ awk 'BEGIN {OFS="\t"; print "Min", "Max"} {a=$1; b=$2; getline; print ($1<a?$1:a), ($2>b?$2:b)}' data.in
Min     Max
5500    5800
5600    5900
5900    6100
5800    6100
5800    6100
5700    6200
0
13.04.2017, 15:36
1 ответ

Он идентичен: ncurses предоставляет интерфейс termcap (который меньше использует), хотя базовая база данных терминала - terminfo .Как почти все приложения termcap, less на самом деле не рассматривает синтаксис возвращаемых строк, заботится только о том, что оно может запрашивать md (имя termcap, соответствующее terminfo жирный ).

less имеет список этих имен termcap, который он считывает с помощью функции tgetstr (termcap ...) при запуске и позволяет вам переопределить эти значения с помощью переменных среды, названных именем termcap. добавлен к LESS_TERMCAP_ .

Кстати, все команды tput в вашем примере используют имена terminfo . Они просто используются для назначения строк, которые less могут читать с помощью интерфейса termcap.

Дополнительная литература:

3
28.01.2020, 02:25

Теги

Похожие вопросы