Этот ответ относится к GNU -для awk :он использует массивы -из -массивов
gawk '
NR == FNR { f1[$1][$2] = 1; next }
$1 in f1 {
for (val in f1[$1]) {
if (0+$2 <= 0+val && 0+val <= 0+$3) {
print $1, val, $4
}
}
}
' file1 file2
Бизнес 0+x
в условии if гарантирует, что ваши значения сравниваются как числа, а не строки. Это необходимо, потому что при сравнении строки "10" <= "23444" <= "30" равно true .
Я не знаю о вашем конкретном эмуляторе терминала, но в xterm
(, чей API скопировали многие эмуляторы терминала ), вы можете сделать:
printf '\e]11;%s\a' colorname
для установки цвета фона. Где название цвета может быть любой спецификацией цвета, поддерживаемой функцией библиотеки XParseColor()
X.
Тогда вы могли бы zsh
отправлять escape-последовательности с цветом, соответствующим положению солнца на небе, перед каждым приглашением с чем-то вроде:
MY_LONGITUDE=$(curl -s 'http://ip-api.com/line?fields=lon')
# sanitise to avoid command injection vulnerability
[[ $MY_LONGITUDE = (-|)<0-180>(.<->|) ]] || MY_LONGITUDE=0
zmodload zsh/datetime
settermbg() {
local sun_time distance_to_noon hue value chroma
(( sun_time = (${1-EPOCHSECONDS} + MY_LONGITUDE * 86400 / 360) % 86400 ))
(( distance_to_noon = (sun_time - 43200. ) / 43200 )) # between -1 and 1
(( hue = (distance_to_noon + 1) * 180 ))
(( value = 100 - distance_to_noon ** 2 * 50 ))
(( chroma = distance_to_noon ** 2 * 60 ))
printf '\e]11;TekHVC:%5g/%5g/%5g\a' $hue $value $chroma
}
precmd_functions+=(settermbg)
Здесь используется цветовая спецификация TekHVC:hue/value/chroma
со значениями, вычисленными на основе расстояния до полудня (солнечного времени ), с самым ярким и белым фоном, когда солнце находится в самой высокой точке неба.
Здесь ваша долгота (, используемая для определения того, когда солнце находится высоко в небе, )определяется на основе вашего IP-адреса с помощью онлайн-сервиса, предоставляемого ip-api.com
. Это не всегда может дать вам правильное значение. Вместо этого вы можете жестко закодировать его, если вы не путешествуете.