Я знаю, что об этом спрашивали много раз ... но я не могу понять, как выполнить эту простую задачу. Данные не отсортированы.
Пример данных:
file_1
E-J1-N4
D-J5-N7
F-J1-N5
E-J5-N8
file_2
E-J5-N8
F-J5-N2
E-J1-N4
D-J5-N7
F-J1-N5
F-J5-N1
F-J5-N12
F-J5-N3
(Я отредактировал данные, чтобы лучше отразить мой фактический набор данных, что, кажется, вызывает проблемы, это Nxx, N12 здесь. Как они правильно знают, данные не легко сортируются, я знаю, что я мог бы отформатировать все свои числа, чтобы N01 N02 и т. Д. Но если бы я мог избежать этого, было бы неплохо.)
Так что мне просто нужно напечатать $ имена в file_2
, которых нет в file_1
grep -vf file_1 file_2
не работает.
for name in `file_1`; do grep -v $name file_2; done
дает мне тонну вывода ... (64 # имени с дубликатами). Цикл без -v flag
тоже не работает, он добавляет данные. (wc -l
не совпадает)
Так почему же grep -vf
не работает? Может ли это быть проблема сортировки? Почему цикл не работает и, если это так, как я могу изменить grep
в for loop
?
Как всегда, большое спасибо за поиск! Я открыт и для других решений (awk
, python
).