compara dois arquivos csv e acrescenta o resultado em uma nova coluna

1

Eu tenho dois arquivos csv, o arquivo atual New.csv e a versão anterior Old.csv. Aqui está o que parecem:

old.csv

name,age,lastname,film,song,mother,fadher,col0,col1,col3,col4,col5,col6,col7,a,b,z,t
jay,23,,stgh,tt,,,,,,,,,,,
Ann,32,,,,,,,,,,,,,,,,
Chris,43,titanic,hi,,,,,,,

new.csv

name,age,lastname,film,song,mother,fadher,col0,col1,col3,col4,col5,col6,col7,a,b,z,t
jay,23,,stgh,tt,,,,,,,,,,,
alex,22,,hello,,,,,,,,,,,jed,,,

Eu quero compará-los usando comandos do Linux e encontrei um resultado como este:

status,name,age,lastname,film,song,mother,fadher,col0,col1,col3,col4,col5,col6,col7,a,b,z,t
Common,jay,23,,stgh,tt,,,,,,,,,,,
New,alex,22,,hello,,,,,,,,,,,jed,,,
Old,Ann,32,,,,,,,,,,,,,,,,
Old,Chris,43,titanic,hi,,,,,,,
    
por Amira Ben Ayed 12.04.2018 / 09:36

1 resposta

2

Usando awk de uma forma:

awk 'NR==FNR && NR>1{seen[$0]++; next} 
     NR==1{ print "Status," $0}
     FNR!=1{print ($0 in seen)?"Common," $0:"New," $0;delete seen[$0];}
END{for (x in seen) print "Old," x}' old.csv new.csv

A saída:

Status,name,age,lastname,film,song,mother,fadher,col0,col1,col3,col4,col5,col6,col7,a,b,z,t
Common,jay,23,,stgh,tt,,,,,,,,,,,
New,alex,22,,hello,,,,,,,,,,,jed,,,
Old,Chris,43,titanic,hi,,,,,,,
Old,Ann,32,,,,,,,,,,,,,,,,
    
por 12.04.2018 / 09:49