Eu não vejo por que você gostaria de fazer isso em um único comando awk , o que você tem parece perfeitamente bem. De qualquer forma, aqui está uma maneira:
$ awk -F, '(max[$18]<$21 || max[$18]==""){max[$18]=$21;line[$18]=$0}
END{for(key in line){print line[key]}}' file
6598,6598,0,1,,1,0,1,1,0,0,0,1,0,0,0,0,1390,1390,,0.730000,
1297,1297,0,0,,0,0,1,0,0,0,0,0,1,0,1,0,1707,1707,,7.000000,
6553,6553,0,1,,1,0,1,1,0,0,0,0,1,0,1,0,4326,4326,,9.000000,
A ideia é muito simples. Temos duas matrizes, max tem $18 como uma chave e $21 como um valor. Para cada linha, se o valor salvo para $18 for menor que $21 ou se não houver nenhum valor armazenado para $18 , então armazenamos a linha atual ( $0 ) como o valor para $18 na matriz %código%. Finalmente, no bloco line , imprimimos o array END{} .
Observe que o script acima trata line como uma string. Portanto, $18 e 001 serão considerados sequências diferentes.