Сравните 2 файла с awk и вычтенным значением из одного столбца, если значение другого столбца совпадает в обоих файлах - PullRequest
1 голос
/ 06 апреля 2020

Я пытаюсь сравнить файлы в системе Ubuntu. Оба файла имеют одинаковую структуру двух столбцов, и если значение столбца два совпадает для данной строки, вычтите значения столбца 1 для одной и той же строки.

Я попробовал пару вещей, наиболее близкий мне с этой командой:

awk 'NR==FNR{a[$1]=$1;b[$2]=$2;next} {if ($2 in b) print $1-a[$1]," ",$2}' file1 file 2

Но я предполагаю, что у меня что-то не так, потому что результат, кажется, подтверждает только строки, которые заполняют условие, в котором совпадает второй столбец, но допускает только строки, имеющие одинаковое значение для первого столбец.

Например:

Файл1:

10 A
20 B
30 C
10 D

Файл2:

10 A
20 E
20 F
50 D

Должен вернуть:

0 A
-40 D

Возвращает:

0 A

1 Ответ

1 голос
/ 06 апреля 2020
$ awk 'NR==FNR{a[$2]=$1; next} $2 in a{print a[$2]-$1, $2}' file1 file2
0 A
-40 D
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...