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