Encontre a diferença em dois arquivos

Encontre a diferença em dois arquivos

Eu tenho dois arquivos como abaixo: file1.txt

a 2019 15
b 2019 20

arquivo2.txt

a 2020 10
b 2019 15

Conteúdo de saída desejado do arquivo1.txt e diff bw terceiras colunas (do arquivo1 e arquivo2) em relação à primeira coluna do arquivo 1)

  a 2019 5
  b 2019 5

Responder1

Aqui está uma linha para fazer isso.

join file1.txt file2.txt | awk '{print $1,$2,$3-$5}'

O joincomando primeiro coloca os valores relevantes na mesma linha assim:

[gnubeard@mothership: ~/diffy]$ join file{1,2}.txt
a 2019 15 2020 10
b 2019 20 2019 15

Em seguida, awkimprime a primeira coluna ( $1, por exemplo a), a segunda coluna ( $2, por exemplo 2019) e o valor da 3ª coluna menos o valor da 5ª coluna ( $3-$5, por exemplo 15 - 10.)

O resultado parece corresponder à saída desejada:

[gnubeard@mothership: ~/diffy]$ join file{1,2}.txt | awk '{print $1,$2,$3-$5}'
a 2019 5
b 2019 5

informação relacionada