Usando awk :
awk 'NR==FNR{ (NR%2? keyword=$0: seen[keyword]=$0 ); next}
{ for (keys in seen)if ($0 ~ keys) {print $0, seen[keys] }
}' OFS='\n' file1 file2
A saída é:
This is a search tool
http://google.com
This is your mail account
https://gmail.com
explicação:
se for o primeiro arquivo NR==FNR e o número de registro / linha for igual NR%2 mantenha a linha $0 inteira na variável chamada keyword else adicione essa linha em uma matriz associada chamada seen com a palavra-chave encontrada como é o índice, depois leia a linha next .
... assim que o primeiro arquivo prosseguir, com for-loop estamos percorrendo a matriz vista e a variável keys usada para apontar para os elementos dos índices dessa matriz e verificando se keys pode corresponde nas linhas em file2 then print $0 que o sinal seguido pelo valor das suas chaves por seen[keys] separado por \n ewline.