Нет вызова метода, если это то, о чем вы просите. С небольшими исследованиями, я полагаю, вы могли бы написать свои собственные. Конкретный экземпляр имеет фиксированный размер, полученный из числа ссылок и примитивных значений, а также учетных данных экземпляра. Вы просто будете ходить по графу объектов. Чем меньше типов строк, тем легче.
Если это слишком медленно или просто больше проблем, чем это стоит, всегда есть хорошее старомодное правило подсчета строк.
Еще один awk:
$ awk '!($1 in a)||a[$1]>$2{a[$1]=$2}END{for(i in a)print i,a[i]}' file
Вывод:
May -0.45623
Peter 0.08234
Joe 0.88765
Wilson -0.88341
Объяснено:
$ awk '
!($1 in a) || a[$1]>$2 { # if the key (name) has not yet been seen or its value is smaller
a[$1]=$2 # store it to hash a
}
END { # after processing all the records
for(i in a) # go thru the stored keys
print i,a[i] # print them and their value
}' file
Без бесполезного cat
или бесполезного sort
и с исправленной ошибкой,
awk '!($1 in min) || $2<min[$1] { min[$1] = $2 }
END { for (i in min) print i,min[i] }' aaa.txt
Ошибка в том, что неинициализированные элементы массива по умолчанию обнуляются, поэтому вы теряли те, которые имели положительный минимум.
Я сложил это для разборчивости; при желании вы можете удалить встроенную новую строку.
Если важно сохранить порядок, вы можете добавить второй массив, который отслеживает порядок появления ключей.
awk '!($1 in min) { k[++i] = $1; min[$1] = $2}
$2<min[$1] { min[$1] = $2 }
END { for (j=1; j<=i; ++j) print k[j],min[k[j]] }' aaa.txt
Еще один способ, если порядок не является проблемой:
sort -k 1,1 -k 2n,2 file | awk '!_[$1]++'