сгруппировать по одному столбцу и получить максимум по другому столбцу

Чтобы преобразовать «local.myvirtualmachine.com» в выбранный вами IP-адрес (192.168.1.13 в этом примере ), отредактируйте файл hosts (, обычно C :\Windows\System32\drivers \etc\Hosts )и поместите IP-адрес и имя хоста в конец файла:

192.168.1.13    local.myvirtualmachine.com

Кстати, это не имеет ничего общего с linux, centos или vmware.

0
12.09.2020, 15:08
3 ответа

Если вы соответствуете отображаемому порядку, то так

sort -t'|' -k1,1 -k2r file | awk -F'|' '!D[$1]++'

Если отображаемый порядок не имеет значения, то так

sort -r file | awk -F'|' '!D[$1]++'

Здесь команда AWK выводит только первые уникальные значения по первому полю, поэтому сортировкой добиваемся, чтобы искомое значение было наибольшим в группе

3
18.03.2021, 23:05

команда

for i in `awk -F "|" '{if(!seen[$1]++)print $1}' filename`; do awk -v i="$i" '$0 ~ i {x=$0}END{print x}' filename; done

выход

Manoj|2020-03-01 01:00:00
Rajesh|2020-05-01 01:00:00
Suresh|2020-04-01 01:00:00

Питон

 #!/usr/bin/python
import os
import re
z=open('outfile','w')
fin=[]
k=open('j.txt','r')
for m in k:
    d=m.split('|')[0]
    if d not in fin:
        fin.append(d.strip())

for p in fin:
    gg=[]
    g=re.compile(r'{0}'.format(p))
    y=open('j.txt','r')
    for b in y:
        if re.search(g,b):
            gg.append(b)
    z.write(gg[-1].strip())
    z.write('\n')

выход

Manoj|2020-03-01 01:00:00
Rajesh|2020-05-01 01:00:00
Suresh|2020-04-01 01:00:00
1
18.03.2021, 23:05

Вы можете попробовать это:

sort -t'|' -k2r file | sort -u -t'|' -k1,1

Выход:

Manoj|2020-03-01 01:00:00
Rajesh|2020-05-01 01:00:00
Suresh|2020-04-01 01:00:00
1
18.03.2021, 23:05

Теги

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