Eu tenho dois arquivos da seguinte forma:
file1.csv
+------------+----------+--------+---------+
| Account_ID | Asset_ID | LOT_ID | FLAG_F1 |
+------------+----------+--------+---------+
| 10000 | 20000 | 30000 | Y |
| 10001 | 20001 | 30001 | N |
| 10002 | 20002 | 30002 | Y |
| 10003 | 20003 | 30003 | N |
| 10004 | 20004 | 30004 | Y |
| 10005 | 20005 | 30005 | N |
| 10006 | 20006 | 30006 | Y |
+------------+----------+--------+---------+
file2.csv
+------------+----------+--------+---------+-----+-----+
| Account_ID | Asset_ID | LOT_ID | FLAG_F2 | XYZ | ABC |
+------------+----------+--------+---------+-----+-----+
| 10000 | 20000 | 30000 | Y | XYZ | ABC |
| 10001 | 20001 | 30001 | Y | XYZ | ABC |
| 10002 | 20002 | 30002 | Y | XYZ | ABC |
| 10003 | 20003 | 30003 | Y | XYZ | ABC |
| 10004 | 20004 | 30004 | Y | XYZ | ABC |
| 10005 | 20005 | 30005 | Y | XYZ | ABC |
| 10006 | 20006 | 30006 | Y | XYZ | ABC |
| 10006 | 20006 | 30006 | Y | XYZ | ABC |
| 10006 | 20006 | 30006 | Y | XYZ | ABC |
+------------+----------+--------+---------+-----+-----+
Estou tentando obter a seguinte saída :
+------------+----------+--------+---------+-----+-----+---------+
| Account_ID | Asset_ID | LOT_ID | FLAG_F2 | XYZ | ABC | FLAG_F1 |
+------------+----------+--------+---------+-----+-----+---------+
| 10000 | 20000 | 30000 | Y | XYZ | ABC | Y |
| 10001 | 20001 | 30001 | Y | XYZ | ABC | N |
| 10002 | 20002 | 30002 | Y | XYZ | ABC | Y |
| 10003 | 20003 | 30003 | Y | XYZ | ABC | N |
| 10004 | 20004 | 30004 | Y | XYZ | ABC | Y |
| 10005 | 20005 | 30005 | Y | XYZ | ABC | N |
| 10006 | 20006 | 30006 | Y | XYZ | ABC | Y |
| 10006 | 20006 | 30006 | Y | XYZ | ABC | Y |
| 10007 | 20007 | 30006 | Y | XYZ | ABC | |
| 10006 | 20003 | 30006 | Y | XYZ | ABC | |
+------------+----------+--------+---------+-----+-----+---------+
Na saída acima, estou adicionando FLAG_F1
de file1.csv
na file2.csv
na condição de Account_ID,Asset_ID,
e LOT_ID
valores iguais em file1.csv
e file2.csv
. Se a condição falhar, pode ficar em branco.
Eu tentei o seguinte código, que é usado pelo dois arquivos .csv compare usando o awk
awk -F',' '
FNR == NR {
if (FNR == 1) {next}
a[$1] = $2;
b[$1] = $3;
next;
}
{
if (FNR == 1) {print;next}
if (a[$1] == $2) {
print $1,$2,$3,b[$1];
}
else {
print $1,a[$1],b[$1],b[$1];
}
}
' OFS=',' file1.csv file2.csv
É melhor se alguém me explicar o código acima, linha por linha.