Получите максимальную сумму для файла на 2 ключах

Вы могли сделать:

trap '__=$_; timer_start; : "$__"' DEBUG
4
15.07.2014, 05:54
2 ответа
[

] Кажется, что вы хотите получить только первое событие каждого [] ключа1 []. [

] [

]Это оттянет ожидаемый результат:[

] [
$ awk '!($1 in a){print;a[$1]}' file
a1    2    l1
a2    2    l2
a3    2.5  l3
] [

][]Обновление[][

] [

]Если вы хотите, чтобы []ключ1[] []или [] []ключ3[] происходил только один раз:[

] [
$ awk '!($1 in a) && !($3 in a){print;a[$1];a[$3]}' 1.txt 
a1    2    l1
a2    2    l2
a3    2.5  l3
] [

][]Обновление 2[][

] [

]После прочтения вашего комментария, я думаю, следующее решение:[

] [
$ sort -rnk2 file | awk '!a[$1]++' | awk '!a[$3]++'
a1 14.0    l6
a3 13.3    l8
a2 11.1    l2
a4 1.7     l1
]
3
27.01.2020, 20:52
[

] Вы можете просто добавить тест к вашему скрипту на perl. Используйте другой хэш, ключи которого являются 3-м полем, и печатайте каждую строку только в том случае, если это поле еще не было видно:[

] [
$ sort -nk2 file | perl -ane '$k{$F[$1]}=$_ unless $s{$F[2]}++>0; 
                              END{print "$k{$_}" for keys(%k)}'
a3    2.5  l3
a2    2    l2
a1    2    l1
] [

]NOTE: Это выведет и заголовок, но так же как и ваш подход, и так как вы не показываете его в выводе, я предполагаю, что заголовок на самом деле не является частью файла. [

]
3
27.01.2020, 20:52

Теги

Похожие вопросы