Вы можете использовать
grep -vFf file2 file1
Кроме того, grep -vf file2 file1
также будет работать, но в случае, если строки file2
содержат *
или [
, которые должны быть прочитаны как буквенные символы, вы можете столкнуться с проблемами, поскольку их следует экранировать. F
заставляет grep
рассматривать эти строки как фиксированные.
ПРИМЕЧАНИЯ
-v
: инвертировать совпадение.
-f file
: взять регулярные выражения из файла.
-F
: интерпретировать шаблон как список фиксированных строк (вместо регулярных выражений), разделенных символами новой строки, любой из которых должен соответствовать.
Таким образом, он считывает регулярные выражения из file2
и применяет их к file1
, и как только находит совпадение, эта строка не выводится из-за инвертированного поиска. Этого достаточно, потому что только первый столбец содержит буквенно-цифровые символы, остальные содержат только числовые данные.
Почему ваша команда не сработала
Опция -x
(сокращение от --line-regexp
) означает Select only those matches that exactly match the whole line
.
Также, см. Больше о grep
опциях в grep
документации .