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.