Tengo 2 archivos de texto.
texto1.txt:
Primero está estructurado de esta manera
<title>Developing a wireless </title> ##www.google.com##
<title>Webdriver Actionchains </title> ##www.alfa.com##
<title>Populating a DataGridViewComboBox </title> ##www.beta.com##
texto2.txt
El segundo archivo de texto está estructurado así.
hhppKJt.png ##www.beta.com##
MchrzjL.zip ##www.google.com##
Pregunto si hay alguna manera de crear un nuevoterceroarchivo de texto pero estructurado así
<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##
En otras palabras, el script (powershell, lote o algún programa de comparación) debe verificar si hay una cadena común entre dos archivos de texto y, después de escanearlos, debe concatenar esas cadenas específicas en nuevas filas.
Por ejemplo, tanto en elprimeroysegundoarchivo de texto hay estas cadenas comunes
##www.beta.com##
##www.google.com##
Si esto es cierto, entonces deberías unir estas cadenas.
hhppKJt.png
MchrzjL.zip
enriquecer las filas relativas del primer archivo de texto de esta manera
<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##
Respuesta1
#! /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]
}
}
Ponga todo lo anterior en un script, por ejemplo. join.sh y haga que este script sea ejecutable. Llame al script con dos nombres de archivo como parámetros, por ejemplo:
./join.sh text1.txt text2.sh
Tratando de atender a las proporciones 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]
}
}