compara 2 arquivos csv e produz somente a diferença em variável

0

1.csv:

rundeck-read-only-iam-permissions,IAMReadOnlyAccess
citrix-xendesktop-ec2-provisioning",AmazonEC2FullAccess

2.csv:

 citrix-xendesktop-ec2-provisioning",AmazonEC2FullAAA
citrix-xendesktop-ec2-provisioning",AmazonS3FullAccess
rundeck-read-only-iam-permissions,IAMReadOnlyAccess
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq,qqqqqqqqqqqqqqqq

Observe que o pedido não é o mesmo

Eu quero comparar a diferença no arquivo 2.csv contra o arquivo 1.csv (e ordenar linhas em 2.csv para corresponder à ordem em 1.csv

Se não houver alteração, imprima: sem alterações se a linha no arquivo 1.csv for alterada print Linha que mudou + line-content, se a linha no arquivo 1.csv estiver faltando print "Linha que foi removida + line-content, se a linha no arquivo 1.csv for adicionada print "Linha foi adicionada" + line-content, até agora, eu tenho isso, ele imprime a saída desejada, mas é possível detectar o que foi adicionado / removido

      comm -1 -3 <(sort 1.csv) <(sort 2.csv)
citrix-xendesktop-ec2-provisioning",AmazonEC2FullAAA
citrix-xendesktop-ec2-provisioning",AmazonS3FullAccess
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq,qqqqqqqqqqqqqqqq
    
por Milister 09.03.2018 / 19:23

1 resposta

1

diff é provavelmente a ferramenta que você deseja. Aqui estão três arquivos de exemplo:

$ paste foo bar baz
aaa aaa aaa
aaa aaa aaz
aaa aaa aaa
$ if diff <(sort foo) <(sort bar); then echo "No differences"; fi
No differences
$ if diff <(sort foo) <(sort baz); then echo "No differences"; fi
3c3
< aaa
---
> aaz
    
por 09.03.2018 / 19:55