我有一个这样的文件:
USERID1,USERNAME2,GROUP1,OTHER
USERID2,USERNAME2,GROUP2,OTHER
USERID3,USERNAME3,GROUP1,OTHER
USERID4,USERNAME4,GROUP3,OTHER
我需要做的是计算GROUP1
,GROUP2
等中的用户数量。
但问题是我不知道这些团体的名字。所以我需要在每次找到需要组时创建一个变量,并在每次找到一个已经有变量的组时增加+1。所有这些都使用了bash。
答案 0 :(得分:1)
假设每行的每个用户都是唯一的,并且每行都严格遵循相同的模式,您可以使用以下内容来计算每个组的条目数:
$ sort -t',' -k3 filename | cut -d',' -f3 | uniq -c
2 GROUP1
1 GROUP2
1 GROUP3
或者,简单地说:
$ cut -d',' -f3 filename | sort | uniq -c
2 GROUP1
1 GROUP2
1 GROUP3
答案 1 :(得分:1)
你可以使用awk做这样的事情:
$ awk -F, '{++a[$3]}END{for(i in a)print a[i], "users in group", i}' file
2 users in group GROUP1
1 users in group GROUP2
1 users in group GROUP3
-F,
将输入字段分隔符设置为逗号。第三个字段用作数组a
的键,因此为每个组保留单独的计数。处理完文件后,将报告每个密钥的值。