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.