Isso faz o que você quer:
#!/bin/bash
while read line1; do
f21=$(echo $line1 | cut -d" " -f1)
f22=$(echo $line1 | cut -d" " -f2)
#echo "outside: $f21 -- $f22"
while read line2; do
f11=$(echo $line2 | cut -d" " -f1)
f12=$(echo $line2 | cut -d" " -f2)
#echo "inside: $f11 -- $f12"
if [ "$f22" == "$f12" ]; then
echo "$f21 is dependent on $f11 for file $f22"
fi
done < file1
done < file2
Exemplo
./parsy.bash
"BRGTEST-244" is dependent on "BRGTEST-242" for file a.txt
"BRGTEST-244" is dependent on "BRGTEST-240" for file a.txt
"BRGTEST-221" is dependent on "BRGTEST-219" for file e.txt
Como funciona
Eu deixei neste script 2 echo ...
comandos que você pode remover o comentário para ver visualmente como este script está percorrendo os outros 2 arquivos. Quando você descomente, verá esta saída:
$ ./parsy.bash | head -10
outside: "BRGTEST-244" -- a.txt
inside: "BRGTEST-242" -- a.txt
"BRGTEST-244" is dependent on "BRGTEST-242" for file a.txt
inside: "BRGTEST-240" -- a.txt
"BRGTEST-244" is dependent on "BRGTEST-240" for file a.txt
inside: "BRGTEST-219" -- e.txt
outside: "BRGTEST-244" -- b.txt
inside: "BRGTEST-242" -- a.txt
inside: "BRGTEST-240" -- a.txt
inside: "BRGTEST-219" -- e.txt
A chave para fazer isso é reconhecer que você precisa percorrer o conteúdo de file2
e ver se cada elemento corresponde com base nas condições de file1
. Para fazer isso, você precisa aninhar um loop dentro de outro loop.
Depois que você tiver essa estrutura e os dados analisados de acordo, uma simples declaração if
poderá ser usada para determinar se a segunda coluna de file1
e file2
é uma correspondência, se assim for, echo
do mensagem usando as peças que coletamos.