объединение двух файлов в соответствии с указанной строкой

У меня file1.txt выглядит следующим образом:

search http://google.com mail https://gmail.com 

file2.txt выглядит так:

 This is a search tool This is your mail account 

Мне нужно объединить их так, что file1.txt будет выглядеть так:

 This is a search tool http://google.com This is your mail account https://gmail.com 

Использование 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 

Выход:

 This is a search tool http://google.com This is your mail account https://gmail.com 

объяснение:

если это первый файл NR==FNR а номер записи / строки равен даже NR%2 поместите всю строку $0 в переменную с именем keyword иначе добавьте эту строку в связанный массив с именем, seen с ключевым словом, найденным в качестве его индекса, а затем прочитайте next строку ,

… как только первый файл продолжается, с помощью for-loop мы просматриваем видимый массив и переменную keys используемую для указания на элементы индексов этого массива, и проверяем, могут ли эти keys совпадать в строках в file2 затем print $0 этот палец, за которым следуют его ключи ‘значение по видимым seen[keys] отделенным \n ewline.

Попробуйте также

 awk ' NR == FNR {T[$0] next } {for (t in T) if (t ~ $1) $1 = t } 1 ' file2 file1 This is a search tool http://google.com This is your mail account https://gmail.com