uniq
имеет опцию -f
, чтобы игнорировать количество полей, разделенных пробелами, поэтому мы можем отсортировать по третьему полю и затем игнорировать первые два:
$ sort -k 3,3 infile | uniq -f 2
Company A <companya@companya.com>
Company B <companyb@companyb.com>
Company C <companyc@companyc.com>
firstname lastname <firstname@gmail.com>
Joe lastnanme <joe@gmail.com>
Однако это нене очень надежный: он разрывается, как только перед адресом электронной почты нет ровно двух полей, так как сортировка будет в неправильном поле и uniq
будет сравнивать неправильные поля.
ПроверкаОтвет karakfa, чтобы увидеть, как uniq
здесь даже не требуется.
В качестве альтернативы, просто проверяя уникальность последнего поля:
awk '!e[$NF] {print; ++e[$NF]}' infile
или даже корочеКража из каракфа, awk '!e[$NF]++' infile