我有一个CSV文件,第一列和第二列分别为IDdomain

#Input.txt
1,google.com
1,cnn.com
1,dropbox.com
2,bbc.com
3,twitter.com
3,hello.com
3,example.com
4,twitter.com
.............

现在,我想得到IDs的计数。是的,这可以在Excel/sheets中完成,但该文件包含大约150万行。
Expected Output:
1,3
2,1
3,3
4,1

我试着使用cat Input.txt | grep -c 1,这让我将'1'计数为3,但我想一次对单个ID计数。有谁能帮我实现这个目标吗?

最佳答案

awk -F "," '{ ids[$1]++} END { for(id in ids) { print id, ids[id] } }' input

输入是包含数据的文件。
输出:
1 3
2 1
3 3
4 1

编辑://
如果需要逗号分隔的输出,则需要按如下方式设置输出分隔符:
awk -F "," 'BEGIN { OFS=","} { ids[$1]++} END { for(id in ids) { print id, ids[id] } }' input

输出:
1,3
2,1
3,3
4,1

09-10 01:15
查看更多