Este é praticamente o último passo da minha resposta à sua pergunta anterior .
Sua solução funciona, se você adicionar -f na frente de file1 no grep :
$ cut -d, -f3 file2 | grep -v -f file1
tim.jones
bill.smith
Com o -f , grep procurará em file1 pelos padrões. Sem isso, ele simplesmente usará file1 como o padrão literal.
Você também pode querer usar -F , caso contrário, o ponto no padrão será interpretado como "qualquer caractere". E enquanto você está nisso, coloque -x também para que grep realize a correspondência em toda a linha (será útil se você tiver um joe.smith que não corresponda a joe.smiths ):
$ cut -d, -f3 file2 | grep -v -F -x -f file1
Isso requer, obviamente, que não haja espaços à direita no final das linhas em file1 (o que parece estar no texto da pergunta).
Observe que sed não é necessário, pois a saída de cut não contém " . Além disso, se você tivesse necessário para remover todos os " , então tr -d '"' teria sido uma ferramenta melhor.