
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 join
comando 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, awk
imprime 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