2 votes

concaténer deux fichiers côte à côte, ajouter la différence entre les champs, et imprimer sous forme de tableau

Considérons que j'ai deux fichiers comme ci-dessous : Je dois concaténer et trouver la différence dans le nouveau fichier.

a.txt

a 2019 66
b 2020 50
c 2018 48

b.txt

a 2019 50
b 2019 40
c 2018 45

Sortie souhaitée :

a 2019 66 a 2019 50 16
b 2020 50 b 2019 40 10
c 2018 48 c 2018 45 3

J'ai essayé :

awk -F, -v OFS=" " '{$7=$3-$6}1' file3.txt

il imprime

a 2019 66 a 2019 50 0
b 2020 50 b 2019 40 0
c 2018 48 c 2018 45 0

Peut-on également vous aider à imprimer sous forme de tableau ?

2voto

oguz ismail Points 34195

Votre commande awk semble correcte, sauf que -F, . Vous devez paste ces fichiers en premier.

$ paste a.txt b.txt | awk '{print $0,$3-$6}' | column -t
a  2019  66  a  2019  50  16
b  2020  50  b  2019  40  10
c  2018  48  c  2018  45  3

2voto

RavinderSingh13 Points 29608

Dans un seul awk pouvez-vous essayer ce qui suit ?

awk 'FNR==NR{a[FNR]=$0;b[FNR]=$NF;next} {print a[FNR],$0,b[FNR]-$NF}' a.txt b.txt | column -t

Le résultat sera le suivant.

a  2019  66  a  2019  50  16
b  2020  50  b  2019  40  10
c  2018  48  c  2018  45  3

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X