Вывести всю строку один раз для каждого уникального значения столбца в соответствии со значением второго столбца

Мой вопрос очень похож на этот ранее заданный вопрос:

Вывод всей строки один раз для каждого уникального значения столбца (Bash)

но с одним существенным отличием. В его примере:

pep> AEYTCVAETK     2   genes ADUm.1024,ADUm.5198,ADUm.750
pep> AIQLTGK        1   genes ADUm.1999,ADUm.3560
pep> AIQLTGK        8   genes ADUm.1999,ADUm.3560
pep> KHEPPTEVDIEGR  5   genes ADUm.367
pep> VSSILEDKTT     9   genes ADUm.1192,ADUm.2731
pep> AIQLTGK        10  genes ADUm.1999,ADUm.3560
pep> VSSILEDKILSR   3   genes ADUm.2146,ADUm.5750
pep> VSSILEDKILSR   2   genes ADUm.2146,ADUm.5750

Цель состояла в том, чтобы «напечатать строку для каждого отдельного значения пептидов в столбце 2, что означает, что приведенный выше ввод будет выглядеть так:»

pep> AEYTCVAETK     2   genes ADUm.1024,ADUm.5198,ADUm.750
pep> AIQLTGK        1   genes ADUm.1999,ADUm.3560
pep> KHEPPTEVDIEGR  5   genes ADUm.367
pep> VSSILEDKTT     9   genes ADUm.1192,ADUm.2731
pep> VSSILEDKILSR   3   genes ADUm.2146,ADUm.5750

Но я хотел бы напечатать одну строку для каждой уникальной записи в столбце 2, однако я хотел бы напечатать строку с наибольшим значением в столбце 3, поэтому вывод будет выглядеть так:

pep> AEYTCVAETK     2   genes ADUm.1024,ADUm.5198,ADUm.750
pep> AIQLTGK        10  genes ADUm.1999,ADUm.3560
pep> KHEPPTEVDIEGR  5   genes ADUm.367
pep> VSSILEDKTT     9   genes ADUm.1192,ADUm.2731
pep> VSSILEDKILSR   3   genes ADUm.2146,ADUm.5750

Заранее спасибо.


person acalcino    schedule 06.03.2014    source источник
comment
Какая проблема у вас при этом? Пожалуйста, покажите, что вы пробовали, чтобы мы могли помочь вам исправить это. SO не является бесплатной службой кодирования.   -  person Barmar    schedule 06.03.2014


Ответы (1)


Вот один из способов сделать это:

awk '
($2 in seen) {
    line[$2] = ($3 > seen[$2]) ? $0 : line[$2];
    next
}
{
    seen[$2] = $3;
    line[$2] = $0
}
END {
    for(x in line) print line[x]
}' file

Вывод:

pep> AIQLTGK        10  genes ADUm.1999,ADUm.3560
pep> AEYTCVAETK     2   genes ADUm.1024,ADUm.5198,ADUm.750
pep> VSSILEDKILSR   3   genes ADUm.2146,ADUm.5750
pep> VSSILEDKTT     9   genes ADUm.1192,ADUm.2731
pep> KHEPPTEVDIEGR  5   genes ADUm.367
person jaypal singh    schedule 06.03.2014