Это практически последний шаг в моем ответе на ваш предыдущий вопрос.
Ваше решение работает, если добавить -f
перед file1
в grep
:
$ cut -d, -f3 file2 | grep -v -f file1
tim.jones
bill.smith
С -f
, grep
будет искать шаблоны в file1
. Без него он будет просто использовать file1
в качестве буквального шаблона.
Возможно, вы также захотите использовать -F
, поскольку иначе точка в шаблоне будет интерпретироваться как "любой символ". И раз уж вы взялись за это, добавьте -x
, чтобы grep
выполнял проверку по всей строке (будет полезно, если у вас есть joe.smith
, который не должен соответствовать joe. smiths
):
$ cut -d, -f3 file2 | grep -v -F -x -f file1
Это требует, очевидно, отсутствия пробелов в конце строк в file1
(которые, похоже, есть в тексте вопроса).
Обратите внимание, что sed
не нужен, поскольку вывод cut
не содержит никаких "
. Кроме того, если бы вам нужно было удалить все "
, то tr -d '"'
был бы лучшим инструментом.