我有一个CSV
文件,第一列和第二列分别为ID
,domain
。
#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