Script bash para extrair entradas do arquivo de log com base nas datas especificadas em outro arquivo?

Eu tenho um grande arquivo de log CSV delimitado por vírgula (> 50000 linhas, vamos chamá-lo file1.csv) que se parece com isso:

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...
...

Como você pode ver, há um campo no meio que é um carimbo de hora.

Eu também tenho um arquivo (vamos chamá-lo file2.csv) que possui uma pequena lista de horários:

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

O que eu gostaria de fazer é extrair apenas as linhas no arquivo1.csv que tenham os tempos especificados em arquivo2.csv.

Como faço isso com um script bash? Como file1.csv é bastante grande, a eficiência também seria uma preocupação. Eu já fiz scripts bash muito simples antes, mas realmente não sei como lidar com isso. Talvez alguma implementação do awk? Ou existe outra maneira?

P.S. Complicação 1: Eu verifiquei manualmente algumas das entradas nos dois arquivos para garantir que elas coincidissem. Só precisa haver uma maneira de remover (ou ignorar) o campo ".7" extra no final dos segundos ("SS") no arquivo1.csv.

P.P.S. Complicação 2: as entradas na lista1.csv são todas separadas por cerca de dois segundos. Às vezes, os carimbos de data e hora em list2.csv ficam entre duas das entradas em list1.csv! Existe uma maneira de encontrar a correspondência mais próxima nesse caso?

questionAnswers(3)

yourAnswerToTheQuestion