Eu recomendaria uma solução Python (não sei o que você está usando atualmente):
import re
re_find_data = re.compile(r'^(\d+)\s+(\d+)\s+(\S+)\s+(\d+)\s+(\S+)\s+(\d+)$')
for line in open(r'/path/to/file'):
for match in re_find_date.findall(line):
print(match)
# Do something with 'match'
# You can index the 'match' tuple like so:
print(match[2])
# Print 3rd part (name)
Em relação a grep
Não tenho certeza se grep pode ser usado neste caso. Não tem a capacidade de imprimir grupos numerados específicos, que é o que você precisa (eu acredito). Eu estaria interessado em saber se o seu professor (ou qualquer outra pessoa) tem uma solução com grep puro.
Este Regex deve funcionar, mas você precisa extrair os campos que deseja dos grupos numerados (demonstrado no exemplo do Python):
(\d+)\s+(\d+)\s+(\S+)\s+(\d+)\s+(\S+)\s+(\d+)
grep não é a ferramenta certa. Um Regex é, mas sob uma implementação diferente (olá, Python!).