У меня есть два файла CSV в следующих форматах:
==
FirstName | LastName | Email
Steven | Smith | stevesmith1@gmail.com
Jane | Brown | jb155@yahoo.com
Paul | Gibson | paulgibbs@outlook.com
==
ID | FirstName | LastName | IncompleteEmail
1028332982 | Steven | Smith | s*****1@g*l.com
1028820233 | Jane | Brown | j******n@yahoo.com
934943823 | Paul | Gibson | p*****s@h****l.com
==
Я бы хотел сопоставить два CSV-файла на этой основе - если FirstName
и LastName
совпадают, Email
в первом CSV соответствует шаблону IncompleteEmail
во втором CSV должен быть создан вывод, содержащий ID | Email
В приведенном выше примере результат будет выглядеть следующим образом:
ID | Email
1028332982 | stevesmith1@gmail.com
Причина этого в том, что «Стив» и «Смит» одинаковы в обоих CSV, а шаблон IncompleteEmail
соответствует электронной почте. Другие входные данные не совпадают, так как шаблон IncompleteEmail
не соответствует электронной почте.
Ранее я использовал сценарий join
(например, join -i -t '|' -j 1 -o 2.2,2.3 1.txt 2.txt > out.txt
) для обработки похожих файлов, но я не знаю, как изменить сценарий объединения для работы с шаблоном вместо точного соответствия. Я знаю, что подобный подход возможен и в AWK, но я открыт для предложений.
Нужно что-то, что может работать с большими входами (два CSV по 10 миллионов + строк в каждом).
Заранее спасибо.