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

У меня 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 

2 Solutions collect form web for “объединение двух файлов в соответствии с указанной строкой”

Использование 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 
  • Что возвращает cut, если указанное поле не существует?
  • REGEX поиск и замена с помощью sed или другой команды
  • Как переместить строку из файла в другой файл на основе сопоставления с образцом?
  • grep'ping файлы для нескольких строк (не в одной строке)
  • Заменить строку перед определенной строкой
  • Пробуждение к среднему столбцу на основе ключа во 2-м столбце
  • Выберите линии на основе линий над ними
  • Отфильтровать 2-й вхождение текста между цитатами с помощью sed?
  • Рекурсивно найти и заменить содержимое одного файла, используя ключ из другого файла
  • Как переместить каждую группу строк в новый столбец?
  • Объединить несколько строк в строку со специальными символами
  • Linux и Unix - лучшая ОС в мире.