Encuentra la diferencia en dos archivos.

Encuentra la diferencia en dos archivos.

Tengo dos archivos como el siguiente: file1.txt

a 2019 15
b 2019 20

archivo2.txt

a 2020 10
b 2019 15

Contenido de salida deseado de file1.txt y diff bw terceras columnas (de file1 y file2) con respecto a la primera columna del archivo 1)

  a 2019 5
  b 2019 5

Respuesta1

Aquí hay una sola línea para hacer esto.

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

El joincomando primero coloca los valores relevantes en la misma línea, así:

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

Luego, awkimprime la primera columna ( $1, por ejemplo a), la segunda columna ( $2, por ejemplo 2019), y el valor de la tercera columna menos el valor de la quinta columna ( $3-$5, por ejemplo 15 - 10).

El resultado parece coincidir con el resultado deseado:

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

información relacionada