Awk
abordagem:
awk 'BEGIN{ head = "List for"; tail = "End for list for" }
!a[$1]++ {
if (NR > 1) print tail, name ORS;
print head, $1;
name = $1
}
END{ print tail, name }1' file
A saída:
List for Adam
Adam 111
Adam 222
Adam 333
End for list for Adam
List for Tom
Tom 111
Tom 222
Tom 333
End for list for Tom
List for Dick
Dick 111
Dick 222
Dick 333
End for list for Dick