Вы можете пропустить первую запись (строку), добавив правило к блоку:
НО > 1 {
если (макс.<($2)){
макс=$2;
max_breed=$1;
}
}
Однако стоит попытаться понять, почему вы получаете тот результат, который получаете, когда не исключить первую строку - потому что:
когда NR==1
, значение Максимум
является 0
(числовой - присваивается в НАЧИНАТЬ
блок), но значение $2
является Голоса
(это строка). Итак, выражение макс<($2)
обращает Максимум
к строке и выполняет лексикографическое сравнение. Если 0
меньше чем В
в вашей локали, тогда результат ИСТИНА, и Максимум
назначается строковое значение Голоса
для последующих строк, $2
является числовым, но Максимум
теперь это строка, поэтому $2
преобразуется в строку, и снова сравнение является лексикографическим. Предполагая В
имеет больший лексикографический вес, чем любая из цифр 0
через 9
, В
всегда побеждает.
Кроме того, ваш шебанг выглядит недействительным - вероятно, он должен быть
#!/usr/bin/awk -f
или же
#!/bin/awk -f
в зависимости от вашей версии Ubuntu. Кроме того, такие задания, как max_breed=$1
не имеют особого смысла в НАЧИНАТЬ
блок, так как он выполняется перед все записи обработаны.