объединить два файла бок о бок, добавить разницу между полями и распечатать в табличном формате - PullRequest
2 голосов
/ 28 марта 2020

Предположим, у меня есть два файла, как показано ниже: Мне нужно объединить и найти разницу в новом файле.

a.txt

a 2019 66
b 2020 50
c 2018 48

b.txt

a 2019 50
b 2019 40
c 2018 45

Желаемый вывод:

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

Я пытался:

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

он печатает

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

Также может помочь в печати в табличном формате?

Ответы [ 2 ]

2 голосов
/ 28 марта 2020

В течение одного awk не могли бы вы попробовать следующее.

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

Вывод будет следующим.

a  2019  66  a  2019  50  16
b  2020  50  b  2019  40  10
c  2018  48  c  2018  45  3
2 голосов
/ 28 марта 2020

Ваша команда awk выглядит нормально, кроме -F,. Сначала вы должны paste эти файлы.

$ 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...