У меня есть 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]
}
}