Você pode usar o awk para acompanhar os primeiros campos que já viu:
awk '!seen[$1]++' infile
Isso usa um hash, seen , digitado pelo primeiro campo ( $1 ). Verificamos se o valor pós-incrementado de seen[$1] é falso, ou seja, quando encontramos um novo valor, seen[$1]++ retorna 0 e !seen[$1]++ é verdadeiro; se já vimos o valor seen[$1]++ retorna algo maior que 0 e !seen[$1]++ é falso.
A operação padrão para quando a condição é verdadeira é imprimir a linha inteira ( { print $0 } ), que é o que queremos aqui, então não precisamos explicá-la.
Isso faz o mesmo, de maneira mais detalhada, mas mais fácil de entender:
awk 'seen[$1] == 0 {
++seen[$1]
print $0
}' infile