2014-10-11 25 views
0

我有一個這樣的文件:閱讀字符串的一部分,指望它下面有多少次出現在bash

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

我需要做的就是指望有多少用戶在GROUP1,在GROUP2,等

但問題是,我不知道這些組的名稱。所以我需要在每次找到一個需求組時創建一個變量,並且每次找到一個已經有變量的組時都會增加+1。而所有這些使用bash。

回答

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的密鑰,因此爲每個組保留單獨的計數。文件處理完成後,會報告每個密鑰的值。

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 
相關問題