Aqui está uma amostra dos meus dados de entrada:
$9.99,Titan the Power,www.example.com,565654
$15.99,Conan The Barbarian,www.sure.com,565438
$1.99,Julia Cesar,www.bfg.com,69722
Eu escrevi este código para criar uma matriz a partir do arquivo de entrada e, em seguida, isolar o título com a variável $ f2.
#!/bin/bash
input="/home/test/Documents/Scripts/test.csv"
readarray myarray < $input
# Sends all of arrays into while loop which read each line by line
echo "${myarray[@]}" | while IFS=',' read -r f1 f2 f3 f4
do
# echo field 2 of each line
echo $f2 #This displays the title of each product (just for testing)
done
Agora, gostaria de comparar cada título ($ f2) com outro arquivo ($ csv2) para ver se há correspondências positivas.
csv2:
$1.99,The Power of Now,www.dvd.com,45674
$9.99,Titan the Power,www.otherwebsite.com,13357
$2.99,The incredible Hulk,www.purchase.com,13956
Eu sei que posso comparar arquivos com algo assim:
if [ "$f2" == "$csv2" ]; then
echo "match"
fi
O código acima combina com a coisa toda, e as linhas no csv2 provavelmente estão em uma ordem diferente e contêm outras coisas que eu não estou interessado. Eu quero que o script me informe apenas das linhas de $ f2 que tem títulos correspondentes no csv2. Então, a saída pode ser algo como isto se apenas o primeiro título estivesse presente em csv2:
EDIT: Gostaria que a linha original e a linha correspondente fossem exibidas como a saída para que eu pudesse compará-las, assim (note que outros valores de campo são ligeiramente diferentes entre $ input e & csv2, mas o título é o mesmo)
Matching lines:
$9.99,Titan the Power,www.otherwebsite.com,13357
$9.99,Titan the Power,www.example.com,565654