$ 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
Он идентичен: ncurses предоставляет интерфейс termcap (который меньше
использует), хотя базовая база данных терминала - terminfo .Как почти все приложения termcap, less
на самом деле не рассматривает синтаксис возвращаемых строк, заботится только о том, что оно может запрашивать md
(имя termcap, соответствующее terminfo жирный
).
less
имеет список этих имен termcap, который он считывает с помощью функции tgetstr
(termcap ...) при запуске и позволяет вам переопределить эти значения с помощью переменных среды, названных именем termcap. добавлен к LESS_TERMCAP_
.
Кстати, все команды tput
в вашем примере используют имена terminfo . Они просто используются для назначения строк, которые less
могут читать с помощью интерфейса termcap.
Дополнительная литература: