Печать уникальных слов, общее количество вхождений и суммы с использованием `awk`

Загрузите Abiword из Ubuntu Software Center или вы можете установить его, введя следующую команду в терминале:

sudo apt-get install abiword

Затем выполните преобразование:

abiword --to=doc example.pdf
1
задан 3 January 2016 в 22:00

1 ответ

Нет, такого индекса нет. Значения массива не учитывают, сколько раз они были увеличены. Наиболее естественным здесь является использование второго массива:

$ awk -F, '{sum[$1]+=$2;seen[$1]++} END{for(x in sum) print x,seen[x],sum[x]}' file
A 2 25
B 1 12
C 3 18

Вы также можете использовать двумерный массив, как показано в ответе Кос, но, как видите, это действительно не упрощает все в любом случае. В качестве альтернативы вы можете использовать некоторые perl magic:

$ perl -F, -lane 'push @{$k{$F[0]}},${$k{$F[0]}}[-1]+$F[1]; 
            END{print "$_ ",$#{$k{$_}}+1," ${$k{$_}}[-1]" for keys(%k)}' file
C 3 18
B 1 12
A 2 25

Нет, это не линейный шум, и да, он использует один массив для печати всего.

5
ответ дан 23 May 2018 в 14:36

Другие вопросы по тегам:

Похожие вопросы: