Bash скрипт для извлечения записей из файла журнала на основе дат, указанных в другом файле?

У меня есть довольно большой файл журнала CSV с разделителями-запятыми (> 50000 строк, назовем его file1.csv), который выглядит примерно так:

field1,field2,MM-DD-YY HH:MM:SS,field4,field5...
...
field1,field2,07-29-10 08:04:22.7,field4,field5...
field1,field2,07-29-10 08:04:24.7,field4,field5...
field1,field2,07-29-10 08:04:26.7,field4,field5...
field1,field2,07-29-10 08:04:28.7,field4,field5...
field1,field2,07-29-10 08:04:30.7,field4,field5...
...

Как вы можете видеть, в середине есть поле, которое является отметкой времени.

У меня также есть файл (назовем его file2.csv), который имеет короткий список раз:

timestamp,YYYY,MM,DD,HH,MM,SS
20100729180031,2010,07,29,18,00,31
20100729180039,2010,07,29,18,00,39
20100729180048,2010,07,29,18,00,48
20100729180056,2010,07,29,18,00,56
20100729180106,2010,07,29,18,01,06
20100729180115,2010,07,29,18,01,15

То, что я хотел бы сделать, это извлечь только те строки в file1.csv, которые имеют время, указанное в file2.csv.

Как мне сделать это с помощью скрипта bash? Поскольку file1.csv довольно большой, эффективность также может быть проблемой. Раньше я делал очень простые сценарии bash, но на самом деле не знаю, как с этим справиться. Возможно, какая-то реализация awk? Или есть другой способ?

Постскриптум Осложнение 1: я вручную проверил некоторые записи в обоих файлах, чтобы убедиться, что они совпадают, и они соответствуют. Просто нужно найти способ удалить (или проигнорировать) лишнее поле ".7" в конце секунд ("SS") в файле file1.csv.

P.P.S. Сложность 2: Оказывается, все записи в list1.csv разделены примерно на две секунды. Иногда метки времени в list2.csv попадают прямо между двумя записями в list1.csv! Есть ли способ найти наиболее близкое совпадение в этом случае?

Ответы на вопрос(3)

Ваш ответ на вопрос