如何使用Shell脚本放置透视表
我有一个CSV文件中的数据如下如何使用Shell脚本放置透视表,shell,csv,pivot-table,Shell,Csv,Pivot Table,我有一个CSV文件中的数据如下 Emailid Storeid a@gmail.com 2000 b@gmail.com 2001 c@gmail.com 2000 d@gmail.com 2000 e@gmail.com 2001 我期待下面的输出,基本上找出每个商店有多少个电子邮件ID StoreID Emailcount 2000 3 2001 2 到目前为止,我试图解决我的问题 IFS="," while re
Emailid Storeid
a@gmail.com 2000
b@gmail.com 2001
c@gmail.com 2000
d@gmail.com 2000
e@gmail.com 2001
我期待下面的输出,基本上找出每个商店有多少个电子邮件ID
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
IFS=“,”
读取f1和f2时
做
awk-F,'{A[$1]+=$2}END{OFS=“,”,对于(A中的x)打印x,A[x];}'>/home/ec2 user/storewiseemials.csv
完成
对于上面的shell脚本,我没有得到想要的输出,你们能帮助我吗?使用miller()并从这开始(我使用了CSV,因为我不知道是否使用选项卡或空白作为分隔符)
跑步
mlr --csv count-distinct -f Storeid -o Emailcount input >output
你会有
+---------+------------+
| Storeid | Emailcount |
+---------+------------+
| 2000 | 3 |
| 2001 | 2 |
+---------+------------+
请发布完整的脚本(例如,
done
缺失),并解释f1
和f2
应该包含哪些内容;您设置了这些变量,但从未使用过它们。此外,您的awk
命令读取标准输入,但您没有输入重定向。更新的完整脚本如果您说输出不是您想要的,但您没有显示实际输出。@user1934428,awk将取消while read循环的输入重定向。循环将只迭代一次:f1
将包含文件的第一行(因为文件中没有逗号),然后awk
将消耗文件的其余部分。@SG131712,您的CSV看起来没有逗号,所以请删除IFS
和-F,
部分。
+---------+------------+
| Storeid | Emailcount |
+---------+------------+
| 2000 | 3 |
| 2001 | 2 |
+---------+------------+