Потому что у вас есть next
в блоке с условием FILENAME != f && $2 ~ /[0-9]+/
. Эта строка thr
не соответствует этому условию, поэтому попадает в блок «каждая строка». Там $1 нет в a
, поэтому вводится блок else
и печатается строка.
Я уверен, что вы смогли бы понять это сами, если бы просто использовали разумные отступы, чтобы вы действительно видели свою программу:
awk -F':' -vf=main '
FILENAME == f {m = $0}
FILENAME != f && $2 ~ /[0-9]+/ {
if ($2 ~ /[0-9]+/ && (!($1 in a) || $3 > a[$1])) {
a[$1] = $3
b[$1] = $0
}
next
}
{
if (($1 in a) && (a[$1] > $3)) {
print b[$1]":updated:"m
delete b[$1]
} else
print
}
' file* main
Терминалы на основе libvte не поддерживают лигатуры. Наhttps://github.com/tonsky/FiraCode#terminal-compatibility-list
есть хороший список поддерживаемых терминалов и редакторов.