Как поставить сводную таблицу с помощью сценария Shell - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть данные в CSV-файле, как показано ниже ...

Emailid  Storeid      

a@gmail.com 2000

b@gmail.com 2001

c@gmail.com 2000

d@gmail.com 2000

e@gmail.com 2001

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

StoreID    Emailcount

2000           3

2001           2

До сих пор я пытался решить мою проблему

IFS=","
while read f1 f2
do
awk -F, '{ A[$1]+=$2 } END { OFS=","; for (x in A) print x,A[x]; }' > /home/ec2-user/storewiseemials.csv
done < temp4.csv

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

1 Ответ

1 голос
/ 14 апреля 2020

Использование миллера (https://github.com/johnkerl/miller) и начиная с этого (я использовал CSV, потому что я не знаю, используете ли вы в качестве разделителя табуляцию или пробел)

Emailid,Storeid
a@gmail.com,2000
b@gmail.com,2001
c@gmail.com,2000
d@gmail.com,2000
e@gmail.com,2001

и работает

mlr --csv count-distinct -f Storeid -o Emailcount input >output

у вас будет

+---------+------------+
| Storeid | Emailcount |
+---------+------------+
| 2000    | 3          |
| 2001    | 2          |
+---------+------------+
...