2 つのテキスト ファイルを比較し、行が共通の文字列でフォーマットされた 3 番目のテキスト ファイルを作成します (隣接文字列補完)

2 つのテキスト ファイルを比較し、行が共通の文字列でフォーマットされた 3 番目のテキスト ファイルを作成します (隣接文字列補完)

テキストファイルが 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
2番目のテキストファイルは次のように構成されています

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、バッチ、または比較プログラム)は、2つのテキストファイルの間に共通の文字列があるかどうかを確認し、それらをスキャンした後、それらの特定の文字列を新しい行に連結する必要があります。
たとえば、初めそして2番テキストファイルにはこれらの共通文字列があります

##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) に入れて、このスクリプトを実行可能にします。2 つのファイル名をパラメータとしてスクリプトを呼び出します。例:

./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]
  }
}

関連情報