读取字符串的一部分并计算它在bash中出现的次数

时间:2014-10-11 15:39:38

标签: string bash file count

我有一个这样的文件:

USERID1,USERNAME2,GROUP1,OTHER
USERID2,USERNAME2,GROUP2,OTHER
USERID3,USERNAME3,GROUP1,OTHER
USERID4,USERNAME4,GROUP3,OTHER

我需要做的是计算GROUP1GROUP2等中的用户数量。

但问题是我不知道这些团体的名字。所以我需要在每次找到需要组时创建一个变量,并在每次找到一个已经有变量的组时增加+1。所有这些都使用了bash。

2 个答案:

答案 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的键,因此为每个组保留单独的计数。处理完文件后,将报告每个密钥的值。