умножение столбца на основе сопоставления второго столбца в bash - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть два файла.Первый файл содержит общее количество машин с определенным типом процессора.У него есть две колонки.Вот как это выглядит.

  5 custom
  3 n1-highcpu-32
  3 n1-highcpu-4
 11 n1-highmem-16
 17 n1-standard-1
  9 n1-standard-16
 27 n1-standard-2
 13 n1-standard-4
  5 n1-standard-8

Во втором файле указана стоимость / месяц для каждого типа процессора.Он имеет следующий формат:

n1-standard-1   25
n1-standard-2   49
n1-standard-4   97
n1-standard-8   194
n1-standard-16  388
n1-standard-32  777
n1-standard-64  1553
n1-highmem-2    60
n1-highmem-4    121
n1-highmem-8    242
n1-highmem-16   484
n1-highcpu-4    72
n1-highcpu-32   580
custom      53

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

как только это будет достигнуто, нам нужно добавить отдельные цены, чтобы получить общую стоимость.

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Использование Perl Oneliner

> cat santhu1
  5 custom
  3 n1-highcpu-32
  3 n1-highcpu-4
 11 n1-highmem-16
 17 n1-standard-1
  9 n1-standard-16
 27 n1-standard-2
 13 n1-standard-4
  5 n1-standard-8
> cat santhu2
n1-standard-1   25
n1-standard-2   49
n1-standard-4   97
n1-standard-8   194
n1-standard-16  388
n1-standard-32  777
n1-standard-64  1553
n1-highmem-2    60
n1-highmem-4    121
n1-highmem-8    242
n1-highmem-16   484
n1-highcpu-4    72
n1-highcpu-32   580
custom      53
> perl -lane 'BEGIN {%kv=map split(/\s+/),qx(cat santhu2)} { print $F[0]*$kv{$F[1]}," ",$F[1] }' santhu1
265 custom
1740 n1-highcpu-32
216 n1-highcpu-4
5324 n1-highmem-16
425 n1-standard-1
3492 n1-standard-16
1323 n1-standard-2
1261 n1-standard-4
970 n1-standard-8
>
0 голосов
/ 13 ноября 2018
awk 'FNR==NR{cost[$1]=$2;next}{sum=$1*cost[$2];print $2,sum;total+=sum}END{print total}' file2 file1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...