Использование GNU awk и 2D-массивов для устранения дубликатов в $1
:
$ awk '{
a[$2][$1] # hash to a. This weeds out duplicates in $1
}
END {
for(i in a) { # all groups
print i # output name
for(j in a[i]) # all group members
print j # output member
print "" # empty line after each group
}
}' file
Выход:
RGROUP-ENV0247
VZTFARATGOD11E024701
VZTFARATGJBSTE024701
VZTFARATGJBBCE024701
VZTFARATGJBFFE024701
RGROUP-GIMAGES
VZTFARATGJBBCEGIM01
VZTFARATGJBSTEGIM01
VZTFARATGJBFFEGIM01
Еще один для не-GNU awks. Использование match
для проверки наличия дубликатов в a[$2]
:
$ awk '
{
if(!match(a[$2],"(^|\n)" $1 "($|\n)"))
a[$2]=a[$2] "\n" $1
}
END {
for(i in a) {
print i a[i]
print ""
}
}
В конце будет лишняя пустая строка.