Сравните 2 текстовых файла и создайте третий текстовый файл, в котором строки отформатированы с помощью общих строк (дополнение смежных строк)

Сравните 2 текстовых файла и создайте третий текстовый файл, в котором строки отформатированы с помощью общих строк (дополнение смежных строк)

У меня есть 2 текстовых файла.
текст1.txt:
Первый структурирован таким образом

<title>Developing a wireless </title> ##www.google.com##
<title>Webdriver Actionchains </title> ##www.alfa.com##
<title>Populating a DataGridViewComboBox </title> ##www.beta.com##

текст2.txt
Второй текстовый файл имеет следующую структуру:

hhppKJt.png ##www.beta.com##
MchrzjL.zip ##www.google.com##

Я спрашиваю, есть ли способ создать новыйтретийтекстовый файл, но структурированный следующим образом

<title>Developing a wireless </title> ##www.google.com## MchrzjL.zip
<title>Populating a DataGridViewComboBox </title> ##www.beta.com## hhppKJt.png
<title>Webdriver Actionchains </title> ##www.alfa.com##

Другими словами, скрипт (powershell, batch или какая-то программа сравнения) должен проверить, есть ли общая строка между двумя текстовыми файлами, и после их сканирования он должен объединить эти конкретные строки в новые строки.
Например, в обоихпервыйивторойтекстовый файл содержит эти общие строки

##www.beta.com##
##www.google.com##

если это правда, то вам следует присоединиться к этим строкам

hhppKJt.png
MchrzjL.zip

обогащение относительных строк первого текстового файла таким образом

<title>Developing a wireless </title> ##www.google.com## MchrzjL.zip
<title>Populating a DataGridViewComboBox </title> ##www.beta.com## hhppKJt.png
<title>Webdriver Actionchains </title> ##www.alfa.com##

решение1

#! /usr/bin/awk -f

BEGIN {
  C=0;
}
{
  if (ARGIND == 1) {
     X = $NF
     T0[$NF] = C++
     $NF = ""
     T1[X] = $0
  } else {
     X = $NF
     T0[$NF] = C++
     $NF = ""
     T2[X] = $0
  }
}

END {
  for (X in T0) {
    print T1[X],X,T2[X]
  }
}

Поместите все вышеперечисленное в скрипт, например join.sh, и сделайте этот скрипт исполняемым. Вызовите скрипт с двумя именами файлов в качестве параметров, например:

./join.sh text1.txt text2.sh

Попытка учесть соотношение m:n:

#! /usr/bin/awk  -f

BEGIN {
  OFS=FS=";"
  C=0;
}
{
  if (ARGIND == 1) {
     X = $NF
     T0[$NF] = C++
     $NF = ""
     if (T1[X]) {
        T1[X] = T1[X] $0
     } else {
        T1[X] = $0
     }
  } else {
     X = $NF
     T0[$NF] = C++
     $NF = ""
     if (T2[X]) {
        T2[X] = T2[X] $0
     } else {
        T2[X] = $0
     }
  }
}

END {
  for (X in T0) {
    # concatenate T1[X] and X, since T1[X] ends with ";"
    print T1[X]  X, T2[X]
  }
}

Связанный контент